SlideShare a Scribd company logo
page 1




Integration and Automation
             of
  Manufacturing Systems

      by: Hugh Jack




       © Copyright 1993-2001, Hugh Jack
page 2



PREFACE
 1.    INTEGRATED AND AUTOMATED MANUFACTURING . . . .13
      1.1      INTRODUCTION                                              13
             1.1.1    Why Integrate?                                     13
             1.1.2    Why Automate?                                      14
      1.2      THE BIG PICTURE                                           16
             1.2.1    CAD/CAM?                                           17
             1.2.2    The Architecture of Integration                    17
             1.2.3    General Concepts                                   19
      1.3      PRACTICE PROBLEMS                                         22

 2.    AN INTRODUCTION TO LINUX/UNIX . . . . . . . . . . . . . . . . . . .23
      2.1      OVERVIEW                                                  23
             2.1.1    What is it?                                        23
             2.1.2    A (Brief) History                                  24
             2.1.3    Hardware required and supported                    25
             2.1.4    Applications and uses                              25
             2.1.5    Advantages and Disadvantages                       26
             2.1.6    Getting It                                         26
             2.1.7    Distributions                                      27
             2.1.8    Installing                                         27
      2.2      USING LINUX                                               28
             2.2.1    Some Terminology                                   28
             2.2.2    File and directories                               29
             2.2.3    User accounts and root                             31
             2.2.4    Processes                                          33
      2.3      NETWORKING                                                34
             2.3.1    Security                                           35
      2.4      INTERMEDIATE CONCEPTS                                     35
             2.4.1    Shells                                             35
             2.4.2    X-Windows                                          36
             2.4.3    Configuring                                        36
             2.4.4    Desktop Tools                                      37
      2.5      LABORATORY - A LINUX SERVER                               37
      2.6      TUTORIAL - INSTALLING LINUX                               38
      2.7      TUTORIAL - USING LINUX                                    40
      2.8      REFERENCES                                                41

 3.    AN INTRODUCTION TO C/C++ PROGRAMMING . . . . . . . . .43
      3.1      INTRODUCTION                                              43
      3.2      PROGRAM PARTS                                             44
      3.3      CLASSES AND OVERLOADING                                   50
      3.4      HOW A ‘C’ COMPILER WORKS                                  52
page 3


     3.5      STRUCTURED ‘C’ CODE                                           53
     3.6      COMPILING C PROGRAMS IN LINUX                                 54
            3.6.1    Makefiles                                              55
     3.7      ARCHITECTURE OF ‘C’ PROGRAMS (TOP-DOWN)                       56
            3.7.1    How?                                                   56
            3.7.2    Why?                                                   57
     3.8      CREATING TOP DOWN PROGRAMS                                    58
     3.9      CASE STUDY - THE BEAMCAD PROGRAM                              59
            3.9.1    Objectives:                                            59
            3.9.2    Problem Definition:                                    59
            3.9.3    User Interface:                                        59
                             Screen Layout (also see figure):               59
                             Input:                                         60
                             Output:                                        60
                             Help:                                          60
                             Error Checking:                                61
                             Miscellaneous:                                 61
            3.9.4    Flow Program:                                          62
            3.9.5    Expand Program:                                        62
            3.9.6    Testing and Debugging:                                 64
            3.9.7    Documentation                                          65
                             Users Manual:                                  65
                             Programmers Manual:                            65
            3.9.8    Listing of BeamCAD Program.                            65
     3.10     PRACTICE PROBLEMS                                             66
     3.11     LABORATORY - C PROGRAMMING                                    66

4.    NETWORK COMMUNICATION . . . . . . . . . . . . . . . . . . . . . . . . .68
     4.1      INTRODUCTION                                                  68
     4.2      NETWORKS                                                      69
            4.2.1   Topology                                                69
            4.2.2   OSI Network Model                                       71
            4.2.3   Networking Hardware                                     73
            4.2.4   Control Network Issues                                  75
            4.2.5   Ethernet                                                76
            4.2.6   SLIP and PPP                                            77
     4.3      INTERNET                                                      78
            4.3.1   Computer Addresses                                      79
            4.3.2   Computer Ports                                          80
                           Mail Transfer Protocols                          81
                           FTP - File Transfer Protocol                     81
                           HTTP - Hypertext Transfer Protocol               81
            4.3.3   Security                                                82
                           Firewalls and IP Masquerading                    84
     4.4      FORMATS                                                       85
page 4


                4.4.1   HTML                                                                    85
                4.4.2   URLs                                                                    87
                4.4.3   Encryption                                                              88
                4.4.4   Clients and Servers                                                     88
                4.4.5   Java                                                                    89
                4.4.6   Javascript                                                              89
                4.4.7   CGI                                                                     89
       4.5        NETWORKING IN LINUX                                                           89
                4.5.1   Network Programming in Linux                                            91
       4.6        DESIGN CASES                                                                 102
       4.7        SUMMARY                                                                      103
       4.8        PRACTICE PROBLEMS                                                            103
       4.9        LABORATORY - NETWORKING                                                      104
                4.9.1   Prelab                                                                 105
                4.9.2   Laboratory                                                             107

  5.    DATABASES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108
       5.1        SQL AND RELATIONAL DATABASES                                                 109
       5.2        DATABASE ISSUES                                                              114
       5.3        LABORATORY - SQL FOR DATABASE INTEGRATION                                    114
       5.4        LABORATORY - USING C FOR DATABASE CALLS                                      116

  6.    COMMUNICATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
       6.1        SERIAL COMMUNICATIONS                        119
                6.1.1    RS-232                                122
       6.2        SERIAL COMMUNICATIONS UNDER LINUX            125
       6.3        PARALLEL COMMUNICATIONS                      129
       6.4        LABORATORY - SERIAL INTERFACING AND PROGRAMMING
130
       6.5        LABORATORY - STEPPER MOTOR CONTROLLER                                        130

  7.    PROGRAMMABLE LOGIC CONTROLLERS (PLCs) . . . . . . .134
       7.1        BASIC LADDER LOGIC                                                           136
       7.2        WHAT DOES LADDER LOGIC DO?                                                   138
                7.2.1    Connecting A PLC To A Process                                         139
                7.2.2    PLC Operation                                                         139
       7.3        LADDER LOGIC                                                                 141
                7.3.1    Relay Terminology                                                     144
                7.3.2    Ladder Logic Inputs                                                   146
                7.3.3    Ladder Logic Outputs                                                  147
       7.4        LADDER DIAGRAMS                                                              147
                7.4.1    Ladder Logic Design                                                   148
                7.4.2    A More Complicated Example of Design                                  150
       7.5        TIMERS/COUNTERS/LATCHES                                                      151
page 5


7.6      LATCHES                                        152
7.7      TIMERS                                         153
7.8      COUNTERS                                       157
7.9      DESIGN AND SAFETY                              159
       7.9.1    FLOW CHARTS                             160
7.10     SAFETY                                         160
       7.10.1   Grounding                               161
       7.10.2   Programming/Wiring                      162
       7.10.3   PLC Safety Rules                        162
       7.10.4   Troubleshooting                         163
7.11     DESIGN CASES                                   164
       7.11.1   DEADMAN SWITCH                          164
       7.11.2   CONVEYOR                                165
       7.11.3   ACCEPT/REJECT SORTING                   165
       7.11.4   SHEAR PRESS                             166
7.12     ADDRESSING                                     168
       7.12.1   Data Files                              169
                       Inputs and Outputs               172
                       User Numerical Memory            172
                       Timer Counter Memory             172
                       PLC Status Bits (for PLC-5s)     173
                       User Function Memory             174
7.13     INSTRUCTION TYPES                              174
       7.13.1   Program Control Structures              175
       7.13.2   Branching and Looping                   175
                       Immediate I/O Instructions       179
                       Fault Detection and Interrupts   181
       7.13.3   Basic Data Handling                     182
                       Move Functions                   182
7.14     MATH FUNCTIONS                                 184
7.15     LOGICAL FUNCTIONS                              191
       7.15.1   Comparison of Values                    191
7.16     BINARY FUNCTIONS                               193
7.17     ADVANCED DATA HANDLING                         194
       7.17.1   Multiple Data Value Functions           195
       7.17.2   Block Transfer Functions                196
7.18     COMPLEX FUNCTIONS                              198
       7.18.1   Shift Registers                         198
       7.18.2   Stacks                                  199
       7.18.3   Sequencers                              200
7.19     ASCII FUNCTIONS                                202
7.20     DESIGN TECHNIQUES                              203
       7.20.1   State Diagrams                          203
7.21     DESIGN CASES                                   206
       7.21.1   If-Then                                 207
page 6


             7.21.2   For-Next                                                    207
             7.21.3   Conveyor                                                    208
     7.22      IMPLEMENTATION                                                     209
     7.23      PLC WIRING                                                         209
             7.23.1   SWITCHED INPUTS AND OUTPUTS                                 210
                              Input Modules                                       211
                              Actuators                                           212
                              Output Modules                                      213
     7.24      THE PLC ENVIRONMENT                                                216
             7.24.1   Electrical Wiring Diagrams                                  216
             7.24.2   Wiring                                                      219
             7.24.3   Shielding and Grounding                                     221
             7.24.4   PLC Environment                                             223
             7.24.5   SPECIAL I/O MODULES                                         224
     7.25      PRACTICE PROBLEMS                                                  227
     7.26      REFERENCES                                                         237
     7.27      LABORATORY - SERIAL INTERFACING TO A PLC                           238

8.    PLCS AND NETWORKING . . . . . . . . . . . . . . . . . . . . . . . . . . . .240
     8.1       OPEN NETWORK TYPES                                                 240
             8.1.1   Devicenet                                                    240
             8.1.2   CANbus                                                       245
             8.1.3   Controlnet                                                   246
             8.1.4   Profibus                                                     247
     8.2       PROPRIETARY NETWORKS                                               248
                            Data Highway                                          248
     8.3       PRACTICE PROBLEMS                                                  252
     8.4       LABORATORY - DEVICENET                                             258
     8.5       TUTORIAL - SOFTPLC AND DEVICENET                                   258

9.    INDUSTRIAL ROBOTICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
     9.1       INTRODUCTION                                                       262
             9.1.1   Basic Terms                                                  262
             9.1.2   Positioning Concepts                                         266
                            Accuracy and Repeatability                            266
                            Control Resolution                                    270
                            Payload                                               271
     9.2       ROBOT TYPES                                                        276
             9.2.1   Basic Robotic Systems                                        276
             9.2.2   Types of Robots                                              277
                            Robotic Arms                                          277
                            Autonomous/Mobile Robots                              280
                              Automatic Guided Vehicles (AGVs)                    280
     9.3       MECHANISMS                                                         281
     9.4       ACTUATORS                                                          282
page 7


      9.5       A COMMERCIAL ROBOT                                                  283
              9.5.1   Mitsubishi RV-M1 Manipulator                                  284
              9.5.2   Movemaster Programs                                           286
                               Language Examples                                    286
              9.5.3   Command Summary                                               290
      9.6       PRACTICE PROBLEMS                                                   291
      9.7       LABORATORY - MITSUBISHI RV-M1 ROBOT                                 296
      9.8       TUTORIAL - MITSUBISHI RV-M1                                         296

10.    OTHER INDUSTRIAL ROBOTS . . . . . . . . . . . . . . . . . . . . . . . .299
      10.1     SEIKO RT 3000 MANIPULATOR                                            299
              10.1.1   DARL Programs                                                300
                             Language Examples                                      301
                             Commands Summary                                       305
      10.2      IBM 7535 MANIPULATOR                                                308
              10.2.1   AML Programs                                                 312
      10.3      ASEA IRB-1000                                                       317
      10.4     UNIMATION PUMA (360, 550, 560 SERIES)                                319
      10.5      PRACTICE PROBLEMS                                                   320
      10.6     LABORATORY - SEIKO RT-3000 ROBOT                                     330
      10.7     TUTORIAL - SEIKO RT-3000 ROBOT                                       331
      10.8     LABORATORY - ASEA IRB-1000 ROBOT                                     332
      10.9     TUTORIAL - ASEA IRB-1000 ROBOT                                       332

11.    ROBOT APPLICATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
              11.0.1  Overview                                                      333
              11.0.2  Spray Painting and Finishing                                  335
              11.0.3  Welding                                                       335
              11.0.4  Assembly                                                      336
              11.0.5  Belt Based Material Transfer                                  336
      11.1     END OF ARM TOOLING (EOAT)                                            337
              11.1.1  EOAT Design                                                   337
              11.1.2  Gripper Mechanisms                                            340
                             Vacuum grippers                                        342
              11.1.3  Magnetic Grippers                                             344
                             Adhesive Grippers                                      345
              11.1.4  Expanding Grippers                                            345
              11.1.5  Other Types Of Grippers                                       346
      11.2     ADVANCED TOPICS                                                      347
              11.2.1  Simulation/Off-line Programming                               347
      11.3     INTERFACING                                                          348
      11.4      PRACTICE PROBLEMS                                                   348
      11.5     LABORATORY - ROBOT INTERFACING                                       350
      11.6     LABORATORY - ROBOT WORKCELL INTEGRATION                              351
page 8


12.    SPATIAL KINEMATICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352
      12.1       BASICS                                                                    352
               12.1.1   Degrees of Freedom                                                 353
      12.2       HOMOGENEOUS MATRICES                                                      354
               12.2.1   Denavit-Hartenberg Transformation (D-H)                            359
               12.2.2   Orientation                                                        361
               12.2.3   Inverse Kinematics                                                 363
               12.2.4   The Jacobian                                                       364
      12.3      SPATIAL DYNAMICS                                                           366
               12.3.1   Moments of Inertia About Arbitrary Axes                            366
               12.3.2   Euler’s Equations of Motion                                        369
               12.3.3   Impulses and Momentum                                              370
                               Linear Momentum                                             370
                               Angular Momentum                                            371
      12.4      DYNAMICS FOR KINEMATICS CHAINS                                             372
               12.4.1   Euler-Lagrange                                                     372
               12.4.2   Newton-Euler                                                       375
      12.5       REFERENCES                                                                375
      12.6       PRACTICE PROBLEMS                                                         376

13.    MOTION CONTROL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .390
      13.1       KINEMATICS                                                    390
               13.1.1  Basic Terms                                             390
               13.1.2  Kinematics                                              391
                              Geometry Methods for Forward Kinematics          392
                              Geometry Methods for Inverse Kinematics          393
               13.1.3  Modeling the Robot                                      394
      13.2      PATH PLANNING                                                  395
               13.2.1  Slew Motion                                             395
                              Joint Interpolated Motion                        397
                              Straight-line motion                             397
               13.2.2  Computer Control of Robot Paths (Incremental Interpolation)400
      13.3       PRACTICE PROBLEMS                                             403
      13.4      LABORATORY - AXIS AND MOTION CONTROL                           408

14.    CNC MACHINES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .409
      14.1      MACHINE AXES                                                               409
      14.2      NUMERICAL CONTROL (NC)                                                     409
               14.2.1 NC Tapes                                                             410
               14.2.2 Computer Numerical Control (CNC)                                     411
               14.2.3 Direct/Distributed Numerical Control (DNC)                           412
      14.3      EXAMPLES OF EQUIPMENT                                                      414
               14.3.1 EMCO PC Turn 50                                                      414
               14.3.2 Light Machines Corp. proLIGHT Mill                                   415
page 9


          14.4      PRACTICE PROBLEMS                                417
          14.5      TUTORIAL - EMCO MAIER PCTURN 50 LATHE (OLD)      417
          14.6      TUTORIAL - PC TURN 50 LATHE DOCUMENTATION: (By Jonathan
DeBoer)   418
                   14.6.1      LABORATORY - CNC MACHINING                                    424

   15.     CNC PROGRAMMING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .426
          15.1      G-CODES                                                                  428
          15.2      APT                                                                      436
          15.3      PROPRIETARY NC CODES                                                     440
          15.4      GRAPHICAL PART PROGRAMMING                                               441
          15.5      NC CUTTER PATHS                                                          442
          15.6      NC CONTROLLERS                                                           444
          15.7      PRACTICE PROBLEMS                                                        445
          15.8      LABORATORY - CNC INTEGRATION                                             446

   16.     DATA AQUISITION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .448
          16.1      INTRODUCTION                                                             448
          16.2      ANALOG INPUTS                                                            449
          16.3      ANALOG OUTPUTS                                                           455
          16.4      REAL-TIME PROCESSING                                                     458
          16.5      DISCRETE IO                                                              459
          16.6      COUNTERS AND TIMERS                                                      459
          16.7      ACCESSING DAQ CARDS FROM LINUX                                           459
          16.8      SUMMARY                                                                  476
          16.9      PRACTICE PROBLEMS                                                        476
          16.10     LABORATORY - INTERFACING TO A DAQ CARD                                   478

   17.     VISIONS SYSTEMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479
          17.1      OVERVIEW                                                                 479
          17.2       APPLICATIONS                                                            480
          17.3      LIGHTING AND SCENE                                                       481
          17.4       CAMERAS                                                                 482
          17.5      FRAME GRABBER                                                            486
          17.6       IMAGE PREPROCESSING                                                     486
          17.7      FILTERING                                                                487
                   17.7.1  Thresholding                                                      487
          17.8      EDGE DETECTION                                                           487
          17.9      SEGMENTATION                                                             488
                   17.9.1  Segment Mass Properties                                           490
          17.10     RECOGNITION                                                              491
                   17.10.1 Form Fitting                                                      491
                   17.10.2 Decision Trees                                                    492
page 10


      17.11       PRACTICE PROBLEMS                                                              494
      17.12       TUTORIAL - LABVIEW BASED IMAQ VISION                                           499
      17.13       LABORATORY - VISION SYSTEMS FOR INSPECTION                                     500

18.    INTEGRATION ISSUES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .502
      18.1        CORPORATE STRUCTURES                                                           502
      18.2        CORPORATE COMMUNICATIONS                                                       502
      18.3        COMPUTER CONTROLLED BATCH PROCESSES                                            514
      18.4        PRACTICE PROBLEMS                                                              516
      18.5        LABORATORY - WORKCELL INTEGRATION                                              516

19.    MATERIAL HANDLING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .518
      19.1      INTRODUCTION                                                                     518
      19.2       VIBRATORY FEEDERS                                                               520
      19.3      PRACTICE QUESTIONS                                                               521
      19.4      LABORATORY - MATERIAL HANDLING SYSTEM                                            521
               19.4.1  System Assembly and Simple Controls                                       521
      19.5      AN EXAMPLE OF AN FMS CELL                                                        523
               19.5.1  Overview                                                                  523
               19.5.2  Workcell Specifications                                                   525
               19.5.3  Operation of The Cell                                                     526
      19.6      THE NEED FOR CONCURRENT PROCESSING                                               534
      19.7       PRACTICE PROBLEMS                                                               536

20.    PETRI NETS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .537
      20.1      INTRODUCTION                                                                     537
      20.2      A BRIEF OUTLINE OF PETRI NET THEORY                                              537
      20.3      MORE REVIEW                                                                      540
      20.4       USING THE SUBROUTINES                                                           548
               20.4.1   Basic Petri Net Simulation                                               548
               20.4.2   Transitions With Inhibiting Inputs                                       550
               20.4.3   An Exclusive OR Transition:                                              552
               20.4.4   Colored Tokens                                                           555
               20.4.5   RELATIONAL NETS                                                          557
      20.5       C++ SOFTWARE                                                                    558
      20.6       IMPLEMENTATION FOR A PLC                                                        559
      20.7       PRACTICE PROBLEMS                                                               564
      20.8       REFERENCES                                                                      565

21.    PRODUCTION PLANNING AND CONTROL . . . . . . . . . . . . .566
      21.1      OVERVIEW                                                                         566
      21.2      SCHEDULING                                                                       567
               21.2.1 Material Requirements Planning (MRP)                                       567
               21.2.2 Capacity Planning                                                          569
page 11


      21.3       SHOP FLOOR CONTROL                                                          570
               21.3.1   Shop Floor Scheduling - Priority Scheduling                          570
               21.3.2   Shop Floor Monitoring                                                571

22.    SIMULATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .572
      22.1       MODEL BUILDING                                                              573
      22.2       ANALYSIS                                                                    575
      22.3       DESIGN OF EXPERIMENTS                                                       576
      22.4       RUNNING THE SIMULATION                                                      579
      22.5       DECISION MAKING STRATEGY                                                    579

23.    PLANNING AND ANALYSIS . . . . . . . . . . . . . . . . . . . . . . . . . .581
      23.1       FACTORS TO CONSIDER                                                         581
      23.2       PROJECT COST ACCOUNTING                                                     583

24.    REFERENCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .587
25.    APPENDIX A - PROJECTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . .588
      25.1       TOPIC SELECTION                                                             588
               25.1.1   Previous Project Topics                                              588
      25.2       CURRENT PROJECT DESCRIPTIONS                                                590

26.    APPENDIX B - COMMON REFERENCES . . . . . . . . . . . . . . . .591
      26.1       JIC ELECTRICAL SYMBOLS                                                      591
      26.2       NEMA ENCLOSURES                                                             592
page 12



PREFACE

    I have been involved in teaching laboratory based integrated manufacturing courses since
1993. Over that time I have used many textbooks, but I have always been unsatisfied with their
technical depth. To offset this I had to supply supplemental materials. These supplemental materi-
als have evolved into this book.


    This book is designed to focus on topics relevant to the modern manufacturer, while avoiding
topics that are more research oriented. This allows the chapters to focus on the applicable theory
for the integrated systems, and then discuss implementation.


    Many of the chapters of this book use the Linux operating system. Some might argue that
Microsoft products are more pervasive, and so should be emphasized, but I disagree with this. It is
much easier to implement a complex system in Linux, and once implemented the system is more
reliable, secure and easier to maintain. In addition the Microsoft operating system is designed
with a model that focuses on entertainment and office use and is incompatible with the needs of
manufacturing professionals. Most notably there is a constant pressure to upgrade every 2-3 years
adding a burden.


    The reader is expected to have some knowledge of C, or C++ programming, although a
review chapter is provided. When possible a programming example is supplied to allow the reader
to develop their own programs for integration and automation.
page 13



1. INTEGRATED AND AUTOMATED MANUFACTUR-
ING

    Integrated manufacturing uses computers to connect physically separated processes. When
integrated, the processes can share information and initiate actions. This allows decisions to be
made faster and with fewer errors. Automation allows manufacturing processes to be run auto-
matically, without requiring intervention.


    This chapter will discuss how these systems fit into manufacturing, and what role they play.



1.1 INTRODUCTION

    An integrated system requires that there be two or more computers connected to pass infor-
mation. A simple example is a robot controller and a programmable logic controller working
together in a single machine. A complex example is an entire manufacturing plant with hundreds
of workstations connected to a central database. The database is used to distribute work instruc-
tions, job routing data and to store quality control test results. In all cases the major issue is con-
necting devices for the purposes of transmitting data.


    • Automated equipment and systems don’t require human effort or direction. Although this
does not require a computer based solution


    • Automated systems benefit from some level of integration




1.1.1 Why Integrate?

    There is a tendency to look at computer based solutions as inherently superior. This is an
assumption that an engineer cannot afford to entertain. Some of the factors that justify an inte-
page 14


grated system are listed below.
       • a large organization where interdepartmental communication is a problem
       • the need to monitor processes

    • Things to Avoid when making a decision for integration and automation,
       - ignore impact on upstream and downstream operations
       - allow the system to become the driving force in strategy
       - believe the vendor will solve the problem
       - base decisions solely on financials
       - ignore employee input to the process
       - try to implement all at once (if possible)

    • Justification of integration and automation,
       - consider “BIG” picture
       - determine key problems that must be solved
       - highlight areas that will be impacted in enterprise
       - determine kind of flexibility needed
       - determine what kind of integration to use
       - look at FMS impacts
       - consider implementation cost based on above

    • Factors to consider in integration decision,
       - volume of product
       - previous experience of company with FMS
       - product mix
       - scheduling / production mixes
       - extent of information system usage in organization (eg. MRP)
       - use of CAD/CAM at the front end.
       - availability of process planning and process data
       * Process planning is only part of CIM, and cannot stand alone.




1.1.2 Why Automate?

    • Why ? - In many cases there are valid reasons for assisting humans
       - tedious work -- consistency required
       - dangerous
       - tasks are beyond normal human abilities (e.g., weight, time, size, etc)
       - economics
page 15




• When?


                               hard automation
      unit cost


                  robotic assembly
                                                                   manual assembly




                  manual




                                     flexible

                                                                   fixed
                                     constant production volumes

Figure 1.1 - Automation Tradeoffs


• Advantages of Automated Manufacturing,
   - improved work flow
   - reduced handling
   - simplification of production
   - reduced lead time
   - increased moral in workers (after a wise implementation)
   - more responsive to quality, and other problems
   - etc.

• Various measures of flexibility,
   - Able to deal with slightly, or greatly mixed parts.
   - Variations allowed in parts mix
   - Routing flexibility to alternate machines
   - Volume flexibility
   - Design change flexibility
page 16




1.2 THE BIG PICTURE

  How Computers Can Be Used in an Automated Manufacturing System




          CAD               CAPP               PPC                CAM




          CAE




  • Some Acronyms


    CAD - Computer Aided/Automated Design - Design geometry, dimensions, etc.

    CAE - Analysis of the design done in the CAD system for stresses, flows, etc. (often
          described as part of CAD)

    CAM - Computer Aided/Automated Manufacturing - is the use of computers to select,
          setup, schedule, and drive manufacturing processes.

    CAPP - Computer Aided Process Planning - is used for converting a design to a set of pro-
          cesses for production, machine selection, tool selection, etc.

    PPC - Production Planning and Control - also known as scheduling. Up to this stage each
           process is dealt with separately. Here they are mixed with other products, as
           required by customer demand, and subject to limited availability of manufacturing
           resources.

    Factory Control - On a minute by minute basis this will split up schedules into their
           required parts, and deal with mixed processes on a factory wide basis. (This is very
           factory specific, and is often software written for particular facilities) An example
           system would track car color and options on an assembly line.

    Workcell Control - At this system level computers deal with coordination of a number of
          machines. The most common example is a PLC that runs material handling sys-
page 17


               tems, as well as interlocks with NC machines.

       Machine Control - Low level process control that deals with turning motors on/off, regu-
             lating speeds, etc., to perform a single process. This is often done by the manufac-
             turers of industrial machinery.




1.2.1 CAD/CAM?

    • A common part of an integrated system


    • In CAD we design product geometries, do analysis (also called CAE), and produce final
documentation.


    • In CAM, parts are planned for manufacturing (eg. generating NC code), and then manufac-
tured with the aid of computers.


    • CAD/CAM tends to provide solutions to existing problems. For example, analysis of a part
under stress is much easier to do with FEM, than by equations, or by building prototypes.


    • CAD/CAM systems are easy to mix with humans.


    • This technology is proven, and has been a success for many companies.


    • There is no ‘ONE WAY’ of describing CAD/CAM. It is a collection of technologies which
can be run independently, or connected. If connected they are commonly referred to as CIM




1.2.2 The Architecture of Integration

    • integrated manufacturing systems are built with generic components such as,
page 18


   - Computing Hardware
   - Application Software
   - Database Software
   - Network Hardware
   - Automated Machinery

• Typical applications found in an integrated environment include,
   - Customer Order Entry
   - Computer Aided Design (CAD) / Computer Aided Engineering (CAE)
   - Computer Aided Process Planning (CAPP)
   - Materials (e.g., MRP-II)
   - Production Planning and Control (Scheduling)
   - Shop Floor Control (e.g., FMS)

• The automated machines used include,
   - NC machines
   - PLCs
   - Robotics
   - Material Handling / Transport
   - Machines
   - Manual / Automated Assembly Cells
   - Computers
   - Controllers
   - Software
   - Networks
   - Interfacing
   - Monitoring equipment

• On the shop floor computers provide essential support in a workcell for,
   - CNC - Computer Numerical Control
   - DNC - Direct Numerical Control of all the machine tools in the FMS. Both CNC and
          DNC functions can be incorporated into a single FMS.
   - Computer control of the materials handling system
   - Monitoring - collection of production related data such as piece counts, tool changes, and
          machine utilization
   - Supervisory control - functions related to production control, traffic control, tool control,
          and so on.
page 19


1.2.3 General Concepts

    • Manufacturing requires computers for two functions,
        - Information Processing - This is characterized by programs that can operate in a batch
                mode.
        - Control - These programs must analyze sensory information, and control devices while
                observing time constraints.

    • An integrated system is made up of Interfaced and Networked Computers. The general
structure is hierarchical,


    Corporate                                                             Mainframes

    Plant

    Plant Floor

    Process Control                                                       Micro-computers

    • The plant computers tend to drive the orders in the factory.


    • The plant floor computers focus on departmental control. In particular,
        - synchronization of processes.
        - downloading data, programs, etc., for process control.
        - analysis of results (e.g., inspection results).

    • Process control computers are local to machines to control the specifics of the individual
processes. Some of their attributes are,
        - program storage and execution (e.g., NC Code),
        - sensor analysis,
        - actuator control,
        - process modeling,
        - observe time constraints (real time control).

    • The diagram shows how the characteristics of the computers must change as different func-
tions are handled.
page 20




                                                                       More
                                                                       Complex
                                                                       Computations




                                                         Faster
                                                         Response
                                                         Times


    • To perform information processing and control functions, each computer requires connec-
tions,
         - Stand alone - No connections to other computers, often requires a user interface.
         - Interfaced - Uses a single connection between two computers. This is characterized by
                 serial interfaces such as RS-232 and RS-422.
         - Networked - A single connection allows connections to more than one other computer.
                 May also have shared files and databases.

    • Types of common interfaces,
         - RS-232 (and other RS standards) are usually run at speeds of 2400 to 9600 baud, but they
                are very dependable.

    • Types of Common Networks,
         - IEEE-488 connects a small number of computers (up to 32) at speeds from .5 Mbits/sec
                to 8 Mbits/sec. The devices must all be with a few meters of one another.
         - Ethernet - connects a large number of computers (up to 1024) at speeds of up to 10
                Mbits/sec., covering distances of km. These networks are LAN’s, but bridges may
                be used to connect them to other LAN’s to make aWAN.

    • Types of Modern Computers,
         - Mainframes - Used for a high throughput of data (from disks and programs). These are
                ideal for large business applications with multiple users, running many programs
                at once.
         - Workstations (replacing Mini Computers) - have multiprocessing abilities of Mainframe,
                but are not suited to a limited number of users.
         - Micro-processors, small computers with simple operating systems (like PC’s with
                msdos) well suited to control. Most computerized machines use a micro-processor
Planning       Scheduling                                 Control


                                                                             Control
                                                                                                                                                         architecture.




 Input                   Simulation                                          Logic
                                                                                        To
 to      Planning                                      Next action                     equipment
         Algorithm
 cell
                                               Status
                                               Database
                       Expert
                       Scheduling                                                       From
                                                                                                                                                                         page 21




                       System                                                          equipment
Output       Process
                                                                                                   • A Graphical Depiction of a Workstation Controller




from         Plans
cell

                       Deadlock                               Error
                       Detection &                           Detection &
                       Avoidance                             Recovery




                          Detail of Workstation Controller
page 22




1.3 PRACTICE PROBLEMS

  1. What is concurrent (parallel) processing and why is it important for workcell control?
  (ans. to allow equipment to do other tasks while one machine is processing)


  2. What is meant by the term “Device Driver”?
  (ans. a piece of hardware that allows a connections to a specific piece of hardware)


  3. CAD and CAM are,
     a) Integrated production technologies.
     b) The best approaches to manufacturing.
     c) Part of CIM.
     d) None of the above.
  (ans. c)


  4. FMS systems are,
     a) faster than robots.
     b) a good replacement for manual labor.
     c) both a) and b)
     d) none of the above.
  (ans. d)
page 23



2. AN INTRODUCTION TO LINUX/UNIX


2.1 OVERVIEW

        Linux is a free UNIX clone that was developed by volunteers around the world. Although
Linux is almost a decade old, it went largely unnoticed by the general public until a couple of
years ago. Since then it has become very popular with individual users, universities and large cor-
porations. For example, IBM has made it a major part of their business strategy for server hard-
ware. Many software companies already offer Linux versions of their software, including
products such as Oracle, Labview and MSC Nastran. Other companies have developed embedded
applications using Linux. Currently Linux can be found in devices as small as a wristwatch [1]
and as large as a Beowulf class supercomputer [2]. The popularity of Linux is based on three fac-
tors:
           - costs are lower because the software is free and it runs well on less expensive hardware.
           - it has more software, capabilities, and features than other operating systems.
           - the source code is open, so users can customize the operating system to meet their needs.

This chapter will present the Linux operating system in general, and its current status in comput-
ing.



2.1.1 What is it?

        Linux is an open source operating system. It is open because users and developers can use the
source code any way they want. This allows anyone to customize it, improve it and add desired
features. As a result Linux is dynamic, evolving to respond to the desires and needs of the users.
In contrast, closed operating systems are developed by a single corporation using static snapshots
of market models and profit driven constraints.


        Linux is free. This allows companies to use it without adding cost to products. It also allows
people to trade it freely. And, with the profit motive gone, developers have a heightened sense of
page 24


community interest. The Linux community has developed a tremendous spirit because of these
core development concepts.




2.1.2 A (Brief) History

    Linux has existed since the early 1990s [3], but it grew out of previous developments in com-
puting [4]. It was originally developed to be a Unix clone that would run on low cost computer
hardware. Unix was developed in the 1970s. Through the 1970s and early 1980s it was used on
large computers in companies and universities. During this time many refinements and enhance-
ments were made. By the mid 1980s Unix was being used on many lower priced computers. By
the end of the 1980s most universities were making use of Unix computers in computer science
and engineering programs. This created a wealth of graduates who understood what they could
expect from a mature operating system. But, it also created a demand to be able to do high level
work at home on low priced machines.


    Early in the 1990s Linux started as a project to create a Unix clone that would run on a per-
sonal computer. This project gained momentum quickly and by the mid 1990s it was ready for
users. The first groups to adopt it were hobbyists, academics and internet services. At this time the
general public was generally unaware of Linux but by the end of the 1990s it was beginning to
enter the public sphere. By 2000 it had entered the popular press, and it was cited as a major threat
to at least one existing operating system vendor. Now, it is available off-the-shelf in software and
book stores.


       1970s- Unix developed at AT&T labs by Ken Thompson and Dennis Ritchie
       1980s- Unix became popular on high end computers
       - The Unix platform is refined and matures
       - Some versions of Unix were available for PCs - most notably QNX
       1990s- Linus Torvalds begins working on a free Unix clone for PCs in 1991
       - Others join the project it gets the name ‘Linux’
       - By 1993 Linux begins to enter the mainstream of computer users
       - Linux machines constitute a large number of servers on the Internet
       - Many large companies begin to support Linux - e.g. Dell, IBM
page 25


         2000s- Home and office users are supported with free office software
         - Linux is available in consumer products, such as Tivo recorders




2.1.3 Hardware required and supported

       Modern computers have ample power for most computer applications. This is more true for
Linux. At present there are versions of linux that will run on any platform from an IBM main-
frame computer to a Palm Pilot. The smallest Linux installations can fit on a single floppy disk,
and run on a diskless computer with a few MB of memory. On the other end of the spectrum,
Linux will run on most high end computer systems. An average user would expect reasonable per-
formance on a computer with an old Pentium 100 processor, 64MB of memory, and 2 GB of disk
space. On newer computers the performance of the operating system is extremely fast. The list
below gives some idea of the capabilities, but complete lists of supported hardware are available
[5].


         CPU- Intel family and clones, down to ‘386 processors
         - Macintosh (Motorola)
         - Others: Alpha, MIPS, Sparc, etc.
         Memory- 16MB is a good minimum, 64MB is recommended
         Disk- 200MB is a minimum, 2GB is recommended
         Screen- Any size
         Network- Any type
         Others- Most PC hardware is supported - or will be soon




2.1.4 Applications and uses

       By itself an operating system is somewhat useless, software applications are added to give
desired functionality. Some of the common applications that a computer might be used for are
listed below. Linux will support all of these applications, and more, with the right software [6].


         Office - word processing, spreadsheets, etc.
page 26


       Web and Internet Servers - host web sites
       Server - databases and other institutional functions
       Embedded - inside devices such as Tivo TV recorders
       PDAs - an operating system for small handheld computers
       Development - software authoring




2.1.5 Advantages and Disadvantages

    A partial list of advantages and disadvantages is given below. The cost, stability and open
nature of the system have been winning over a large number of corporate adopters. But, adoption
has been slowed by people who don’t understand the nature of free software or have a perception
that it is difficult to use. In some cases there are also some software packages that are not avail-
able for Linux, and won’t run under simulators [22] - the most notable of these applications are
first person shooting games.


       Advantages:
             Free - paying for it is optional
             Open - the source code is available and can be changed
             Goodwill - developers and users are very helpful
             Faster - it doesn’t require newer hardware, extra memory and larger disks
             Stable - it is very uncommon for Linux to crash (no blue screens)
             Flexibility - more capabilities and features
             Complete - all of the software is available and open - no ‘extra’ software to buy
             Security - very secure - unauthorized users can’t change machine settings
             Simplicity - point and click configuration
       Disadvantages:
             Compatibility - some programs will not run under simulators
             Misunderstanding - some people believe ‘you get what you pay for’




2.1.6 Getting It

    There are multiple distributions of Linux. While these all contain the Linux Kernel, they
often include different pieces of software, and installation processes vary somewhat. The basic
page 27


licensing agreement that Linux is distributed under requires that even if it is sold for a fee, it must
be made available at no cost and it may also be copied freely by the user. As a result you can often
download these distributions over the network at no cost [12][13]. The total download size can be
up to 600MB. An alternative is to buy a distribution (the typical cost is $30) which includes a
floppy disk, a CD-ROM and a brief manual. These can be found at any store that sells software.
Sometimes the distribution will have a higher cost for ‘deluxe’ versions - this more costly pack-
age often includes telephone support.




2.1.7 Distributions

    In total there are hundreds of Linux distributions. Many of these are specialized for features
such as embedded systems, foreign languages, internet servers and security. The list below is for
user-friendly installation and usage. The most successful of these distributions is Redhat. Some
distributions, such as Mandrake, are based on the Redhat distribution, but with enhancements.


       Redhat - the original consumer friendly Linux [7]
       Mandrake - a Redhat derivative [8]
       Caldera - another well established distribution [9]
       Debian - a release that focuses on stability [10]
       SuSe - yet another distribution [11]




2.1.8 Installing

    Each distribution of Linux will have a slightly different installation procedure, but they all
follow the basic steps below. The total time to install Linux will between one to two hours. Users
with a high level of knowledge can opt to do advanced setup, and new users will have the option
of letting the system suggest installation options.


       1. Turn off the computer.
page 28


       2. Insert a provided floppy disk (you can also boot from a CD on newer computers)
       3. Turn the computer on, it will start to load Linux
       4. You will be asked some questions about the type of installation you want
       5. Linux will format the disks, and start to load the software
       6. While it is loading you will be able to set times, dates and passwords
       7. You be asked to set up the graphics for the window manager
       8. When the installation is done the computer will reboot, and you will be ready to use it




2.2 USING LINUX

    This section is a brief overview of the Linux operating system. The intention is to overview
the basic components in the operating system. An administrator can manage the operating system
using the graphical user interface (GUI), or using typed commands. New users often prefer to use
the system using the GUI. Advanced users often prefer to use commands to administer the sys-
tem, they are often faster and more reliable.


    Commands can be typed in a command window. Typed commands are case sensitive, and
most commands are lower case. Spaces are used to delimit (separate) commands and arguments,
so they should also be used when typing. Linux allows users to perform some very sophisticated
operations with a single command. But, while learning this should not pose a problem, unless
logged in as root. While learning the user is encouraged to use a normal user account so that acci-
dental damage to the system can be minimized.




2.2.1 Some Terminology

    The terms below are some of the keywords that are unique to Linux. These will appear during
the installation, or during common usage of the system.


       booting When a Linux computer starts it checks the hardware, and then starts
       software. The process of booting takes less than a minute in most cases
page 29


       kernelThe core of the operating system that talks to all hardware and programs
       shellA windows that allows you to type commands
       permissionsControl who can change what
       GNU(Gnu’s Not Unix) A group that develops free software comprising a large
       portion of Linux
       rootThis is the user name of the system administrator




2.2.2 File and directories

    The directory and file structure of Linux is hierarchical, much like other popular operating
systems. The main directory for the system is call root and is indicated with a single slash ‘/’.
There are a number of subdirectories listed below that are used for storing system files, user files,
temporary files and configuration files. A sample of the standard directories are shown below, and
can be viewed with a file manager, or with keyboard commands. If other disks are used, such as a
CDROM, or floppy disk, they are mounted under the root directory. (i.e., there are no ‘C’, ‘A’ or
other drives, they are all under ‘/’.) (Note: the UNIX slash is ‘/’, not the ‘’ used on DOS.)


                                         /

                    home              bin                   lib           ....etc....


             jackh            davisa


                           bin               public_html

    A list of some of the more important directories follows with a brief description of each.
Most users have their home directories under the ’/home’ directory. Most of the other directories
are of interest to the system administrator.


       /etc - device and software configuration files are kept here
       /tmp - temporary files are created here
page 30


       /home - user directories are kept here
       /var - this is a place for log files, mail storage, etc.
       /usr - software is installed under this directory
       /dev - where devices are kept - they are accessed like files
       /bin - some of the programs are kept in this directory

    Every file and directory has a unique name which can be used to refer to it. Sometimes it is
useful to be able to refer to groups of files without typing the name of each one. Wildcard allow
file and directory names to be matched to patterns. The list below shows some of the wildcards
commonly used.


       *Any string
       ?Any Character
       ..The directory above
       .this directory
       ~your home directory

    Some examples of filenames with wildcards, and files they would match are shown below.


       Ad*Advertise Advent.not Ad
       Ad?Ad. Ade
       Ad?.?Ade.d
       ??e.*ape.exe eee.thisisanother
       ../hi.*hi.there (in directory above)
       ~/*.therehi.there (in your home directory)

    Filenames can contain numbers, letters and a few other symbols, but care should be used to
avoid symbols that also have meaning to Linux, such as the asterisk ’*’. File names that begin
with a period ’.’ are system files that are normally hidden. For example, most users will have a file
in their home directories called ’.profile’ or ’.login’. These are used when a user logs.


    Some of the standard Linux commands for files and directories are listed below. Most of the
file and directory names can be used with wildcards.


       cd newdir change directory to ’newdir’
       pwd       show present working directory
       ls         list the files in the current directory
page 31


       ls -la      list the files in the current directory in full form
       ls files    list files that match the ’files’
       rm files removes the named ’files’
       rm *        removes all the files in the current directory (use with care)
       rm /*       removes all of the files in the computer (only do this if you are insane)
       mkdir namemake a directory ’name’
       rmdir nameremove a directory ’name’
       mv from tomove a file/directory ’from’ an old name ’to’ a new name
       cp from to copy a file ’from’ the an old name ’to’ a new name
       more file type out the contents of ’file’ on page at a time
       cat file     type out the contents of ’file’
       vi file      a text editor for ’file’ (some commands given below)
                   ‘dd’ - cut a line (command mode)
                   ’p’ - paste a line below the current line (command mode)
                   ‘x’ - delete a character (command mode)
                   ‘r’ - replace a character (command mode)
                   ‘R’ - replace a string (command mode -> edit mode)
                   ‘a’ - append to a line (command mode -> edit mode)
                   ‘i’ - insert a string (command mode -> edit mode)
                   ‘:w’ - write to a file (command mode)
                   ‘:q’ - quit from a file (command mode)
                   ESC - move from edit to command mode
                   cursor key - move the cursor
       du          check the disk usage of the current directory
       du ~        check the disk usage of your home directory
       df          check total disk space available
       sort        this will sort the contents of a file
       ln -s to from create a symbolic link ’from’ a name ’to’ a file
       grep thing filessearch ’files’ for the string ’thing’
       compress file compress a ’file’
       uncompress file uncompress a ’file’




2.2.3 User accounts and root

    Linux follows very strict conventions for file and directory permissions. These require that
each file and directory be given specific permissions for public reading, writing and execution.
Each user is given their own account with a password, so that access to the system is controlled.
Only the root user can access all files and directories on the system. Other users are limited to files
they own, or files that have been marked public. Typically the root user is only used for adminis-
page 32


tration, and normal users use non-root accounts. This generally keeps the system safe from care-
less damage, and security breaches. Each user has their own home directory, normally in the ‘/
home’ directory. The permissions for files and directories are set so that the user has complete
control over that directory.


    The permissions for files can be seen by doing a directory listing with ’ls -la’. This will show
flags something like ’-rwxrwxrwx jackh         user’ for a file that everybody can read ’r’, write ’w’
or execute ’x’. The leftmost ’rxw’ is for the user ’jackh’, the second ’rwx’ is for the group ’user’
and the rightmost ’rwx’ is for everybody on the system. So if the permissions were ’-rwxr--r--’
everybody on the system can read the file, but only the owner can write and execute it.


    For security reasons, write permissions for files are normally only allowed for the owner, but
read permissions are normally given to all. Execute permissions are normally set for all users
when the file can be executed, such as a program. Sometimes more than one user wants to have
access to a file, but there are reasons to not permit permission to everybody. In this case a group
can be created and given permission to use a file.


    Commands that are oriented to users and permissions follow.


        passwd user change the password for a user
        chmod flags files change the permission ’flags’ for ’files’
        chown user files change the owner of ’files’ to ’user’
        finger user give information about a ’user’
        who        look at who is logged into your machine
        last       a list of the last users logged in
        whoami give your current user name
        su - name change to a different user
        chgrp group files add a ’group’ to a file

    Most of the user information is stored in the ’/etc’ directory. For example, user account infor-
mation is stored in the ’passwd’ file. User passwords are stored in the ’shadow’ file. Group infor-
mation is stored in the ’groups’ file. It is possible to add users to the system by editing these files,
but there are commands that make it easier to update and maintain these files.
page 33


    The ’passwd’ command is used to change user passwords. In general passwords are the main
line of defense against unwanted intruders. Most systems will do simple password checks when
passwords are entered. In general, if a password can’t be found in a dictionary or index of a book
it will generally be safer.




2.2.4 Processes

    At any one time there are multiple programs (processes) running on a Linux computer. When
you run a program it becomes another process also running on the computer. Each process is
given it’s own unique process ID number (PID). Each process is given it’s own private memory
space, and allowed to run for a fraction of a second every second.


    The list of commands below allow the processes in the computer to be seen. They also allow
the general state of the machine to be determined.


        ps -aux Print a list of processes running on the computer
        kill -9 pid Kill a process with ’pid’ running on the computer (uses the PID # from ps -ef)
        passwd userChange the password of a ’user’
        date        print system date and time
        who         show who is logged into the machine
        exit        this will logout a user
        fg          bring background processes to the foreground
        bg          send a stopped process to the background
        <CNTL>Chitting this key sequence will kill a running process
        <CNTL>Zhitting this key sequence will stop a running process, but not kill it
        command &any command followed by an ’&’ ampersand will be run in the background

    Simple commands can be combined together with pipes to make more complicated functions.
An example is ’ls | more’. By itself ’ls’ will list all the files in a directory. ’more’ is normally used
to print out text files. But in this case the output of ’ls’ is passed (piped) through ’more’ so that it
only prints one screen at a time. Multiple commands can be combined on a single command line
by separating them with a colon ’:’. For example the command ’ls ; ls ..’ would list the contents of
the current directory, then the parent directory.
page 34




    Output from functions can be redirected to files instead of the screen. For example ’ls >
temp’ will take the normal output from the ’ls’ function, and write it into a textfile called ’temp’.
Input to functions can be directed into a program. For example ’sort < temp’ will make the file
’temp’ the input to the sort command.


    Simple batch files can be created by putting a list of commands in a normal text file. The file
can then be made executable using the command ’chmod 755 filename’. The program can then be
run using ’./filename’.




2.3 NETWORKING

    Networks are a key component of Linux operating systems. Each computer on a network
may have a name, such as ’claymore.engineer.gvsu.edu’, but each computer must have a number,
such as ’148.61.104.215’. You can log into other Linux and Unix machines with commands such
as ‘telnet claymore.engineer.gvsu.edu’, ’telnet 148.61.104.215’ or ‘rlogin claymore.engi-
neer.gvsu.edu’. This allows you to sit at one machine, and use many others, even around the
world.


    You can also access other computers with public access directories using the ‘ftp’ command.
For example try ‘ftp ftp4.netscape.com’. This will connect you to a computer some place in the
U.S. When it asks you for your ‘login name’ type ‘anonymous’. When it asks for a ‘password’,
enter your name. You may now move around using ls, pwd, cd, etc. If you want to get a file from
some directory, type ‘binary’, then type ‘get filename’, or ’get filenames’. ‘quit’ ends every-
thing. If you log into a machine with FTP and you have write permissions you can also write files
to the machine using ’put filename’ or ’mput filenames’. If you use FTP to log into a computer
that you have account on you will be able to move outside of the limited ftp directories.
page 35


2.3.1 Security

    Security is not a significant problem for a computer that is not connected to a network, and
passwords will protect it from ‘honest thieves’. When connected to a network there is potential for
security problems. These problems become more serious when the computer is connected to the
network 24 hours a day. General rules to keep a computer safe (this applies to non-Linux comput-
ers also) are:


        keep user passwords safe - these can be the start of a security breach
        protect the root password - loosing this throws the system wide open
        shut down unneeded programs - network programs sometime have bugs that open doors
        apply patches - software updates help close security holes




2.4 INTERMEDIATE CONCEPTS

    Above the basic features of the Linux system are a number of more advanced features and
commands. Some of these are listed below.


        pine         a simple interface for mail usage
        mail         a somewhat bothersome mail tool (see pine).
        man func bring up a manual page for ’func’
        man -k stringbrings up information on ’string’
        tar -xvf file.tar extract files from an archive file ’file.tar’
        tar cvf - files > file.tar put ’files’ into an archive file ’file.tar’




2.4.1 Shells

    When one logs into a Linux system, you are actually running a program (shell) this is in some
ways similar to DOS. In the standard shell you are given a prompt, where you type your com-
mand. If it is not a built-in command, it searches on the disk according to a user-specified search
path, for an executable program of that name. Almost all commands are programs that are run in
page 36


this manner. There are also executable shell scripts, similar to command files on DOS. Linux is
limited to running a program of a size equal to the sum of its memory, and swap space. As the sys-
tem is multi-tasking, any program (or part thereof) that is not currently being run when extra
memory is required, is swapped (moved) out to the disk, until it is ready to run again.


    In shells there are environment variables set. Some of the commands that can be used to view
these are shown below. They can be set by editing the appropriate text files.


       alias    prints a list of command aliases
       printenv prints a list of the environment variables
       set      prints a list of the environment variables




2.4.2 X-Windows

    The GUI in Linux is actually two programs working together. The basic program is called X
windows, and it provides basic connection to the screen, mouse, keyboard and sound card. The
look-and-feel of the GUI is provided by the window manager. One simple window manager is
called ‘fvwm’ and it can behave like Windows 95/98. Newer window managers include Gnome
and KDE. While these both provide similar capabilities and features, most users develop personal
preferences for a single window manager.




2.4.3 Configuring

    Devices and settings can be configured under X-windows using graphical tools. Settings can
also be configured with text files, but this is not necessary. Examples of settings that the user or
root might want to change are:
       Modem properties for internet connection
       Network card properties for connection to a LAN
       Printer type and location
page 37


       Customize the windows settings and behavior
       Sound card settings and sounds for Window events




2.4.4 Desktop Tools

    Most users focus less on the Operating System, and more on the programs that it will run.
The task list below includes many of the applications that would be desired by the average user.
Most of the listed applications are free, with the exception of the games. Many of these packages
are a standard part of Linux distributions.


• Office Software - these include spreadsheets, word processors, presentation software, drawing
                                                       tools, database tools, 3D graphics tools
        Star Office [14]
        KOffice [15]
• File and Internet Browsers
        Netscape - allows browsing of the internet [16]
        Files - there are many file viewers that ease directory browsing
        Eazel - allows active directory browsing [17]
• Administration and Utilities
        Apache - the most popular web server program [18]
        Postgres and MySQL - Database programs [19] [20]
        Replace a microsoft networking server [21]
        DOS/Windows Simulator VMWare [22]
• Entertainment
        Audio and video
        Tools (GIMP - similar to photoshop)
        Games (Quake, Doom, SimCity)




2.5 LABORATORY - A LINUX SERVER

Purpose:
       To set up a Linux server that can be used for controlling automation.

Overview:
       At the core of every integrated manufacturing system is a server. A server is a computer,
               running a networked operating system that can connect to many other computers.
page 38


                 The function of a server is to communicate information between different devices
                 on the factory floor.

          The most important part of a server is the operating system. Mature operating systems
                such as Unix and Linux are well established, while newcomers, such as Windows
                NT are trying to establish themselves.


Pre-Lab:
       1. Go to the web site www.linux.org and read about Linux.
       2. Go to the RedHat Linux site and read the installation instructions. (www.redhat.com)

In-Lab:
          1. Locate a computer to use. Install Linux using the following instructions.
          2. After the installation is done and the computer has been rebooted go through the follow-
                  ing Linux tutorial.
          3. If you need more practice with linux try another basic user tutorial (www.linux.org).
          4. Update the main webpage on the machine, and create a web page for yourself also in
                  your own public_html directory.

Submit (individually):
      1. Have the machine up and running properly, including X-windows.
      2. Have a running web server with a main web page, and for you.



2.6 TUTORIAL - INSTALLING LINUX

This section outlines the steps and choices that were used while installing Redhat 7.0. You can
  also refer to other installation guides (www.redhat.com) in the event of problems.

          1. Open the computer to determine the following information.
                  - video card type and memory
                  - network card type
                  - mouse type
          2. Insert the distribution floppy disk and CD and turn on the computer. The computer will
                  start to boot automatically. After some time a graphical interface should appear
                  and you will be asked questions.
          3. The choices that I made follow in sequence. You should adapt these to the computer you
                  have. The settings I expect you will need to change are marked with an asterisk
                  ’*’.
                  Language selection - English
                  Keyboard - Generic 101-key PC
                           - US English
                           - Enable dead keys
page 39


        *Mouse - Microsoft Intellimouse
        Install Options - Custom System
        Partitioning - using disk druid
                Delete all disk partitions
                *Add a partition - mount ’/’, size 1500MB, partition type Linux Native
                *Add a partition - partition type Linux Swap, size remaining about 50MB
        Formating - ’/dev/hda1 /’
        Lilo Configuration - "Create Boot Disk" selected
        Install Lilo on ’/dev/hda MBR’
                - did not use linear mode
                - no kernel parameters
                - left the rest as is
        Network - configured with "DHCP", "activate on boot"
        Timezone - "Detroit"
        Account Configuration
                - entered a root password
                *- added a user account for myself ’jackh’
        Authentication Configuration - left all as is
        Selecting Package Groups - the following list were the only ones chosen
                Printer Support
                X Window System
                Gnome
                KDE
                Mail/WWW/News Tools
                DOS/Windows Connectivity
                Graphics Manipulation
                Games
                Multimedia Support
                Networked Workstation
                Dialup Workstation
                Web Server
                SQL Server
                Network Management Workstation
                Authoring/Publishing
                Development
                Kernel Development
                Utilities
        X Configuration
                *- Generic High Freq. SVGA 1024x768 @ 70Hz
                *- ATI Mach 64, 1MB memory
                - don’t set ’use graphical login’
4. Installation will start and it takes about 30-60 minutes.
5. When done you will be prompted to put a formatted floppy disk in the drive and create
        a boot disk. This is good for emergencies and is highly encouraged. Don’t forget to
        label the disk.
6. When prompted reboot the system. Don’t forget to remove the floppy and CDROM.
page 40


    7. Once the system has rebooted, login as root. Start XWindows using ’startx’.
    8. If you reach this point you have completed the installation successfully.



2.7 TUTORIAL - USING LINUX

    1. Login with your username and password. Later you can logout with ’logout’ or ’exit’.
             (Note: you can also use ’shutdown -h now’ to stop the machine.)
    2. After you have logged in you should see a flashing cursor. Type ’startx’ to start the X-
             windows GUI. This will take some time, but when done you will have a windowed
             interface.
    3. First we want to open a command window. Point to the bottom of the screen and locate
             the icon that looks like a computer screen. Click on it once with the left mouse but-
             ton. A command window will pop up on the screen. Click on the border of the win-
             dow, the keyboard will then be focused on the window, and commands will work
             there.
    4. Enter the commands below in order and observe the results. They should allow you to
             move around directories and see the files listed there. Some of the options will
             change how you see the files.
             ls
             ls -l
             ls -la
             ls -lar
             ls -lat
             ls -lart
             pwd
             cd .. ; ls -la
             cd ~
    5. Use the manuals to find other options for the ‘ls’ command with ‘man ls’.
    6. Explore the hard drive to find what is there. The following directories are particularly
             important.
             /etc - the machine configuration and boot files
             /opt - some packages will be installed here
             /bin and /usr/bin - executable files
             /sbin and /usr/sbin - executable files for the root user and system
             /usr/doc - help files
             /home - use directories are here
             /mnt - mounted disk drives are attached here
             /proc - system status is kept here
             /var/log - system log files are kept here
             /tmp - temporary files are stored here
    7. Change to the directory ’/etc’, and look at the contents of the file ’fstab’ with the com-
             mand ’more fstab’. This file contains a list of the disk drives in the computer. You
             can find more information about it with ’man fstab’.
page 41


        8. Return to your own directory and create a subdirectory called public_html with the
               command ’mkdir public_html’. Change to that directory and create a new file
               using the vi editor with ’vi index.html’. Enter the following text into that file. The
               editor has two modes. In command mode each key will cause an action. In edit
               mode each key is added to the text. Hitting ’ESC’ at any time puts the editor back
               into command mode. To move into edit mode hit ’i’ then start typing text. To erase
               a single character hit ’x’. When you are done editing the program use ’:wq:’ to
               save the file and quit. Refer to the previous section in the text more details on the
               commands.
                        <HTML>
                        <BODY>
                        Hi
                        </BODY>
                        </HTML>
        9. When done save and quit the editor. Make sure the permissions of your file and the
               ’public_html’ directory are correct with the command ’chmod 755 index.html ~/
               public_html ~’.
        10. Use netscape to look at you web page and see if it is there. You can do this using
               ’netscape &’. You can see the file by opening it. You should also be able to see the
               file by typing ’http://127.0.0.1/~YOURNAME’, where ’YOURNAME’ is you
               user ID.
        11. Look at the list of processes running on the computer with ’ps -aux’. Notice that the
               columns indicate what is running, the status of the process, etc. You can get more
               information about this using ’man ps’
        12. Log into claymore using ’telnet claymore.engineer.gvsu.edu’ or ’telnet
               148.61.104.215’. use ’ls’ to look at the files in your directory. When done looking
               around your account use ’exit’ to logout.
        13. Now, look at some of the programs in the Window manager.



2.8 REFERENCES
[1] http://www.ibm.com
[2] http://www.beowulf.org, “The Beowulf Project”.
[3] Hasan, R., “History of Linux”, http://ragib.hypermart.net/linux.
[4] Polsson, K., “Chronology of Personal Computers”, http://www.islandnet.com/~kpolsson/complist
[5] http://www.linux.org/hardware/index.html, “Linux Friendly Hardware”
[6] http://www.linux.org/apps/index.html, “Applications”
[7] http://www.redhat.com
[8] http://www.mandrake.org
[9] http://www.caldera.com
[10] http://www.debian.com
[11] http://www.suse.com
[12] http://www.sunsite.unc.edu
[13] http://www.linux.com
[14] http://www.staroffice.com
[15] http://www.koffice.kde.org
[16] http://www.netscape.com
page 42


[17] http://www.eazel.com
[18] http://www.apache.org
[19] http://www.postgresql.org
[20] http://www.mysql.com
[21] http://www.samba.org
[22] http://www.vmware.com
page 43



3. AN INTRODUCTION TO C/C++ PROGRAMMING


3.1 INTRODUCTION

    The C programming language was developed at Bell Laboratories in the Early 1970’s. The
language was intended to provide a high level framework for data and functions while allowing
highly efficient programs. By the 1980s the language had entered widespread usage and was in
use for the development of many high level programs. By the 1990s most new software projects
were written in C. Some of the advantages of C are listed below.


       • Machine Portable, which means that it requires only small changes to run on other com-
               puters.
       • Very Fast, almost as fast as assembly language.
       • Emphasizes structured programming, by focusing on functions and subroutines.
       • You may easily customize ’C’ to your own needs.
       • Suited to Large and Complex Programs.
       • Very Flexible, allows you to create your own functions.

    More recently C++ was developed to add object-oriented capabilities to C. In simple terms
the object oriented extensions allow data and functions to be combined together. In general the
advantages that C++ add over C are those listed below. In general, any C program can be com-
piled with C++, while C++ programs will often not compile with a C compiler.
       • Reusable source code can reduce duplication
       • Encapsulation of data and functions reduces errors
       • It is easy to interchange software modules




   ASIDE: The expression object-oriented has been misused recently. This was a particular
     problem with those marketing software. In truth, these techniques are mainly of use
     only to the programmer. From the users perspective, they will be unaware of whether
     the souce code of the program is object-oriented or not.
page 44


    This chapter will act as a basic introduction or review of C and C++ programming. C pro-
gramming is discussed first to lay the foundations, and this is followed with a discussion of C++
programming extensions. The end of the chapter discusses structured program design techniques.
If you are already fluent in C and C++ I suggest you skip this chapter.




3.2 PROGRAM PARTS

    C programs are basically simple text programs that follow a general set of rules (syntax). Fig-
ure 3.1 shows the classic beginners program that will add two numbers and print the result. The
first line in this example is a comment. Comments are between ’/*’ and ’*/’ can stretch over many
lines. Comments can also be the end of a line if they follow ’//’. The ’main()’ program declaration
indicates where the program starts. The left and right curly brackets ’{’ and ’}’ are used to group
together a set of program statements, in this case the program. Notice that the program statements
are indented to indicate how they are grouped. This is a very valuable structuring technique that
makes the programs much easier to read.


           /* A simple program to add two numbers and print the results */

           main() {
                 int x, y = 2, z; // define three variables and give one a value
                 x = 3; // give another variable a value
                 z = x + y; // add the two variables
                 printf(“%d + %d = %dn”, x, y, z); // print the results
           }



             Results (output):
             3+2=5




    Figure 3.1 - A Program to Add Two Numbers (and results)


    The program begins with the definition of three variables, ’x’, ’y’ and ’z’. All three are
defined to be ’int’ integers and the value of ’y’ is set to ’2’. The statement is terminated with a
page 45


semicolon to separate it from the next statement. The next line assigns a value of ’3’ to ’x’. The
following line adds the values of ’x’ and ’y’ and assigns the value to ’z’. The last statement in the
program, ’printf’, prints the values with a format statement. The first string in the command is a
format string. In the string a ’%d’ indicates an integer, and ’n’ indicates an end of line. The
remaining characters in the format string are printed as shown. The format string is followed by
the variables in the format string, in the same sequence. The result of the program shown that
when it is run it prints ’3 + 2 = 5’.


    Some of the general rules that are worth noting are listed below.
        • lower/UPPER case is crucial, and can never be ignored.
        • Statements can be on one or more lines but must be separated by semi-colons ‘;’.
        • Statements consist of one operation, or a set of statements between curly brackets {, }
        • There are no line numbers.
        • Lines may be of any length.

    The data types for C are listed below with typical data sizes. Sometimes these sizes may be
larger or smaller. Their behavior of ’char’, ’short’, ’int’ and ’long’ can be modified when pre-
ceded with ’unsigned’. For example an integer ’x’ defined with ’int x;’ could have a value from -
32768 to 32767, but if defined with ’unsigned int x;’ it can have a value from 0 to 65535.
        char (1 byte ascii character),
        short (1 byte signed integer),
        int (2 byte signed integer),
        long (4 byte signed integer),
        float (4 byte floating point IEEE standard),
        double (8 byte floating point IEEE standard).

    Beginners will often write a program in a single ’main’ function. As the program becomes
more complex it is useful to break the program into smaller functions. This makes it easier to
write and read. Figure 3.2 contains an example program that uses subroutines to perform the same
function as the program in Figure 3.1. As before the ’main()’ program function is the starting
point for program execution. The subroutine ’add’ is defined after ’main’, so a function prototype
is required before. A prototype just indicates the values that are passed, and the function return
type. In this example the values 3 and 2 are passed to the ’add’ function. In the add function these
values are then put into ’a’ and ’b’. The values are then added and assigned to ’c’. The value of ’c’
page 46


is then returned to the main function where it is assigned to ’z’.



             /* A simple program to add two numbers and print the results */

             int add(int, int); /* Declare a integer function called ‘add’ */

             main() {
                   int x = 3, y = 2, z; /* define three variables and give values */
                   z = add(x, y); /* pass the two values to ‘add’ and get the sum*/
                   printf(“%d + %d = %dn”, x, y, z); /*print the results */
             }

             int add(int a, int b) { /* define function and variable list */
                   int c; /* define a work integer */
                   c = a + b; /* add the numbers */
                   return(c); /* Return the number to the calling program */
             }




    Figure 3.2 - Program to add numbers with a function:


    Every variable has a scope. This determines which functions are able to use that variable. If a
variable is global, then it may be used by any function. These can be modified by the addition of
static, extern and auto. If a variable is defined in a function, then it will be local to that function,
and is not used by any other function. If the variable needs to be initialized every time the subrou-
tine is called, this is an auto type. static variables can be used for a variable that must keep the
value it had the last time the function was called. Using extern will allow the variable types from
other parts of the program to be used in a function.


           /* A simple program to add two numbers and print the results */

           int x = 3, /* Define global x and y values */
           y = 2,
           add(); /* Declare an integer function called ‘add’ */

           main() {
                 printf(“%d + %d = %dn”, x, y, add()); /*print the results */
           }

           int add() { /* define function */
                 return(x + y); /* Return the sum to the calling program */
           }




    Figure 3.3 - Program example using global variables:
page 47


    Other variable types of variables are union, enum and struct. Some basic control flow state-
ments are while(), do-while(), for(), switch(), and if(). A couple of example programs are given
below which demonstrate all the ’C’ flow statements.


           /* A simple program to print numbers from 1 to 5*/

           main() {
                 int i;
                 for(i = 1; i <= 5; i = i + 1){
                          printf(“number %d n”, i); /*print the number */
                 }
           }




    Figure 3.4 - Program example with a for loop:




             main() { // A while loop
                   int i = 1;
                   while(i <= 5){
                             printf(“number %d n”, i);
                             i = i + 1;
                   }
             }

             main() { // A do-while loop
                   int i = 1;
                   do{
                             printf(“number %d n”, i);
                             i = i + 1;
                   }while(i <= 5)
             }




    Figure 3.5 - Examples of Other Loops


           main() {
                 int x = 2, y = 3;
                 if(x > y){
                          printf(“Maximum is %d n”, x);
                 } else if(y > x){
                          printf(“Maximum is %d n”, y);
                 } else {
                          printf(“Both values are %d n”, x);
                 }
           }




    Figure 3.6 - An If-Else Example
page 48




        main(){
              int x = 3; /* Number of People in Family */
              switch(x){ /* choose the numerical switch */
              case 0: /* Nobody */
                       printf(“There is no family n”);
                       break;
              case 1: /* Only one person, but a start */
                       printf(“There is one parentn”);
                       break;
              case 2: /* You need two to start something */
                       printf(“There are two parentsn”);
                       break;
              default: /* critical mass */
                       printf(“There are two parents and %d kidsn”, x-2);
                       break;
              }
        }



    Figure 3.7 - A Switch-Case Example


    #include <filename.h> will insert the file named filename.h into the program. The *.h exten-
sion is used to indicate a header file which contains ‘C’ code to define functions and constants.
This almost always includes “stdio.h”. As we saw before, a function must be defined (as with the
‘add’ function). We did not define printf() before we used it, this is normally done by using
#include <stdio.h> at the top of your programs. “stdio.h” contains a line which says ‘int printf();’.
If we needed to use a math function like y = sin(x) we would have to also use #include <math.h>,
or else the compiler would not know what type of value that sin() is supposed to return.


    #define CONSTANT TEXT will do a direct replacement of CONSTANT in the program with
TEXT, before compilation. #undef CONSTANT will undefine the CONSTANT.


             #include <stdio.h>
             #include <math.h>
             #define TWO_PI 6.283185307
             #define STEPS 5

             main() {
                   double x; /* Current x value*/
                   for(x = 0.0; x <= TWO_PI; x = x + (TWO_PI / STEPS)){
                   printf(“%f = sin(%f) n”, sin(x), x);
                   }
             }




    Figure 3.8 - A More Complex Example
page 49




    #fictive, #finder, #if, #else and #else can be used to conditionally include parts of a program.
This is used for including and eliminating debugging lines in a program. Statements such as
#define, #include, #fictive, #finder, #if, #else, /* and */ are all handled by the Preprocessor, before
the compiler touches the program. Matrices are defined as shown in the example. In ‘C’ there are
no limits to the matrix size, or dimensions. Arrays may be any data type. Strings are stored as
arrays of characters.


    i++ is the same as i = i + 1.



             #include “stdio.h”
             #define STRING_LENGTH 5

             main() {
                   int i;
                   char string[STRING_LENGTH]; /* character array */
                   gets(string); /* Input string from keyboard */
                   for(i = 0; i < STRING_LENGTH; i++){
                            printf(“pos %d, char %c, ASCII %d n”,
                            i, string[i], string[i]);
                   }
             }



               INPUT:
               HUGH<return>


               OUTPUT:
               pos 0, char H, ASCII 72
               pos 1, char U, ASCII 85
               pos 2, char G, ASCII 71
               pos 3, char H, ASCII 72
               pos 4, char , ASCII 0



    Figure 3.9 - Printing ASCII Values


    Pointers are a very unique feature of ‘C’. First recall that each variable uses a real location in
page 50


memory. The computer remembers where the location of that variable is, this memory of location
is called a pointer. This pointer is always hidden from the programmer, and uses it only in the
background. In ‘C’, the pointer to a variable may be used. We may use some of the operations of
‘C’ to get the variable that the pointer, points to. This allows us to deal with variables in a very
powerful way.



             #include “stdio.h”

             main() {
                   int i;
                   char *string; /* character pointer */
                   gets(string); /* Input string from keyboard */
                   for(i = 0; string[i] != 0; i++){
                            printf(“ pos %d, char %c, ASCII %d n”,
                            i, string[i], string[i]);
                   }
             }

                INPUT:
                HUGH<return>


                OUTPUT:
                pos 0, char H, ASCII 72
                pos 1, char U, ASCII 85
                pos 2, char G, ASCII 71
                pos 3, char H, ASCII 72


    Figure 3.10 - A Sample Program to Get a String



3.3 CLASSES AND OVERLOADING

    Classes are the core concept behind object oriented programing. They basically allow data
and functions to be grouped together into a complex data type. The example code below shows a
class definition, and a program that uses it.
page 51




         class bill {
               public:
                               int    value;
                               void   result();
         }

         bill::result(){
               printf("The result is %d n", value);
         };

         main(){
               bill            A;
               bill            B;

                  A.value = 3;
                  B.value = 5;
                  A.result();
                  B.result();
         }

             PROGRAM OUTPUT:
             The result is 3
             The result is 5


    Figure 3.11 - A Simple Class Definition


    The class is defined to have a public integer called’value’ and a public function called
’result’. The function ’result’ is defined separately outside of the class definition. In the ’main’
program the class has two instances ’A’ and ’B’. The ’value’ values in the classes are set, and then
the result function is then called.


    A more sophisticated example of a class definition follows. The program shown does exactly
the same as the last program, but with some useful differences. This class now includes a con-
structor function ’bill’. This function is automatically called when a new instance of ’bill’ is cre-
ated. In the main program the instances are not created initially, but pointers ’*A’ and ’*B’ are
created. These are then assigned instances with the calls to ’new bill()’. At this point the construc-
tor functions are called. Finally, when the instances are used, because they are pointers, the ’->’
are used instead of ’.’.
page 52




        class bill {
              public:
                              bill(int);
                              int      value;
                              void     result();
        }

        bill::bill(int new_value){
              value = new_value;
        }

        bill::result(){
              printf("The result is %d n", value);
        };

        main(){
              bill            *A;
              bill            *B;

                 A = new bill(3);
                 B = new bill(5);
                 A->result();
                 B->result();
        }

            PROGRAM OUTPUT:
            The result is 3
            The result is 5


    Figure 3.12 - Another Class Example



3.4 HOW A ‘C’ COMPILER WORKS

    A ‘C’ compiler has three basic components: Preprocessor, First and Second Pass Compiler,
and Linker.
page 53




                              Source code “filename.c”


                              The Preprocessor
                          Will remove comments, replace strings which have a
                            defined value, include programs, and remove
 #include files             unneeded characters.
 (like “stdio.h”)
                                                       ASCII Text Code
                              The First and Second Pass
                          The compiler will parse the program and check the syn-
                            tax. TheSecond Pass produces some simple machine
                            language, which performs the basic functions of the
                            program.



                                                       Object Code (*.o)
                              The Linker
                          The compiler will combine the basic machine language
                            from the first pass and combine it with the pieces of
                            machine language in the compiler libraries. An opti-
  Library files             mization operation may be used to reduce execution
     (*.so)                 time.



                                                       Executable Code
                                                           (*.exe)

  Figure 3.13 - How Programs Are Compiled



3.5 STRUCTURED ‘C’ CODE
page 54


       • A key to well designed and understandable programs.


       • Use indents, spaces and blank lines, to make the program look less cluttered, and give it a
block style.


       • Comments are essential to clarify various program parts.


       • Descriptive variable names, and defined constants make the purpose of the variable obvi-
ous.


       • All declarations for the program should be made at the top of the program listing.


               A Sample of a Bad Program Structure:

             main(){int i;for(;i<10;i++)printf(“age:%dn”,i);}



               A Good Example of the same Program:

             #include <stdio.h>
             #define COUNT 10 /* Number of counts in loop */

             main() {
             int i; /* counter */
                   for(i = 0; i < COUNT; i++){ /* loop to print numbers */
                             printf(“age:%dn”, i);
                   }
                   exit(0);
             }




       Figure 3.14 - Program Structure Examples




3.6 COMPILING C PROGRAMS IN LINUX
page 55


    The basic C compiler is called ’gcc’, or ’g++’ for C++. These can be put on a command line.
For example ’gcc bob.c -o bob’ will compile a C program in the file ’bob.c’, and store the result in
a program file ’bob’.


    Function libraries linked in with ’-l___’. For example to use a math function the math library
must be included in the compilation line with ’-lm’. The debugger can be used if ’-g’ is included
in the compilation line. For example, if a program was compiled with ’gcc -g bob.c -o bob’, it
could be run in the debugger with ’xxgdb bob’. This then allows you to step through the program
line by line, set break points, see where it crashed, or print data values. The compiler can be set to
be extra picky (which also helps find errors) when compiled with the flag ’-Wall’




3.6.1 Makefiles

    Programmers quickly tire of constantly typing commands to compile programs. To help with
this problem, the make utility was developed. A programmer will create a ’makefile’ to describe
how a program is to be compiled. This file can be called ’makefile’ or ’Makefile’ by default. The
contents then describe when a file should be compiled.


    The sample makefile below shows a simple makefile. The lines beginning with ’#’ are com-
ments. The line containing the ’all:’ indicates the main program(s) to make. In this example the
only program to make is ’bob’, notice that a later line starts with ’bob:’. The next three lines
define variables that can be reused. Later in this example the ’$(CC)’ will be replaced with ’gcc’,
the ’$(CFLAGS)’ with ’-Wall -g’, and so on. To make the required program ’bob’ both ’bob.c’
and ’bill.o’ are needed. When run the make tool will check to see if the files on the disk have been
updated and things need to be recompiled. Only if the program files have changed will the com-
piler be run, otherwise the compilation will not be done because it is not necessary. If it is neces-
sary it will execute the commands on the following lines.
page 56




      #
      # A sample makefile
      #

      all: bob

      CC=gcc
      CFLAGS=-Wall -g
      LIBS = -lm

      bob:   bob.c bill.o
             $(CC) $(CFLAGS) bob.c -o bob $(LIBS)

      bill.o:bill.c bill.h
            $(CC) $(CFLAGS) -c bill.c




    Figure 3.15 - A Sample Makefile


    Initially creating a makefile seems to be alot of effort, but if you run the compiler 10 times
you will save enough time to make it worth while. It also makes it easier for others to compile the
programs later.




3.7 ARCHITECTURE OF ‘C’ PROGRAMS (TOP-DOWN)



3.7.1 How?

    A program should be broken into fundamental parts (using functions for each part) and then
assembled using functions. Each function consists of programs written using the previous simpler
functions.
page 57




         Example with a Car                          Frame is like one subroutine
                                                     which also calls other
                                                     subroutines like Suspension
                                      Frame


                    Suspension              Body             Engine


                          Wheel
    Figure 3.16 - Defining Program Structure By Function


    • A Clear division should be maintained between program levels.


    • Never use goto’s, they are a major source of logic errors. Functions are much easier to use,
once written.


    • Try to isolate machine specific commands (like graphics) into a few functions.



3.7.2 Why?
    • A top-down design allows modules to be tested as they are completed. It is much easier to
find an error in a few lines of code, than in a complete program.


    • When programs are complete, errors tend to be associated with modules, and are thus much
easier to locate.


    • Updates to programs are much easier, when we only need to change one function.


    • It is just as easy to change the overall flow of a program, as it is to change a function.
    Application of ‘C’ to a CAD Program
page 58


3.8 CREATING TOP DOWN PROGRAMS
    1. Define Objectives - Make a written description of what the program is expected to do.


    2. Define Problem - Write out the relevant theory. This description should include variables,
calculations and figures, which are necessary for a complete solution to the problem. From this
we make a list of required data (inputs) and necessary results (output).


    3. Design User Interface - The layout of the screen(s) must be done on paper. The method of
data entry must also be considered. User options and help are also considered here. (There are
numerous factors to be considered at this stage, as outlined in the course notes.)


    4. Write Flow Program - This is the main code that decides when general operations occur.
This is the most abstract part of the program, and is written calling dummy ‘program stubs’.


    5. Expand Program - The dummy ‘stubs’ are now individually written as functions. These
functions will call another set of dummy ‘program stubs’. This continues until all of the stubs are
completed. After the completion of any new function, the program is compiled, tested and
debugged.


    6. Testing and Debugging- The program operation is tested, and checked to make sure that it
meets the objectives. If any bugs are encountered, then the program is revised, and then retested.


    7. Document - At this stage, the operation of the program is formally described. For Program-
mers, a top-down diagram can be drawn, and a written description of functions should also be
given.


    Golden Rule: If you are unsure how to proceed when writing a program, then work out the
problem on paper, before you commit yourself to your programmed solution.


    Note: Always consider the basic elements of Software Engineering, as outlined in these
course notes.
page 59




3.9 CASE STUDY - THE BEAMCAD PROGRAM



3.9.1 Objectives:

    • The program is expected to aid the design of beams by taking basic information about beam
geometry and material, and then providing immediate feedback. The beam will be simply sup-
ported, and be under a single point load. The program should also provide a printed report on the
beam.



3.9.2 Problem Definition:

    • The basic theory for beam design is available in any good mechanical design textbook. In
this example it will not be given.


    • The inputs were determined to be few in number: Beam Type, Beam Material, Beam Thick-
ness, Beam Width, Beam Height, Beam Length, Load Position, Load Force.


    • The possible outputs are Cross Section Area, Weight, Axial Stiffness, Bending Stiffness,
and Beam Deflection, a visual display of Beam Geometry, a display of Beam Deflection.



3.9.3 User Interface:

3.9.3.1 - Screen Layout (also see figure):
     • The small number of inputs and outputs could all be displayed, and updated, on a single
screen.
page 60


        • The left side of the screen was for inputs, the right side for outputs.


        • The screen is divided into regions for input(2), input display and prompts(1), Beam Cross
section(3), Numerical Results(4), and Beam Deflection(5).




3.9.3.2 - Input:
     • Current Inputs were indicated by placing a box around the item on the display(1).


        • In a separate Prompt Box(2), this input could be made.


        • The cursor keys could be used to cursor the input selector up or down.


        • Single keystroke operation.


        • Keys required: UP/DOWN Cursors, F1, F2, F4, numbers from ‘0’ to ‘9’, ‘.’, ‘-’, and
<RETURN>. In the spirit of robustness it was decided to screen all other keys.


3.9.3.3 - Output:
     • Equations, calculations, material types, and other relevant information were obtained from a
text.


        • Proper textual descriptions were used to ensure clarity for the user.


        • For a printed report, screen information would be printed to a printer, with the prompt area
replaced with the date and time.


3.9.3.4 - Help:
     • A special set of help information was needed. It was decided to ensure that the screen
always displays all information necessary(2).
page 61


3.9.3.5 - Error Checking:
     • Reject any input which violates the input limits.


    • A default design was given, which the user could modify.


    • An error checking program was created, which gives error messages.




3.9.3.6 - Miscellaneous:
     • The screen was expressed in normalized coordinates by most sub-routines.


    • Colors were used to draw attention, and highlight areas.
page 62


3.9.4 Flow Program:

      main()
      /*
       * EXECUTIVE CONTROL LEVEL
       *
       * This is the main terminal point between the
       * various stages of setup, input, revision
       * and termination.
       *
       * January 29th, 1989.
       */
      {
             static int error;

             if((error = setup()) != ERROR) {
                      screen(NEW);
                      screen(UPDATE);
                      while((error = input()) != DONE) {
                                if(error == REVISED) {
                                         screen(NEW);
                                         screen(UPDATE);
                                }
                      }
                      error = NO_ERROR;
             }
             kill();
             if(error == ERROR) {
                      printf(“EGA Graphics Driver Not Installed”);
             }
      }




    Figure 3.17 - A Sample Executive Program




3.9.5 Expand Program:

    • The routines were written in a top down fashion, in a time of about 30 hours. These routines
are listed below.
page 63




      Routines Used In Package:


      • main() - to be used as the main program junction.


      • setup() - to set up graphics mode and printer.


      • screen() - A function to draw, or refresh part of the screen. In the interest of program
 speed, this function uses some low level commands.


      • calculations() - perform the calculations of outputs from the inputs


      • picture() - draws the beam cross section and deflection of beam. For the sake of speed,
 this section will use low level commands.


      • input() - A function which controls the main input loop for numbers, controls, error
 screening, and any calls to desired routines. Input uses both higher and lower level commands
 for the sake of speed.


      • printes() - A function to print the EGA screen.


      • printer() - A function to remove help messages from the screen, and then dumps the
 screen to the printer.


    • Condition and error flags were used to skip unnecessary operations, and thus speed up
response. A response of more than 0.5 seconds will result in loss of attention by the user.
page 64




         High Level                                                               Low Level
    Executive Subroutine                                                    Specific Subroutines

        Top                                                                        Down

        main()                   screen()                  box()                  setup()

                                 input()                   printer()              kill()

                                                                                  picture()
        In this case we see that most of the routines are at the bot-
           tom of the design tree. This structure shows a clear
           division of tasks, to their basic parts. On the above dia-             enter()
           gram, none of the functions calls any of the functions
           to the left of it, only to the right. In this case main() will
           call setup(), screen(), input() and kill() directly.                   draw_line()

                                                                                  text()

                                                                                  calculations()

                                                                                  printes()
                     Machine Dependence Increases
                    Consideration of detail
                    Consideration of flow

    Figure X - Function Hierarchies



3.9.6 Testing and Debugging:

    • The testing and debugging was very fast, with only realignment of graphics being required.
This took a couple of hours.
page 65




3.9.7 Documentation

3.9.7.1 - Users Manual:
     • The documentation included an Executive Summary of what the Program does.


    • The Objectives of the program were described.


    • The theory for beam design was given for the reference of any program user, who wanted to
verify the theory, and possible use it.


    • A manual was given which described key layouts, screen layout, basic sequence of opera-
tions, inputs and outputs.


    • Program Specifications were also given.


    • A walk through manual was given. This allowed the user to follow an example which dis-
played all aspects of the program.


3.9.7.2 - Programmers Manual:
     • Design Strategy was outlined and given.


    • A complete program listing was given (with complete comments).


    • Complete production of this Documentation took about 6 hours.




3.9.8 Listing of BeamCAD Program.
page 66


    • Written for turbo ‘C’



3.10 PRACTICE PROBLEMS

    1. What are the basic components of a ‘C’ compiler, and what do they do?


    2. You have been asked to design a CAD program which will choose a bolt and a nut to hold
two pieces of sheet metal together. Each piece of sheet metal will have a hole drilled in it that is
the size of the screw. You are required to consider that the two pieces are experiencing a single
force. State your assumptions about the problem, then describe how you would produce this pro-
gram with a Top Down design.


    3. What are some reasons for using ‘C’ as a programming language?


    4. Describe some of the reasons for Using Top-Down Design, and how to do it.




3.11 LABORATORY - C PROGRAMMING

    Purpose:
       To practice programming in ‘C’.

    Overview:
       C programming is an essential tool for developing automated systems. It can be used to
              develop customized applications for communication and data handling.

    Pre-Lab:
       Review C programming.

    In-Lab:
page 67


  1. Start up the linux machine, and get X-windows running.
  2. Create a new directory with ‘mkdir src’, and then enter the directory with ‘cd src’.
  3. Use the ‘kedit test.c’ text editor to enter the program below.

           #include <stdio.h>

           main(){
                 char work[20];
                 int i, start, stop;

                 printf(“enter a start value:”);
                 scanf(“%d”, &start);
                 printf(“enter a stop value:”);
                 scanf(“%d”, &stop);
                 for(i = start; i <= stop; i++){
                         printf(“value %d n”, i);
                 }

           }



  4. Compile the program with ‘cc test.c -o test’. Run the program with ‘./test’.
  5. Modify the program to only print every second number.
  6. Write a number guessing game that will randomly pick a number between 1 and 100.
         The user can then guess the number, and the computer will give clues ‘high’ or
         ‘low’ until the value is guessed. The program will then quit. Use a top-down pro-
         gramming approach.

Submit (individually):
  1. All program listings, with comments.
page 68



4. NETWORK COMMUNICATION

     Topics:
          • Networks; topology, OSI model, hardware and design issues
          • Network types; Ethernet
          • Internet; addressing, protocols, formats, etc.




     Objectives:
          • To understand network types and related issues
          • Be able to network using Ethernet
          • To understand the Internet topics related to shop floor monitoring and control




4.1 INTRODUCTION

    The simplest form of communication is a direct connection between two computers. A net-
work will simultaneously connect a large number of computers on a network.


    Data communications have evolved from the 1800’s when telegraph machines were used to
transmit simple messages using Morse code. This process was automated with teletype machines
that allowed a user to type a message at one terminal, and the results would be printed on a remote
terminal. Meanwhile, the telephone system began to emerge as a large network for interconnect-
ing users. In the late 1950s Bell Telephone introduced data communication networks, and Texaco
began to use remote monitoring and control to automate a polymerization plant. By the 1960s data
communications and the phone system were being used together. In the late 1960s and 1970s
modern data communications techniques were developed. This included the early version of the
Internet, called ARPAnet. Before the 1980s the most common computer configuration was a cen-
tralized mainframe computer with remote data terminals, connected with serial data line. In the
1980s the personal computer began to displace the central computer. As a result, high speed net-
works are now displacing the dedicated serial connections. Serial communications and networks
page 69


are both very important in modern control applications.




4.2 NETWORKS

    A computer with a single network interface can communicate with many other computers.
This economy and flexibility has made networks the interface of choice, eclipsing point-to-point
methods such as RS-232. Typical advantages of networks include resource sharing and ease of
communication. But, networks do require more knowledge and understanding.


    Small networks are often called Local Area Networks (LANs). These may connect a few
hundred computers within a distance of hundreds of meters. These networks are inexpensive,
often costing $100 or less per network node. Data can be transmitted at rates of millions of bits
per second. Many controls system are using networks to communicate with other controllers and
computers. Typical applications include;
       • taking quality readings with a PLC and sending the data to a database computer.
       • distributing recipes or special orders to batch processing equipment.
       • remote monitoring of equipment.

    Larger Wide Area Networks (WANs) are used for communicating over long distances
between LANs. These are not common in controls applications, but might be needed for a very
large scale process. An example might be an oil pipeline control system that is spread over thou-
sands of miles.




4.2.1 Topology

    The structure of a network is called the topology. Figure 22.12 shows the basic network
topologies. The ’Bus’ and ’Ring’ topologies both share the same network wire. In the ’Star’ con-
figuration each computer has a single wire that connects it to a central hub.
page 70




                                                   LAN

                           A Wire Loop                             Central Connection




                    ...


              Bus

                                           Ring
                                                                               Star

                                Figure 22.12 - Network Topologies

    In the ’Ring’ and ’Bus’ topologies the network control is distributed between all of the com-
puters on the network. The wiring only uses a single loop or run of wire. But, because there is
only one wire, the network will slow down significantly as traffic increases. This also requires
more sophisticated network interfaces that can determine when a computer is allowed to transmit
messages. It is also possible for a problem on the network wires to halt the entire network.


    The ’Star’ topology requires more wire overall to connect each computer to an intelligent
hub. But, the network interfaces in the computer become simpler, and the network becomes more
reliable. Another term commonly used is that it is deterministic, this means that performance can
be predicted. This can be important in critical applications.


    For a factory environment the bus topology is popular. The large number of wires required
for a star configuration can be expensive and confusing. The loop of wire required for a ring
topology is also difficult to connect, and it can lead to ground loop problems. Figure 12.13 shows
a tree topology that is constructed out of smaller bus networks. Repeaters are used to boost the
signal strength and allow the network to be larger.
page 71




                                  ...
                                                                    R          Repeater




                                               R




                                              R

                                                                R




                                Figure 22.13 - The Tree Topology




4.2.2 OSI Network Model

    The Open System Interconnection (OSI) model in Figure 22.14 was developed as a tool to
describe the various hardware and software parts found in a network system. It is most useful for
educational purposes, and explaining the things that should happen for a successful network
application. The model contains seven layers, with the hardware at the bottom, and the software at
the top. The darkened arrow shows that a message originating in an application program in com-
puter #1 must travel through all of the layers in both computers to arrive at the application in com-
puter #2. This could be part of the process of reading email.
page 72




              Layer            Computer #1          Unit of Transmission    Computer #2

                7              Application           Message                   Application

                6              Presentation          Message                  Presentation

                5                Session             Message                     Session

                4               Transport            Message                    Transport

                3                Network             Packet                     Network

                 2              Data Link            Frame                      Data Link

                 1               Physical            Bit                        Physical

                                                Interconnecting Medium

        Application - This is high level software on the computer.
        Presentation - Translates application requests into network operations.
        Session - This deals with multiple interactions between computers.
        Transport - Breaks up and recombines data to small packets.
        Network - Network addresses and routing added to make frame.
        Data Link - The encryption for many bits, including error correction added to a
           frame.
        Physical - The voltage and timing for a single bit in a frame.
        Interconnecting Medium - (not part of the standard) The wires or transmission
           medium of the network.

                              Figure 22.14 - The OSI Network Model

    The ’Physical’ layer describes items such as voltage levels and timing for the transmission of
single bits. The ’Data Link’ layer deals with sending a small amount of data, such as a byte, and
error correction. Together, these two layers would describe the serial byte shown in Figure 22.3.
The ’Network’ layer determines how to move the message through the network. If this were for
an internet connection this layer would be responsible for adding the correct network address. The
’Transport’ layer will divide small amounts of data into smaller packets, or recombine them into
one larger piece. This layer also checks for data integrity, often with a checksum. The ’Session’
layer will deal with issues that go beyond a single block of data. In particular it will deal with
page 73


resuming transmission if it is interrupted or corrupted. The ’Session’ layer will often make long
term connections to the remote machine. The ’Presentation’ layer acts as an application interface
so that syntax, formats and codes are consistent between the two networked machines. For exam-
ple this might convert ’’ to ’/’ in HTML files. This layer also provides subroutines that the user
may call to access network functions, and perform functions such as encryption and compression.
The ’Application’ layer is where the user program resides. On a computer this might be a web
browser, or a ladder logic program on a PLC.


    Most products can be described with only a couple of layers. Some networking products may
omit layers in the model. Consider the networks shown in Figure 22.15.




4.2.3 Networking Hardware

    The following is a description of most of the hardware that will be needed in the design of
networks.


       • Computer (or network enabled equipment)
       • Network Interface Hardware - The network interface may already be built into the com-
              puter/PLC/sensor/etc. These may cost $15 to over $1000.
       • The Media - The physical network connection between network nodes.
              10baseT (twisted pair) is the most popular. It is a pair of twisted copper wires ter-
                 minated with an RJ-45 connector.
              10base2 (thin wire) is thin shielded coaxial cable with BNC connectors
              10baseF (fiber optic) is costly, but signal transmission and noise properties are
                 very good.
       • Repeaters (Physical Layer) - These accept signals and retransmit them so that longer net-
              works can be built.
       • Hub/Concentrator - A central connection point that network wires will be connected to.
              It will pass network packets to local computers, or to remote networks if they are
              available.
       • Router (Network Layer) - Will isolate different networks, but redirect traffic to other
              LANs.
       • Bridges (Data link layer) - These are intelligent devices that can convert data on one type
              of network, to data on another type of network. These can also be used to isolate
              two networks.
page 74


         • Gateway (Application Layer) - A Gateway is a full computer that will direct traffic to
                different networks, and possibly screen packets. These are often used to create fire-
                walls for security.

    Figure 22.15 shows the basic OSI model equivalents for some of the networking hardware
described before.



            7 - application

            6 - presentation                                                      gateway

            5 - session

            4 - transport

            3 - network                                             switch

            2 - data link                                 router
                                               bridge
            1 - physical            repeater


                          Figure 22.15 - Network Devices and the OSI Model


   Layer          Computer #1                                                     Computer #2

     7           Application                                                     Application

     6           Presentation                                                   Presentation

     5              Session                                                        Session
                                                    Router
     4              Transport                                                     Transport

     3              Network                         Network                       Network

     2              Data Link                      Data Link                      Data Link

      1             Physical                        Physical                      Physical

                                       Interconnecting Medium

                       Figure 22.15X - The OSI Network Model with a Router
page 75




4.2.4 Control Network Issues

    A wide variety of networks are commercially available, and each has particular strengths and
weaknesses. The differences arise from their basic designs. One simple issue is the use of the net-
work to deliver power to the nodes. Some control networks will also supply enough power to
drive some sensors and simple devices. This can eliminate separate power supplies, but it can
reduce the data transmission rates on the network. The use of network taps or tees to connect to
the network cable is also important. Some taps or tees are simple ’passive’ electrical connections,
but others involve sophisticated ’active’ tees that are more costly, but allow longer networks.


    The transmission type determines the communication speed and noise immunity. The sim-
plest transmission method is baseband, where voltages are switched off and on to signal bit states.
This method is subject to noise, and must operate at lower speeds. RS-232 is an example of base-
band transmission. Carrierband transmission uses FSK (Frequency Shift Keying) that will switch
a signal between two frequencies to indicate a true or false bit. This technique is very similar to
FM (Frequency Modulation) radio where the frequency of the audio wave is transmitted by
changing the frequency of a carrier frequency about 100MHz. This method allows higher trans-
mission speeds, with reduced noise effects. Broadband networks transmit data over more than one
channel by using multiple carrier frequencies on the same wire. This is similar to sending many
cable television channels over the same wire. These networks can achieve very large transmission
speeds, and can also be used to guarantee real time network access.


    The bus network topology only uses a single transmission wire for all nodes. If all of the
nodes decide to send messages simultaneously, the messages would be corrupted (a collision
occurs). There are a variety of methods for dealing with network collisions, and arbitration.
       CSMA/CD (Collision Sense Multiple Access/Collision Detection) - if two nodes start
            talking and detect a collision then they will stop, wait a random time, and then start
            again.
       CSMA/BA (Collision Sense Multiple Access/Bitwise Arbitration) - if two nodes start
page 76


              talking at the same time the will stop and use their node addresses to determine
              which one goes first.
       Master-Slave - one device one the network is the master and is the only one that may start
              communication. slave devices will only respond to requests from the master.
       Token Passing - A token, or permission to talk, is passed sequentially around a network so
              that only one station may talk at a time.

    The token passing method is deterministic, but it may require that a node with an urgent mes-
sage wait to receive the token. The master-slave method will put a single machine in charge of
sending and receiving. This can be restrictive if multiple controllers are to exist on the same net-
work. The CSMA/CD and CSMA/BA methods will both allow nodes to talk when needed. But, as
the number of collisions increase the network performance degrades quickly.




4.2.5 Ethernet

    Ethernet has become the predominate networking format. Version I was released in 1980 by a
consortium of companies. In the 1980s various versions of ethernet frames were released. These
include Version II and Novell Networking (IEEE 802.3). Most modern ethernet cards will support
different types of frames.


    The ethernet frame is shown in Figure 20.21. The first six bytes are the destination address
for the message. If all of the bits in the bytes are set then any computer that receives the message
will read it. The first three bytes of the address are specific to the card manufacturer, and the
remaining bytes specify the remote address. The address is common for all versions of ethernet.
The source address specifies the message sender. The first three bytes are specific to the card
manufacturer. The remaining bytes include the source address. This is also identical in all ver-
sions of ethernet. The ’ethernet type’ identifies the frame as aVersion II ethernet packet if the
value is greater than 05DChex. The other ethernet types use these to bytes to indicate the datal-
ength. The ’data’ can be between 46 to 1500 bytes in length. The frame concludes with a ’check-
sum’ that will be used to verify that the data has been transmitted correctly. When the end of the
transmission is detected, the last four bytes are then used to verify that the frame was received
page 77


correctly.



             6 bytes                 destination address

             6 bytes                 source address

             2 bytes                 ethernet type

             46-1500 bytes           data

             4 bytes                 checksum


                             Figure 22.21 - Ethernet Version II Frame

    • TCP vs UDP




4.2.6 SLIP and PPP

    Ethernet connections are not always practical for computers at a distance, or when network-
ing hardware is not available. A common alternative is to use a serial connection, such as a tele-
phone modem. Network data packets are passed using a protocol such as Serial Line Internet
Protocol (SLIP) and Point to Point Protocol (PPP).


    At present the alternatives for data transfer are listed below. This is a short list, but it can be
expected to grow quickly over time.
        Phone lines with modem (dial up) - this runs at speeds up to 56Kbaud, with a peak data
                rate of about 3KB/sec. These are used for network connection that lasts from a few
                minutes to hours. This is very widespread and universally supported, but expect
                this 40 year old technology to be phased out over the next decade.
        Direct serial connection - this can be done with a direct connection between serial ports on
                two computers using SLIP or PPP. The peak rates can reach over 6KB/sec. This
                method can also be done using a low speed radio modem.
        Direct parallel connection - this is done by connecting the parallel ports on two computers
                together and using Parallel Line Interface Protocol (PLIP). Data rates approaching
                1MB/sec are possible.
        ISDN - Integrated Services Digital Network (ISDN) uses dedicated phone lines that
page 78


               require a special interface card. Data rates reach 56Kbaud, but lines can be added
               in parallel to increase the speed. These tend to be high cost and are less popular.
       DSL - Digital Subscriber Line (DSL) - This technology uses an existing residential phone
               line, but at frequencies above the audio range. The network connection is always
               active, but telephone usage can be permitted at any time. These have a faster data
               transfer rate than dial up connections, but still have a higher cost.
       Cable - These broadband networks provide a permanent network connection that uses
               existing cable television networks. Special networking hardware is required. These
               networks are notable because the download speeds is higher than the download
               speed.
       Satellite - These connections are available at a high cost and are suitable for remote loca-
               tions where other communications access is not possible.
       Fiber - Not available yet, but should be soon in high population areas. Expect very high
               speed access.




4.3 INTERNET

    The Internet is a collection of networking technologies, such as Ethernet, SLIP, PPP and oth-
ers that allows computers to communicate and exchange information. The concept of the Internet
began with ARPANET which was funded as a Department of Defense project in 197x. In 198x
the Internet was developed, and began to replace the ARPANET. By the late 1980s the Internet
was widespread between most universities, colleges, major companies and government agencies
around the world. Finally, the Internet hit widespread public usage by the mid 1990s. Today it is
the accepted defacto standard network in the world.


    Originally the Internet was used to exchange email and files. It was common to anonymously
log into a remote computer, with FTP, and upload and download files. In the early 1990s a number
of new applications were developed to make interaction with remote computers easier. For exam-
ple ’archie’ made it easy to search for files by names. ’wais’ and ’gopher’ were early predecessors
to ’mosiac’ which then lead to ’netscape’. At that time (about 1993) the face of the internet started
to change, thanks to the World Wide Web (WWW). Non-professional users of the internet started
to arrive through the America On-Line (AOL) service. This also coincided with the first major
case of ’spam’, where a legal firm mass mailed advertisements for immigration services. Finally,
by the mid 1990s microsoft stopped referring to the Internet as a ’fad’. Today, most people and
page 79


companies vie for an Internet presence.


    This section will outline some of the core concepts that are important when designing appli-
cations that use the Internet.




4.3.1 Computer Addresses

    Most users are familiar with text computer names, such as ’www.gvsu.edu’. But, these names
are only for convenience, and the same computer can have multiple names. Consider the example
below. The machine ’claymore.engineer.gvsu.edu’ can also be called with ’www.eod.gvsu.edu’.
In actuality, each computer on the network has a unique four number address. Both of the names
below refer to the same computer with the numerical address ’148.61.104.215’. The digits of the
address can range from 0 to 255.

        Machine Name:                       claymore.engineer.gvsu.edu
        Alternate Name:                     www.eod.gvsu.edu
        IP Number:                          148.61.104.215


    When a text computer name is supplied it is converted to a numerical address before network
access occurs. Consider the case where a computer name is typed into a web browser. The web
browser will then call another computer called a Domain Name Server (DNS). The DNS com-
puter has a database of local and remote computers names and numbers. It will convert the com-
puter name to a number, and then return it to the web browser. The web browser then uses the
computer number to connect to the named computer.


    The number has four parts. The first two digits ‘148.61’ indicate to all of the internet that the
computer is at ‘gvsu.edu’ (we actually pay a yearly fee to register this). The third number indi-
cates what LAN the computer is located on (Basically each sub-network has its own number).
Finally the last digit is specific to a machine. This addressing method makes it easy to direct net-
page 80


work traffic.


    There are different classes on networks. The largest is a class A, in which the entire network
begins with the same number such as ’148.’, allowing up the last three numbers to be used for
local network addresses. The next smaller network is class B, in which the first two numbers are
designated, for example ’148.61.’. A class C network specifies the first three digits, such as
’148’61.104.’, and can have up to 256 addresses. The ’netmask’ indicates how many computers
can be on a network. A common netmask is ’255.255.255.0’ which indicates the local network
can have up to 256 computers. A netmask of ’255.255.255.254’ would indicate that there are only
two computers on the network.


    When a packet of information is sent it passes through many computers between the sender
and receiver. Each of the computers is configured to know where the next computer is upstream
and downstream. The ’gateway’ is the computer on a local area network that passes a packet out
to the Internet. For example, if my computer address is 192.168.1.20, the gateway is probably
192.168.1.254. Any packets travelling to/from the Internet will travel through the gateway com-
puter.


    The current standard of four number network addresses is called IPV4. This addressing
scheme is ultimately limited, and so the address space is being expanded from four numbers to six
in the newer IPV6 standard. This standard also introduces some enhancements for security and
other applications.




4.3.2 Computer Ports

    On the network information is sent in packets. These are addressed to a computer using the
IPV4 address, but they also include a port number between 0 and 65535. The port number indi-
cates what service they are trying to access. In general the first 1000 are allocated to well known
and agreed upon services, such as email and web serving. Other port numbers in the low thou-
page 81


sands are for less common network services, and numbers in the high thousands are used by user
programs. An abbreviated list of common network ports is given below. On any computer the
may or may not be active.
       23? 24? - telnet
       xxx - ftp
       25 - smtp
       80 - http
       110 - pop3
       118 - sqlserv
       143 - imap
       515 - printer
       520 - router
       1433 - mssql
       26000 - quake



4.3.2.1 - Mail Transfer Protocols

    Sending and receiving email involves different protocols. Mail is sent using a protocol called
Simple Mail Transfer Protocol (SMTP). Mail is retrieved with Post Office Protocol (POP) or
Internet Mail Access Protocol (IMAP). All of these protocols are handled with programs listening
on different ports on the server.




4.3.2.2 - FTP - File Transfer Protocol

    File Transfer Protocol (FTP) is a very old and well supported method for transferring files
between computers. Advanced users will often use it with typed commands, but there are also
hundreds of graphical clients that hide the typed commands.




4.3.2.3 - HTTP - Hypertext Transfer Protocol

    Hypertext Transfer Protocol (HTTP) is used for retrieving web pages from remote sites. It
uses simple commands to get text files from the remote computer.
page 82




4.3.3 Security

    In normal situations the main focus of security is to protect access to data systems and the
information they contain. When dealing with automated systems security issues could lead to
major economic losses through damaged equipment, or even loss of life!


    Security violations normally come from disgruntled employees, but recently anonymous
crackers (incorrectly called hackers in the press) have become a significant threat. Modern operat-
ing systems and software are often designed with some security features. Most assume that there
is limited physical access to the computer. The most elaborate security system doesn’t work if the
the hard drive is stolen. The best strategy to keep a system safe is to understand how hackers can
break into a computer. What follows are the most common type of attacks.


    Social engineering involves the use of people and trust to get access to a computer. This often
involves understanding the psychology of trust and exploiting it to get passwords and other infor-
mation. A common ruse to get an employee password is as follows. Call an employee in a com-
pany likely to have a high level of software access, such as a secretary of a high level executive.
Claim to be from the IT (Information Technology) department, talk for a while and then ask for
help solving a problem with the password account. When agreement is obtained, ask the secretary
to change the account password, and let you know what the new one is.


    Crackers will also practice ’surfing’. Shoulder surfing involves peeking over the shoulder of
users as they enter passwords. Garbage surfing involves taking a garbage can before being emp-
tied and searching the contents for useful information, such as credit card numbers. Cubicle surf-
ing involves checking for posted passwords around computers. Some users hate to remember
passwords and will post them for all to see (or sometimes taped to the bottom of the keyboard). To
protect against these types of problems the following strategies help,
       • inform users that their passwords are to be given to NOBODY, especially unseen.
page 83


       • allow users to select their own password, they are more likely to remember them, and not
               write them down. Assigning cryptic passwords and changing them often ensures
               that even the most advanced users will write it down somewhere.
       • check user passwords for simplicity. Problem passwords include a single word in the dic-
               tionary, a users first/last name, a first/name followed by ’1’, common jargon and
               popular phrases, curse words, etc.
       • watch the activity of simpler users. One easy way to do this is with the command ’last |
               more’. This will show a list of users, when they logged in, and how they logged in.
               Look for irregularities, such as a low end user who suddenly starts using telnet and
               ftp.
       • set up access policies for users and equipment. Keep unauthorized people away from
               secure computers and work areas.

    The advent of the Internet has made anonymous crackers more common. Most computers can
be accessed from the Internet, even if indirectly. Two major threats include a denial of service
(DOS) attack and a break-in. DOS attacks involve flooding a site with irregular network packets,
sent from other computers (that were victims of break-ins). The outcome of this attack is that net-
work access slows so much it becomes unusable.


    Break-ins occur when a security hole is found in the operating system, or when a virus or tro-
jan horse is downloaded by a user. Security holes in an operating system often involve network
services, such as ftp and mail servers. When planning to break into a computer most crackers will
first identify which services are active on a computer. After this they will try to exploit known
vulnerabilities to get access to the computer. After breaking in they will try to install software so
that they will have future access to the computer, and hide their presence. Most crackers will
return to the computer they have broken into numerous times until discovered.


    Viruses are designed to spread indesciminately and infect computers. Once infected the virus
often lays dormant for a while before executing some mission such as spreading to other pro-
grams/files, displaying a message, or erasing a hard drive. Like real viruses, the damaging ones
often burn-out quickly, the milder ones spread and become a nuisance. Previously these were only
spread through downloaded programs, and they could only be activated by somebody running
software. Recently viruses have started to exploit holes in consumer oriented software. In simple
terms, the same features that make the software easy to use also make it a security threat. This
means that users can get viruses from an email message without reading it. Trojan horses are pro-
page 84


grams that actually do something useful (unlike viruses). but they include some ’unwanted
extras’. These might give a cracker access to the system running the trojan horse program, or
worse. These can be added to trusted software by modifying the source code of a useful software
package, and then releasing it for use. Administrators might download and install the software
believing it is the regular version, but instead install the security holes. These security problems
can be lessened with the following strategies.
        • Networking hardware is available to reduce or eliminate the effects of DOS attacks, this
               should be considered on any critical internet sites.
        • Security holes can be closed by applying software patches are made available when vul-
               nerabilities are discovered. These should be downloaded and applied whenever
               available. Security advisories are available from (www.cert.net?) and
               (www.bugtraq.org?).
        • Firewalls can be used to shield critical, or vulnerable computers from outside access.
        • To avoid viruses (mostly for microsoft computers) - Don’t download and run programs
               from untrusted sources. Use virus checking software, and keep it updated.
        • Don’t use servers for tasks other than serving, especially with convenience software,
               such as mail readers.
        • Avoid trojan horses by only downloading software from a trusted site.

    When breaking into a computer the goal is to obtain the ’root’ or ’Administrator’ account. If
a cracker ever gets a few minutes at the keyboard logged in as ’root’ or ’Administrator’, they can
give themselves easy access. System administrators should not leave their account logged in with-
out an automatic screen lock function. The administrator should also track the usage of their
account to look for any irregular activities.




4.3.3.1 - Firewalls and IP Masquerading

    A firewall is a single computer that acts as a point of contact between an untrusted network
(the Internet) and a secure network. The firewall computer will have two or more network cards
that it will monitor differently. Generally it is set up to allow traffic to pass from the internal net-
work to the outside world with greater freedom than it allows network traffic to enter the secure
network. This allows computers behind a firewall to get access to outside computers. Any
requests they make are mirrored to outside computers, who may then respond to the requests.
Requests from computers behind the firewall all seem to come from the firewall itself. There is no
page 85


way for an outside computer to access a computer behind the firewall.




4.4 FORMATS

    Formats are different from protocols, although they are often confused. Protocols are used for
transferring information, but formats define the information format. For example, http is a proto-
col often used for transferring files. The most common file format transferred with http is html,
although it can transfer other types of files.




4.4.1 HTML

    Hyper Text Markup Language (HTML) is the defacto standard format for information on the
World Wide Web (WWW). It basically allows text to be generally formatted with embedded
images. When viewed, the display is adjusted to suit the browser. These documents also include
hypertext links that allow a user to go to another HTML page, or download a file by ’clicking’ on
linked text. Recently there have been many additions that allow more control over the ’look-and-
feel’, but result in larger files and less portability. HTML files can be created with programs, or
edited by hand.


    A simple HTML file is shown in Figure X.X. It uses tags to define the beginning and end of
definitions. The entire document begins and ends with the tags ’<HTML>’ and ’</HTML>’. The
body of the document begins and ends with ’<BODY>’ and ’</BODY>’. Highlighted text is
between ’<Hx>’ and ’</Hx>’, where ’x’ varies from ’1’ for the boldest to ’5’ to the lightest. Lists
can be defined with the tags ’<UL>’ and ’</UL>’, and each point in the list begins with ’<LI>’.
page 86




    HTML File:           <HTML>
                                  <BODY>
                                           <H1>Title</H1>
                                           <P>This is a list</P>
                                           <UL>
                                                    <LI>One
                                                    <LI>Two
                                           </UL>
                               </BODY>
                         </HTML>




    The Output:           Title
                          This is a list
                              • One
                              • Two


    Figure X.X - A Simple HTML File and The Output


    The file in Figure X.X add a few features to the previous example. The first part is a header
section that defines a title of the document. This title will appear on the top bar of the browser
window. An image will appear after the heading and before the list, the image displayed is called
’test.gif’. The two items in the list now have hypertext links. The first is to a file called
’other.html’, the second is to another web site ’www.cnn.com’.
page 87




    <HTML>
             <HEAD>
                       <TITLE>A Sample Page</TITLE>
             </HEAD>
             <BODY>
                       <H1>Title</H1>
                       <P>This is a list</P>
                       <IMG SRC="test.gif">
                       <UL>
                                <LI><A HREF="another.html">One</A>
                                <LI><A HREF="http://www.cnn.com">Two</A>
                       </UL>
          </BODY>
    </HTML>




    Figure X.X - A More Advanced HTML File




4.4.2 URLs




    • In HTML documents we need to refer to resources. To do this we use a label to identify the
type of resource, followed by a location.


    • Universal Resource Locators (URLs)
    - http:WEB_SITE_NAME
    - ftp:FTP_SITE_NAME
    - mailto:USER@MAIL_SERVER
    - news:NEWSGROUP_NAME
page 88




4.4.3 Encryption

• Allows some degree of privacy, but this is not guaranteed.

• Basically, if you have something you don’t want seen, don’t do it on the computer.



4.4.4 Clients and Servers

• Some computers are set up to serve others as centers of activity, sort of like a campus library.
   Other computers are set up only as users, like bookshelves in a closed office. The server is
   open to all, while the private bookshelf has very limited access.

• A computer server will answer requests from other computers. These requests may be,
       - to get/put files with FTP
       - to send email
       - to provide web pages

• A client does not answer requests.

• Both clients and servers can generate requests.

• Any computer that is connected to the network Client or Server must be able to generate
   requests. You can see this as the Servers have more capabilities than the Clients.

• Microsoft and Apple computers have limited server capabilities, while unix and other computer
   types generally have more.
       Windows 3.1 - No client or server support without special software
       Windows 95 - No server support without special software
       Windows NT - Limited server support with special versions
       MacOS - Some server support with special software
       Unix - Both client and server models built in

• In general you are best advised to use the main campus servers. But in some cases the extra
    effort to set up and maintain your own server may also be useful.

• To set up your own server machine you might,
        1. Purchase a computer and network card. A Pentium class machine will actually provide
               more than enough power for a small web site.
        2. Purchase of copy of Windows NT server version.
        3. Choose a name for your computer that is easy to remember. An example is ‘artsite’.
page 89


       4. Call the Information technology people on campus, and request an IP address. Also ask
               for the gateway number, netmask, and nameserver numbers. They will add your
               machine to the campus DNS so that others may find it by name (the number will
               always work if chosen properly).
       5. Connect the computer to the network, then turn it on.
       6. Install Windows NT, and when asked provide the network information. Indicate that
               web serving will be permitted.
       7. Modify web pages as required.



4.4.5 Java

• This is a programming language that is supported on most Internet based computers.

• These programs will run on any computer - there is no need for a Mac, PC and Unix version.

• Most users don’t need to program in Java, but the results can be used in your web pages



4.4.6 Javascript

• Simple programs can be written as part of an html file that will add abilities to the HTML page.



4.4.7 CGI

• CGI (Common Gateway Interface) is a very popular technique to allow the html page on the cli-
   ent to run programs on the server.

• Typical examples of these include,
       - counters
       - feedback forms
       - information requests




4.5 NETWORKING IN LINUX
page 90


    Configuration files are under /etc
    Recompile kernel in some cases, such as a firewall. or new hardware
    Loadable modules
    DHCP versus static IP




    Most modern versions of Linux simplify hardware detection and setup. The steps below can
help perform the basic operations, or find problems.
    A. Installing a normal ethernet network connection:
       1. During the installation process you will be asked for network parameters.
       2. Enter a unique name for the machine and the network name.
       3. (for DHCP) All that should be required is a setting for DHCP.
       3. (for a static IP) You will need to enter the static IP number for the machine, as well as a
                netmask and gateway. If you are connecting to another network you can get these
                from a network administrator. If you are connecting your own network (not on the
                Internet) you can simply pick values like those below. Note that you need some
                sort of network router with an IP address of 192.168.1.254 for this to work.
                IP address: 192.168.1.20
                netmask: 255.255.255.0
                Gateway: 192.168.1.254
                nameserver: none
    B. Troubleshooting an ethernet connection to the Internet,
       1. Check to see if the network card is recognized with ’more /proc/modules’ The card
                should be in the list. If not the kernel module must be installed.
       2. Check to see if the network is setup with ifconfig. You should see ’eth0’ or something
                similar. If it is not setup, the network parameters must be checked.
       3. Check to see if the network is connected properly with ping to the local gateway, or
                another local machine - use the IP number, not the name. For example, ’ping
                148.61.104.254’. If this fails the gateway or broadcast addresses are probably
                incorrect.
       4. Check the connection to the outside with a ping such as ’ping 148.61.1.10’. If this is not
                allowed there is probably a problem with the outside connection
       5. Verify that the nameserver is working alright with a ping to a named machine such as,
                ’ping www.linux.org’.
       6. If all of these things work the network connection should be alright.
    C. Installing a dialup connection
       1. During the installation make sure that the location of your modem is correctly identi-
              fied. Note: Winmodems are very popular because of their low cost, but there are
              very few Linux drivers. But... you are advised to spend the money for a non-Win-
              modem anyway, they are more reliable and they don’t use your computers
page 91


              resources.
       2.
    D. Troubleshooting a dialup connection
       1. Use a terminal program to dial the Internet service provider’s number manually. If you
               don’t get a response there is a problem with the modem installation.
       2. After connected try providing your login ID and password and see if you get in. Expect
               to see garbage after this. If login is refused you need to check the user ID and pass-
               word again.
       3. Check ...
    E. Setting up a firewall (this requires some work)
        1. To set up a firewall the kernel must be recompiled to include network options such as
                multicasting, and firewall services.
                [KERNEL OPTIONS]
        2. Shut down the computer and add a second network card in the machine and reboot.
        3. Check to see if the card is recognized with ’more /proc/modules’. Both ethernet cards
                should be listed. If not you will need to edit the network startup files. These are
                normally in ’/etc/...’ or for slackware ’/etc/rc.d’. An example file follows. Reboot
                and check for both network cards again.
                [NETWORK CONFIG FILES]
        4. Use ’ipchains’ to add services to pass, and modify the ’hosts.allow’ and ’hosts.deny’
                files to control access.
                [ipchains file declarations]
                [hosts.allow file]
                [hosts.deny file]




4.5.1 Network Programming in Linux

    The following listings show network usage in Linux. The general method of network connec-
tion is different for servers and clients.


    For servers.....




    For clients....



Listing X.1 - network_io.cpp
page 92




#include "network_io.h"

#include <sys/poll.h>
#include <sys/ioctl.h>
#include <linux/tcp.h>

#include   <stdio.h>
#include   <string.h>
#include   <unistd.h>
#include   <fcntl.h>


network_io::network_io(){
      type = _READ;
      level = 0;
}


network_io::~network_io(){
      if(type == _READ){
                if(level > 1){
                         if(level > 2){
                                  end_read_connection();
                         }
                         deinit_read();
                }
      } else if (type == _WRITE){

      }
}


int network_io::set_remote_host(char *_host_name, int host_socket){
      static int         error;
      static int         nm_a,
                                   nm_b,
                                   nm_c,
                                   nm_d;
      struct hostent*hp;
      unsigned charaddress[4];

      error = NO_ERROR;
      strcpy(host_name, _host_name);
      host_socket_number = host_socket;

      // Set up server descriptor, get host reference and error trap
      write_connection.sin_family = AF_INET;
      if((host_name[0] > ’9’) ||(host_name[0]<’0’)){
               hp = gethostbyname(host_name);
      } else {
               sscanf(host_name, "%d.%d.%d.%d",
                         &nm_a, &nm_b, &nm_c, &nm_d);
               address[0] = (unsigned char)(nm_a);
               address[1] = (unsigned char)(nm_b);
               address[2] = (unsigned char)(nm_c);
               address[3] = (unsigned char)(nm_d);
               hp = gethostbyaddr((char *)address, 4, AF_INET);
      }

      if(hp != 0){
               /* complete descriptor set up. */
               bcopy((char *)hp->h_addr,
page 93


                          (char *)&(write_connection.sin_addr),
                          hp->h_length);
      } else {
                 error_log(MINOR, "ERROR: unknown network host");
                 error = ERROR;
      }

      return error;
}


int network_io::set_local_host(int socket_num){
      static int error;

      error = NO_ERROR;
      socket_number = socket_num;

      return error;
}




int network_io::writer(char *string){
      static int         error;

      error = NO_ERROR;

      // Open a new socket for the write, and check for errors.
      error = init_write();
      if(error == NO_ERROR) error = open_write_connection();
      if(error == NO_ERROR) error = write_to_connection(string);
      if(error == NO_ERROR) error = end_write_connection();
      if(deinit_write() == ERROR) error = ERROR;

      return(error);
}




int network_io::reader(char *buf, int length){
      static interror;             // Error return variable

      error = NO_ERROR;

      // Wait for a socket connection request, then get its reference.
      buf[0] = 0;
      if(wait_read_connection() == NO_ERROR){
               if(read_from_connection(buf, length) == ERROR){
               }
               // Close socket connection to remote write client.
               end_read_connection();
      }

      return(error);
}


int network_io::init_write(){
      static int         error;
      struct hostent     *gethostbyname();

      error = NO_ERROR;
      /* Open a new socket for the write, and check for errors. */
      if((rw_socket = socket(AF_INET, SOCK_STREAM, 0)) >= 0){
page 94


                    write_connection.sin_port = htons(host_socket_number);
         } else {
                    error_log(MINOR, "ERROR: opening stream socket");
                    error = ERROR;
         }

         return error;
   }


   int network_io::open_write_connection(){
         static int error;

         error = NO_ERROR;
         if(connect(rw_socket, (struct sockaddr *) &(write_connection), sizeof(write_connection))
< 0){
                    error = ERROR;
                    error_log(MINOR, "ERROR: Connecting stream Socket");
         }

         return error;
   }


   int network_io::write_to_connection(char *text){
         static int error;

         error = NO_ERROR;
         if(write(rw_socket, text, strlen(text) /* +1 */) < 0){
                  error_log(MINOR, "ERROR: writing on stream socket");
                  error = ERROR;
         }

         return error;
   }


   int network_io::write_stuff_done(){
         int       error;

         error = NO_ERROR;
         return error;
   }


   int network_io::check_connection(){
         int       error;
         int       count;
         struct pollfd ufds;

         error = NO_ERROR;
         ufds.fd = rw_socket;
         ufds.events = POLLOUT | POLLIN | POLLPRI | POLLERR | POLLHUP | POLLNVAL;
         count = poll(&ufds, 1, 0);
         if((ufds.revents & 16) != 0) error = ERROR;

         return error;
   }


   int network_io::end_write_connection(){
         static int error;

         error = NO_ERROR;
page 95


            return error;
      }


      int network_io::deinit_write(){
            static int error;

            error = NO_ERROR;
            close(rw_socket);
            rw_socket = ANY;

            return error;
      }


      int network_io::init_read(){
            static int                  error;    // low level socket number
            unsigned                    length; // temporary work variable
            static struct sockaddr_inserver; // read socket descriptor
            static struct hostent*hp;
            char                        text[100];

            // Open internet socket, and check for error.
            error = ERROR;
            gethostname(text, 100);           /* who are we? */
            hp = gethostbyname(text);
            if((hp != NULL) && (read_socket = socket(AF_INET, SOCK_STREAM, 0)) >= 0){
                     // Set up server descriptor for binding name.
                     memset(&server, 0, sizeof(struct sockaddr_in));
                     server.sin_family = hp->h_addrtype;
                     server.sin_port = htons(socket_number);
                     // Bind the socket, and check for error.
                     level = 1;
                     int flag = 1;
                     setsockopt(read_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&flag, sizeof(int));
                     if(bind(read_socket, (struct sockaddr *)&server, sizeof(struct sockaddr_in)) >=
0){

                                  // Check for valid socket binding
                                  length = sizeof(server);
                                  if(getsockname(read_socket, (struct sockaddr *)&server, &length) >=
0){
                                             error = NO_ERROR;
                                             // Set up variables for success
                                             // Zero because anything higher would allow
                                             // messages to arrive out of sequence.
                                             listen(read_socket, 0);
                                  } else {
                                             error_log(MINOR, "ERROR: getting socket name");
                                  }
                       } else {
                                  error_log(MINOR, "ERROR: binding stream socket");
                       }
            } else {
                       error_log(MINOR, "ERROR: opening stream socket");
            }

            return(error);
      }


      int network_io::read_stuff_waiting(){
            int       error,
                      count;
            struct pollfd ufds;
page 96



      error = ERROR;
      ufds.fd = read_socket;
      ufds.events = POLLIN | POLLPRI | POLLOUT;
      count = poll(&ufds, 1, 0);
      if((ufds.revents & 1) > 0){
               error = NO_ERROR;
      }

      return error;
}


int network_io::wait_read_connection(){
      static int error;
      unsigned size;
      static struct sockaddr addr;

      error = NO_ERROR;
      size = sizeof(struct sockaddr);
      fcntl(read_socket, F_SETFL, O_NONBLOCK);
      rw_socket = accept(read_socket, &addr, &size);

      level = 2;
      if(rw_socket < 0){
               error = ERROR;
               // error_log("ERROR: warning:accept");
      }

      return error;
}


int network_io::read_from_connection(char *buf, int length){
      int       error;
      int       len;

      error = NO_ERROR;
      // Empty input buffer
      buf[0] = 0;
      // Read string into buffer from socket
      fcntl(rw_socket, F_SETFL, O_NONBLOCK);
      len = read(rw_socket, buf, length);
      if(len < 0){
               // error_log("ERROR: reading stream message");
               // error = ERROR;
               if(errno != 11){
                         printf("errno=%d ", errno);
               }
      } else {
               buf[len] = 0;
      }

      return error;
}


int network_io::end_read_connection(){
      int       error;
      int       a;

      error = NO_ERROR;
      a = close(rw_socket);
      level = 1;
page 97


         return error;
   }


   int network_io::deinit_read(){
         int       error;
         int       a;

         error = NO_ERROR;
         a = close(read_socket);
         level = 0;

         return error;
   }


   char *network_io::get_address(){
          static char        work[MAXIMUM_HOST_NAME_LENGTH];
          struct sockaddr_inaddress;
          int                          i,
                                       addr[4];
          long                         int_address;
   #ifndef SGI
          // Sun Version
          get_myaddress(&address);
          int_address = address.sin_addr.s_addr;
   #else
          // SGI Version
          int_address = gethostid();
   #endif
          // SUN & SGI version
          for(i = 0; i < 4; i++){
                   addr[i]=int_address & 0xFF;
                   int_address >>= 8;
          }
   #ifdef OTHER_UNIX
          sprintf(work, "%d.%d.%d.%d",
                   (int)addr[3], (int)addr[2], (int)addr[1], (int)addr[0]);
   #else
          // This is for linux
          sprintf(work, "%d.%d.%d.%d",
                   (int)addr[0], (int)addr[1], (int)addr[2], (int)addr[3]);
   #endif
          return work;
   }


   char *network_io::get_remote_client(){
         staticchar         work[100];
         struct sockaddr    address;
         socklen_t          len;

         len = sizeof(address);
         if(getpeername(rw_socket, &address, &len) == 0){
                   sprintf(work, "%u.%u.%u.%u", address.sa_data[2], address.sa_data[3],
address.sa_data[4], address.sa_data[5]);
                   // printf("Got address [%s]n", work);
                   //strcpy(work, address);
         } else {
                   strcpy(work, "unknown network address");
         }

         return work;
   }
page 98




Listing X.2 - network_io.h

  #ifndef _NETWORK_IO
  #define _NETWORK_IO


  #include    <errno.h>
  #include    <linux/socket.h>
  #include    <sys/types.h>
  #include    <netdb.h>
  #include    <rpc/rpc.h>
  #include    <unistd.h>


  #define ANY       0                     // Indicates no socket number prechosen


  #define         MAXIMUM_HOST_NAME_LENGTH100
  class network_io{
        public:
                  int                socket_number;
                  int                rw_socket;
                  // int             read_connection;
                  char     host_name[MAXIMUM_HOST_NAME_LENGTH];
                  int                host_socket_number;
                  int                read_socket;
                  struct sockaddr_inwrite_connection;
                  // char incoming_string[MAXIMUM_STRING_SIZE];

                    int                   type;
                    int                   level;
                    #define      _READ    200
                    #define      _WRITE   201
                                          network_io();
                                          ~network_io();
                    int                   set_remote_host(char*, int);
                    int                   set_local_host(int);
                    int                   reader(char*, int);
                    int                   writer(char*);
                    int                   init_write();
                    int                   open_write_connection();
                    int                   write_to_connection(char*);
                    // int                write_to_read_connection(char*);
                    int                   end_write_connection();
                    int                   deinit_write();
                    int                   init_read();
                    int                   wait_read_connection();
                    int                   read_from_connection(char*, int);
                    // int                read_from_write_connection(char*, int);
                    int                   end_read_connection();
                    int                   deinit_read();
                    int                   read_stuff_waiting();
                    int                   write_stuff_done();
                    int                   check_connection();
                    char*        get_remote_client();

                    char         *get_address();
         };
page 99



  #endif




Listing X.3 - network.cpp


  #include "../network_io/network_io.h"
  #include <time.h>


  network_io *network;
  int             mode;
  char            *params;
  char            received_temp[200];
  int             connect_flag;
  time_t          now_time;
  time_t          last_time;
  int             timeout;


  int main(){
        timeout = 5;            // the default timeout

           return 1;
  }


  int deinit(){
        int            error;

           error = NO_ERROR;
           if(network != NULL) delete network;

           return error;
  }


  int process_command();
  int check_network();


  int step(){
        int            error;

           error = NO_ERROR;
           error = check_network();
           if(error == NO_ERROR) error = process_command();

           return error;
  }




  int check_network(){
        int       error;

           error = NO_ERROR;

           if(*state == WAITINGFORCONNECTION){
                    if(connect_flag == TRUE){
page 100


                             if(mode == LISTENER){
                                      if(network->wait_read_connection() == NO_ERROR){
                                                char     text[200];
                                                *state = CONNECTIONESTABLISHED;
                                                *received_flag = FALSE;
                                                *send_flag = FALSE;
                                                sprintf(text, "Got a connection from %s", network-
>get_remote_client());
                                                error_log(WARNING, text);
                                                time(&last_time);
                                      }
                             } else if(mode == TALKER){
                                      if(network->open_write_connection() == NO_ERROR){
                                                *state = CONNECTIONESTABLISHED;
                                                *received_flag = FALSE;
                                                *send_flag = FALSE;
                                                time(&last_time);
                                      }
                             }
                   }
         } else if(*state == CONNECTIONESTABLISHED){
                   if(*send_flag == TRUE){
                            network->write_to_connection(send_buf);
                            // printf("Sending String [%s]n", send_buf);
                            send_buf[0] = 0;
                            *send_flag = FALSE;
                            // time(&last_time); // You can keep the connection alive by writing
                            // but this doesn’t guarantee that the remote client is still there
                   }
                   if(*received_flag == FALSE){
                            if(network->read_from_connection(received_temp, 199) != ERROR){
                                      if(strlen(received_temp) > 0){
                                                strcpy(received, received_temp);
                                                *received_flag = TRUE;
                                                time(&last_time);
                                                // printf("Got String [%s]n", received);
                                      }
                            }
                   }
                   time(&now_time);
                   if((network->check_connection() == ERROR) || ((mode == LISTENER) &&
(difftime(now_time, last_time) > timeout))){
                            if(mode == LISTENER){
                                      network->end_read_connection();
                            } else if(mode == TALKER){
                                      network->end_write_connection();
                            }
                            *state = WAITINGFORCONNECTION;
                            connect_flag = FALSE;
                   }
         }

         return error;
   }




   int process_command(){
         int       error;
         int       i, len;
         int       port;

         error = NO_ERROR;
         if(*change_lock == TRUE){
                  if(*command == INITIALIZE){
page 101


                              if(*state == NOTINITIALIZED){
                                       if(mode == LISTENER){
                                                 port = atoi(params);
                                                 if(port > 0){
                                                          network = new network_io();
                                                          network->set_local_host(port);
                                                          network->init_read();
                                                          //now ready to listen
                                                          *state = WAITINGFORCONNECTION;
                                                          connect_flag = FALSE;
                                                 } else {
                                                          error_log(MINOR, "Parameter did not hold
a valid port");
                                                            *error_flag = ERROR;
                                                  }
                                         } else if(mode == TALKER){
                                                  len = strlen(params);
                                                  for(i = 0; i < len; i++){
                                                            if(params[i] == ’:’){
                                                                     params[i] = 0;
                                                                     port = atoi(&(params[i+1]));
                                                                     break;
                                                            }
                                                  }
                                                  if((i < len) && (port > 0)){
                                                            network = new network_io();
                                                            network->set_remote_host(params, port);
                                                            network->init_write();
                                                            *state = WAITINGFORCONNECTION;
                                                            connect_flag = FALSE;
                                                  } else {
                                                            error_log(MINOR, "Address string was not
properly formed");
                                                             *error_flag = ERROR;
                                                    }
                                         } else {
                                                    error_log(MINOR, "ERROR: Mode not defined yet");
                                                    *error_flag = ERROR;
                                         }
                              } else {
                                         error_log(MINOR, "Network talker initialize command in wrong
state");
                                        *error_flag = ERROR;
                              }
                     } else if(*command == CONNECT){
                              if(*state == WAITINGFORCONNECTION){
                                        connect_flag = TRUE;
                              }
                     } else if(*command == DISCONNECT){
                              if(*state == CONNECTIONESTABLISHED){
                                        if(mode == TALKER){
                                                 network->end_write_connection();
                                        } else if (mode == LISTENER){
                                                 network->end_read_connection();
                                        }
                                        *state = WAITINGFORCONNECTION;
                                        connect_flag = FALSE;
                              } else {
                                        error_log(MINOR, "Cannot disconnect network unless
connected");
                                        *error_flag = ERROR;
                              }
                     } else if(*command == UNINITIALIZE){
                              if(*state == WAITINGFORCONNECTION){
                                        if(mode == TALKER){
page 102


                                                   network->deinit_write();
                                          } else if (mode == LISTENER){
                                                   network->deinit_read();
                                          }
                                          delete network;
                                          network = NULL;
                                          *state = NOTINITIALIZED;
                               } else {
                                          error_log(MINOR, "Cannot uninitialize network unless
waitingforconnection");
                                       *error_flag = ERROR;
                             }
                    } else if(*command == SET){
                             if(*operand1 == MODE){
                                       if(*state == NOTINITIALIZED){
                                                mode = *operand2;
                                       } else {
                                                error_log(MINOR, "Can’t set network mode after
initialization");
                                                  *error_flag = ERROR;
                                        }
                               } else if(*operand1 == PARAM){
                                        if(*state == NOTINITIALIZED){
                                                  if(params != NULL) delete params;
                                                  params = new char[strlen(operand3)+1];
                                                  strcpy(params, operand3);
                                        } else {
                                                  error_log(MINOR, "Can’t set network parameters, in
wrong state");
                                                  *error_flag = ERROR;
                                        }
                               } else if(*operand1 == TIMEOUT){
                                        timeout = *operand2;
                               } else {
                                        error_log(MINOR, "Network SET type not recognized");
                                        *change_lock = FALSE;
                                        *error_flag = ERROR;
                               }
                    } else {
                               error_log(MINOR, "Network command not recognized");
                               *error_flag = ERROR;
                    }
           }
           *change_lock = FALSE;

           return error;
   }




4.6 DESIGN CASES

       Consider the case of the network
page 103




4.7 SUMMARY

       • Networks come in a variety of topologies, but buses are most common on factory floors.
       • The OSI model can help when describing network related hardware and software.
       • Networks can be connected with a variety of routers, bridges, gateways, etc.
       • Ethernet is common, and can be used for high speed communication.
       • The internet can be use to monitor and control shop floor activities.




4.8 PRACTICE PROBLEMS

1. Explain why networks are important in manufacturing controls.

(ans. These networks allow us to pass data between devices so that individually controlled sys-
  tems can be integrated into a more complex manufacturing facility. An example might be a
  serial connection to a PLC so that SPC data can be collected as product is made, or recipes
  downloaded as they are needed.)

2. Is the OSI model able to describe all networked systems?

(ans. The OSI model is just a model, so it can be used to describe parts of systems, and what their
  functions are. When used to describe actual networking hardware and software, the parts may
  only apply to one or two layers. Some parts may implement all of the layers in the model.)

3. What are the different methods for resolving collisions on a bus network?

(ans. When more than one client tries to start talking simultaneously on a bus network they inter-
  fere, this is called a collision. When this occurs they both stop, and will wait a period of time
  before starting again. If they both wait different amounts of time the next one to start talking
  will get priority, and the other will have to wait. With CSMA/CD the clients wait a random
  amount of time. With CSMA/BA the clients wait based upon their network address, so their pri-
  ority is related to their network address. Other networking methods prevent collisions by limit-
  ing communications. Master-slave networks require that client do not less talk, unless they are
  responding to a request from a master machine. Token passing only permits the holder of the
  token to talk.)
page 104


4.9 LABORATORY - NETWORKING

Purpose: To expose you to the architecture and components of a modern computer network.

Objectives: To be able to set up a switch and computers to communicate over an Intranet network.

Background:

       Computers can be connected via a network. At a minimum this requires a network card in
            at least two computers and a connecting cable between them. These computers can
            then pass packets of information back and forth for basic communication. This
            type of connection is commonly used by people playing games such as Quake at
            home. A more mature network, like that found in a factory, must be more sophisto-
            cated.

       The most fundamental concept in a network is the data packets and the protocol for
              exchanging them. The current Internet protocol is called IPV4 (this will be
              replaced by IPV6 in the near future). In this protocol each client on a network has a
              4 byte (0-255) address, normally shown in the form ‘aaa.bbb.ccc.ddd’. In our case
              the university is a ‘class B’, so it owns all addresses that start with
              ‘148.61.ccc.ddd’. Most engineering students use a ‘class C’ network with the
              addresses ‘148.61.104.ddd’. In theory there are up to 256 clients on the engineer-
              ing network. In practice some of these addresses are used for network housekeep-
              ing. For example the following addresses are used,
       148.61.104.1 - this is the router/switch to other networks
       148.61.104.254 - this is the gateway to other networks

       If a network address is not used, it can be used by a normal network device, such as a com-
               puter or printer. There are two ways to assign these statically or dynamically. In a
               static connection the address can only be used by one machine. In a dynamic con-
               nection the addresses are assigned and release semi-randomly to network clients as
               the connect and disconnect from the network. Static IP addresses are primarily
               designed for computers that are always on, and are acting as servers on the net-
               work. Dynamic IP addresses are primarily used for computers that are only clients
               on the network. Some examples of static IP addresses on the network are:
       148.61.104.215 - claymore.engineer.gvsu.edu
       148.61.104.226 - excalibur.engineer.gvsu.edu
       148.61.104.??? - falcon.engineer.gvsu.edu
       etc..

       Most computers on the network are named, such as ‘gvsu.edu’. When a user enters this
             name into the computer, it must be converted to a network number. This is done by
             a ‘domain name server’ (DNS). There are two DNS servers at GVSU (148.61.1.10
             and 148.61.1.15). These servers keep all of the names for computers at GVSU, and
             also provide links to computers at other sites so that their names and numbers can
page 105


               also be searched.

       Although the engineering student network is ‘148.61.104.ddd’, it is actually a collection
             of smaller networks (sub-nets). The smaller networks are connected together with
             network devices called switches/hubs/routers. These are basically small computers
             with multiple network connections (often 24). Each computer is connected to the
             hub. The hub then looks at each network packet coming from a computer. If it is
             going to another computer connected to the same hub, it will be sent there directly.
             Otherwise it is sent ‘up-stream’ to a router that will send it to another sub-net if it
             is available, or up upstream again. In our lab we will use a Linksys 10/100 Man-
             aged 24-Port GigaSwitch (EG24M).

       The Switch in the lab is used to connect computers together, and connect to a network
             gateway. ....

               The server for the lab is.....
               Network Components:
               Lab Server - Claymore
               Dell Poweredge 1300 Server
               Intel Pro/100 network card (internet side)
               3Com 590 network card (infranet side)
               Adaptec SCSI card 2940U2W (2 cards) for SCSI hard disks
               Tape drive -
               Uninterruptable Power Supply - APC Smart-UPS 120V OL103

       Firewall....



4.9.1 Prelab

1. Find and read the user manual for the Linksys 10/100 Managed 24-Port GigaSwitch (EG24M).
   http://www.linksys.com

2. At a windows computer look at the settings for the network. On windows 9x this is done with
   ’winipcfg’, on windows nt use the network settings. Look at the options available, copy out the
   settings to hand in. After that use the following instructions, and describe what each is doing.
         nslookup claymore.engineer.gvsu.edu
         ping claymore.engineer.gvsu.edu
         ping 148.61.104.215
         tracert claymore.engineer.gvsu.edu
         tracert gvsu.edu
         tracert www.umich.edu
         route
         netstat
page 106


       netstat -a

3. Open a Dos window and type ‘telnet river.it.gvsu.edu 25’. this will connect you to the main stu-
   dent computer. But instead of the normal main door, you are talking to a program that delivers
   mail. Type the following to send an email message.

             ehlo northpole.com
             mail from: santa
             rcpt to: jackh
             data
             Subject: Bogus mail
             this is mail that is not really from santa
             .


4. Go to the web site ’www.arin.net’ and look up some machine names there under the ’whois’
   link. Determine who owns the student network, i.e., 148.61.104.

5. While looking at a home page in Netscape select ‘View - Page Source’. You will see a window
   that includes the actual HTML file - This file was interpreted by Netscape to make the page you
   saw previously. Look through the file to see if you can find any text that was on the original
   page.

6. In Netscape ask for the location ‘ftp://sunsite.unc.edu’ This will connect you via ftp the same
   way as with the windows and the dos software.

7. In netscape type in ‘mailto:YOUR_NAME@river.it.gvsu.edu’ (Note: If the mail server infor-
   mation and a user account is not setup an error window will appear.). After you are done try
   ‘news:gvsu’.

8. Using Netscape try to access the IP number of the machine beside you. You will get a message
   that says the connection was refused. This is because the machine is a client. You have already
   been using servers to get web pages.

9. When we ask for a computer by name, your computer must find the number. It does this using a
   DNS (Domain Name Server). On campus we have two ‘148.61.1.10’ and ‘148.61.1.15’. In a
   Linux machine type in the following commands and determine what they have done. You can
   get access to a linux machine from a windows machine by typing ’telnet claymore.engi-
page 107


  neer.gvsu.edu’.

      nslookup
      server 148.61.1.10
      set type=any
      ls -d engineer.gvsu.edu > temp.txt
      exit
      more temp.txt




4.9.2 Laboratory

1. Connect to the Linksys switch with a serial port connection. Although we could, we will not do
   this to increase the security of the switch. A serial connection requires physical access, which
   makes it much more difficult for an anonymous security intrusion.

2. Configure your computer to be a static client on the lab TCP/IP network.

3. Write two C++ program using the provided library functions. One program should listen on
   network socket 1900. When a connection is made it should open the connection, and echo all
   input that is receive. A second program will allow a user to connect to a remote network pro-
   gram and send and receive strings.
page 108



5. DATABASES

    Databases are used to store various types of information in a manufacturing enterprise. For
example, consider an inventory tracking system. A simple database might contain a simple list of
purchased parts. Each part is a line in a database table, as shown in figure X.1. If a new inventory
item is added, a new row is added to the table. If parts are added or removed to the inventory, the
quantity value for one of the rows is changed. The total inventory cost can be calculated by multi-
plying the quantity and part costs together, and summing these for all rows. The tables are often
designed to suit the way a particular business runs.




             Number        Part                           Quantity    Cost       Location

             003450        1/2" Hex Nut                   35          $0.023     Bin 5-42

             003573        1/2" Hex Bolt                  2467        $0.035     Bin 5-63

             002365        5/8" Washer                    395         $0.009     Bin 7-32




    Figure X.1 - A Simple Inventory Table


    A more complex database will be made up of many tables that relate items together. For
example a more complex database might have separate tables for customer data, supplier data,
purchased inventory, work in process, finished inventory, etc. The purchased inventory table
might refer to a supplier number that identifies a supplier in the supplier table. The formal name
for a database that uses related tables of information is ’relational’.
page 109


    In modern applications a database (server) will run on one computer, but be shared by many
other computers (clients) that access it through networks. Client programs might be highly vari-
able. For example a worker on the shop floor may only be able to view order information. A shop
floor supervisor might be able to change order status, personnel tables. A salesperson might be
able to enter new orders, and check on order status. It is also possible to access the database
directly and make special inquiries using a special command language called Structured Query
Language (SQL).


    In summary, database allow information to be;
          - stored and managed in a central location
          - shared with many other computers
          - structured and accessed quickly
          - searched for patterns and matches




5.1 SQL AND RELATIONAL DATABASES

    Structured Query Language (SQL) was developed to provide a common interface language
for accessing relational databases. The key concept behind relational databases is that all informa-
tion is stored in tables. The example in Figure X.2 illustrates a customer order tracking system
that uses three tables. Consider the first table called ’Orders’, it contains four rows, each with an
order number. The first three rows are for the same order, and order number. In this case all three
entries are also for the same customer, but it involves three different parts. The entries in the
’customer_id’ and ’part_id’ columns can be used to lookup more information from the two other
tables.
page 110




         Orders
                                 order_number        customer_id      part_id      quantity

                                 00103               002              0001         1
                                 00103               002              0000         1
                                 00103               002              0002         1
                                 00134               001              0002         50




         Customers
                                 customer_id     name

                                 000             ACME Dastardly Gadgets
                                 001             Widgets Inc.
                                 002             I.M. Reech and Co.


         Parts
                                 part_id description                  location

                                 0000     cylinder                    bin 5-4
                                 0001     valve                       bin 2-3
                                 0002     hose                        bin 8-2



    Figure X.2 - An Order Tracking Database


    The tables in Figure X.2 can be created using the SQL commands in Figure X.3. One com-
mand is needed for each table. Each command starts with ’CREATE TABLE’ followed by the
name of the table. After this the columns of the table are defined. In the case of the ’Orders’ table
there are four columns. Each column is given a unique name, and a data type is defined. Once
these commands have been used the tables will exist, but be empty with no data in them.
page 111




   CREATE TABLE Orders (
        order_number INTEGER,
        customer_id INTEGER,
        part_id INTEGER,
        quantity INTEGER
   )
   CREATE TABLE Customers (
        customer_id INTEGER,
        name CHAR(50)
   )
   CREATE TABLE Parts (
        part_id INTEGER,
        description CHAR(20),
        location CHAR(25)
   )


   The queries can also be combined onto a single line.

   CREATE TABLE CUSTOMERS (customer_id INTEGER, name CHAR(50))



    Figure X.3 - The SQL Commands to Create the Tables in Figure X.2


    Figure X.4 shows SQL commands to enter data into the tables. In all cases these statements
begin with ’INSERT INTO’, followed by the table name. After that the data fields to fill are
named, followed by the actual values to insert. The column names are provided so that the values
can be supplied in a different order, or omitted altogether. In this example all of the values are pro-
vided for all ’INSERT INTO’ statement, but this is not necessary.
page 112




     INSERT INTO Orders (order_number, customer_id, part_id, quantity)
           VALUES (00103, 002, 0001, 1)
     INSERT INTO Orders (order_number, customer_id, part_id, quantity)
           VALUES (00103, 002, 0000, 1)
     INSERT INTO Orders (order_number, customer_id, part_id, quantity)
           VALUES (00103, 002, 0002, 1)
     INSERT INTO Orders (order_number, customer_id, part_id, quantity)
           VALUES (00134, 001, 0002, 50)
     INSERT INTO Customers (customer_id, name) VALUES (000, ’ACME Dastardly Gadgets’)
     INSERT INTO Customers (customer_id, name) VALUES (001, ’Widgets Inc.’)
     INSERT INTO Customers (customer_id, name) VALUES (002, ’I.M. Reech and Co.’)
     INSERT INTO Parts (part_id, description, location) VALUES (0000, ’cylinder’, ’bin 5-4’)
     INSERT INTO Parts (part_id, description, location) VALUES (0001, ’valve’, ’bin 2-3’)
     INSERT INTO Parts (part_id, description, location) VALUES (0002, ’hose’, ’bin 8-2’)




    Figure X.4 - Entering Data Into The Tables


    Once data has been entered into the database it can be recalled using a simple ’SELECT’
statement. In the first example the ’*’ indicates to select all data values ’FROM’ the ’Customers’
table. The second example shows only listing the ’name’ values from the ’Customers’ table.
Finally the third example shows the listing of ’order_numbers’ from the ’Orders’ table where the
’quantity’ of parts is greater than 10.
page 113



      SELECT * FROM Customers

      Customerscustomer_idname
            000       ACME Dastardly Gadgets
            001       Widgets Inc.
            002       I.M. Reech and Co.

      SELECT name FROM Customers

      Customersname
            ACME Dastardly Gadgets
            Widgets Inc.
            I.M. Reech and Co.

      SELECT order_number FROM Orders WHERE quantity > 10

      Orders order_number
             00134




    Figure X.5 - Simple Database Query Examples


    It is possible to make database queries where the results are merged from many different
tables. The example in Figure X.6 shows a query that is to list values for ’order_number’, ’name’,
’description’ and ’location’. These are to be merged from three tables ’Orders’, or ’O’, Custom-
ers, or ’C’, and ’Parts’, or ’P’. Finally, the conditions for a match follow the ’WHERE’ statement.
The conditions are the ’customer_id’ field in the ’Customer’ and ’Order’ tables must match., and
the ’part_id’ field must match in the ’Order’ and ’Part’ tables.
page 114




      Select order_number, name, description, location FROM Orders O, Customers C, Parts P
   WHERE O.customer_id = C.customer_id, O.part_id = P.part_id

      Ordersorder_numbername   descriptionlocation
         00103      I.M. Reech and Co.valvebin 2-3
         00103      I.M. Reech and Co.cylinderbin 5-4
         00103      I.M. Reech and Co.hosebin 8-2
         00134      Widgets Inc.hose     bin 8-2




    Figure X.6 - A More Advanced Query


    The SQL queries are easily used when interacting with a command interface. Although, it is
more common for these commands to be used from within computer programs that call the data-
base to make automatic queries.




5.2 DATABASE ISSUES

    • Databases handle problems of,
       - data locking (only allow one user to modify at once)
       - data sharing (other users can view)
       - searching
       - etc

    • Database design
       - first order normal, etc.
       - flexibility
       - verification




5.3 LABORATORY - SQL FOR DATABASE INTEGRATION
page 115


Purpose:
       To learn the basic command language, SQL, that is used to interact with relational data-
              bases.

Overview:
       Databases store information in tables. The users can use or manipulate this data to suit
             other purposes. The fundamental language for interacting with the databases is
             SQL. This lab will offer a simple introduction, and then go on to interface with the
             database using C programs in the following lab.

Pre-Lab:
       Read the SQL and database material.

In-Lab:
          First Time Installation:
                  1. Check to see if the database is installed. One way to do this is to look for the
                     database server using ’which postmaster’. If it is not installed it can be installed
                     from the Redhat distribution CD, or by downloading it from www.postgr-
                     esql.org.
                  2. Log in as root with ’su - root’ and edit the file ’/var/lib/pgsql/.bashrc’ to include
                     the following lines. (Note: the .bashrc file may not exist, but it will be created by
                     the editor.)
                           PGLIB=/usr/lib/pgsql
                           PGDATA=/usr/lib/pgsql/data
                           export PGLIB PGDATA
                  3. Change the ownership of the postgres directory to the user postgres with the
                     command ’chown postgres /usr/lib/pgsql’.
                  4. Log in as the user ’postgres’ - An account called ’postgres’ is normally defined
                     in most modern Linux distributions, but the account password is disabled. To log
                     in the first time you must be logged in as root, then log in as postgres with ’su -
                     postgres’. At this point you can change the password so you can log in directly
                     as postgres in the future with ’passwd postgres’. Verify that you are logged in as
                     postgres before continuing with ’whoami’.
                  5. Set up the databases with the command ’initdb’. This will set up all of the
                     needed files and directories.
                  6. At this point the database should be ready for use, but the database server is not
                     running. It can be started with ’postmaster &’.
                  7. Use ‘createuser <YOUR_LOGIN_NAME_GOES_HERE>’ to add yourself as a
                     valid database user. Answer ‘y’es when asked if you are allowed to create data-
                     bases. And answer ‘y’es when asked if you can create new users. These choices
                     will allow you full control over the database. Note: ‘destroyuser
                     <YOUR_NAME>’ can be used if you need to remove a user.
                  8. Log out from the postgres account with ’exit’.
          Before Use:
                  1. Start the database when logged in as root with ’postmaster &’. This should start
                     the database server. You can check to see if it is accepting connections with the
page 116


                 command ’netstat -a | grep postmaster’. If the postmaster program is listed the
                 database is ready for use.
              2. The database can also be set up to run automatically each time the computer is
                 rebooted by adding it to the ’system V’ initialization list. But, this step is not
                 necessary unless setting up a permanent database.
       Creating and Using a New Database
              1. Create a new database with ‘createdb test’.
              2. Connect to the database with ‘psql test’. This is a simple program that allows
                 interaction with the database using typed commands. Type ‘h’ to see a list of
                 commands.
              3. Create a new database table using the SQL command below. This program
                 requires that you end each line with a ‘g’.
                       CREATE TABLE grades (name CHAR(10), grade CHAR(3), year INT)g
              6. Display the table (it is empty) with the command below. Note: upper and lower
                 case values are used to make the SQL commands stand out.
                       SELECT * FROM grade
              7.Add data with the commands below. After adding each datapoint, print out the
                 table values. (Note: using the up and down cursor keys will allow you to recall
                 previously entered commands.)
                       INSERT INTO grades (name, grade, year) VALUES (‘egr 101’, ‘D’, 1997)
                       INSERT INTO grades (name, year, grade) VALUES (‘egr 101’, 1998,
                         ‘B+’)
                       INSERT INTO grades (name, grade, year) VALUES (‘egr 103’, ‘A’, 1999)
                       INSERT INTO grades (name, grade, year) VALUES (‘egr 209’, ‘B+’,
                         1999)
                       INSERT INTO grades (name, year) VALUES (‘egr 226’, 1999)
                       INSERT INTO grades (year) VALUES (2000)
              8. Follow the tutorials in the ‘/usr/share/doc/postgres*’ directory.
              9. Develop a database (of your own design) that will keep customer information,
                 and inventory levels.

Submit (individually):
      1. A completed customer information database.



5.4 LABORATORY - USING C FOR DATABASE CALLS

Purpose:
       To access a database using a simple C program.

Overview:
       The program listing in Figure X.8 can be used to access the Postgres database. It uses a
              database access library called ’libpq’. This library of functions allows SQL data-
              base queries. The results of the query can then be easily retrieved.
page 117


       In this example the program begins with an attempt to connect to the database using the
                function ’PQconnectdb’, and the status of the connection is then checked using
                ’PQstatus’. An SQL query is passed to the database using the ’PQexec’ command,
                and the results are returned into the ’PGresult’ structured called ’res’ in this exam-
                ple. The results can be checked using ’PQresultStatus’, and retrieved using the
                ’PQgetvalue’ function. The ’PQntuples’ function returns the number of matching
                results.
       After each query the results structure should be released using ’PQclear’, and when all
                database access is complete the connection to the database should be terminated
                with ’PQfinish’.

  #include <stdio.h>
  #include <stdlib.h>
  #include <pgsql/libpq-fe.h>

  int main(){
        char       grade[3];
        char       query_string[256];
        PGconn     *conn;
        PGresult   *res;
        int        i;

         conn = PQconnectdb("dbname=test");
         if(PQstatus(conn) != CONNECTION_BAD){
                   printf("Enter a grade: ");
                   scanf("%2s", grade);
                   sprintf(query_string,
                     "SELECT name FROM grades WHERE grade = ’%s’", grade);
                   res = PQexec(conn, query_string);
                   if(PQresultStatus(res) == PGRES_TUPLES_OK){
                            int i;
                            for(i = 0; i < PQntuples(res); i++)
                                 printf("name = %s n",
                                 PQgetvalue(res, i, 0));
                   } else {
                            printf("The query failed n");
                   }
                   PQclear(res);
                   PQfinish(conn);
         } else {
                   printf("Could not open the database n");
         }
         return 0;
  }


Figure X.8 - C Program for Database Access (dbtest.c)


  all: dbtest
  CC = gcc
  CFLAGS = -Wall
  LIBS = -lpq
  dbtest: dbtest.c
        $(CC) $(CFLAGS) dbtest.c -o dbtest $(LIBS)


Figure X.9 - Makefile for Database Program
page 118


Pre-Lab:
       1. Examine the database program in the Overview section.

In-Lab:
          1. Enter the program and makefile given in the Overview section. Use ’make’ to compile
                  the program, and run it to verify that it does access the database.
          2. Write a program that allows jobs to be entered into the customer information database
                  created in the previous laboratory.

Submit (individually):
      1. The C program to access the customer information database.
page 119



6. COMMUNICATIONS

    When multiple computers are used in a manufacturing facility they need to communicate.
One means of achieving this is to use a network to connect many peers. Another approach is to
use dedicated communication lines to directly connect two peers. The two main methods for com-
munication are serial and parallel. In serial communications the data is broken down as single bits
that are sent one at a time. In parallel communications multiple bits are sent at the same time.



6.1 SERIAL COMMUNICATIONS

    Serial communications send a single bit at a time between computers. This only requires a
single communication channel, as opposed to 8 channels to send a byte. With only one channel
the costs are lower, but the communication rates are slower. The communication channels are
often wire based, but they may also be optical and radio. Figure 22.2 shows some of the standard
electrical connections. RS-232c is the most common standard that is based on a voltage level
change. At the sending computer an input will either be true or false. The ’line driver’ will convert
a false value ’in’ to a ’Txd’ voltage between +3V to +15V, true will be between -3V to -15V. A
cable connects the ’Txd’ and ’com’ on the sending computer to the ’Rxd’ and ’com’ inputs on the
receiving computer. The receiver converts the positive and negative voltages back to logic voltage
levels in the receiving computer. The cable length is limited to 50 feet to reduce the effects of
electrical noise. When RS-232 is used on the factory floor, care is required to reduce the effects of
electrical noise - careful grounding and shielded cables are often used.
page 120




                                              50 ft


            RS-232c
                                   Txd                            Rxd
       In
                                                                                          Out
                                               com




                                              3000 ft


        RS-422a

       In
                                                                                          Out




                                              3000 ft


            RS-423a

       In
                                                                                          Out




                               Figure 22.2 - Serial Data Standards

    The RS-422a cable uses a 20 mA current loop instead of voltage levels. This makes the sys-
tems more immune to electrical noise, so the cable can be up to 3000 feet long. The RS-423a stan-
dard uses a differential voltage level across two lines, also making the system more immune to
electrical noise, thus allowing longer cables. To provide serial communication in two directions
these circuits must be connected in both directions.


    To transmit data, the sequence of bits follows a pattern, like that shown in Figure 22.3. The
page 121


transmission starts at the left hand side. Each bit will be true or false for a fixed period of time,
determined by the transmission speed.
    A typical data byte looks like the one below. The voltage/current on the line is made true or
false. The width of the bits determines the possible bits per second (bps). The value shown before
is used to transmit a single byte. Between bytes, and when the line is idle, the ’Txd’ is kept true,
this helps the receiver detect when a sender is present. A single start bit is sent by making the
’Txd’ false. In this example the next eight bits are the transmitted data, a byte with the value 17.
The data is followed by a parity bit that can be used to check the byte. In this example there are
two data bits set, and even parity is being used, so the parity bit is set. The parity bit is followed
by two stop bits to help separate this byte from the next one.


                                                                                                    true

                                                                                                    false




      before      start                     data                      parity    stop         idle

      Descriptions:
         before - this is a period where no bit is being sent and the line is true.
         start - a single bit to help get the systems synchronized.
         data - this could be 7 or 8 bits, but is almost always 8 now. The value shown here is a
            byte with the binary value 00010010 (the least significant bit is sent first).
         parity - this lets us check to see if the byte was sent properly. The most common
            choices here are no parity bit, an even parity bit, or an odd parity bit. In this case
            there are two bits set in the data byte. If we are using even parity the bit would be
            true. If we are using odd parity the bit would be false.
         stop - the stop bits allow a pause at the end of the data. One or two stop bits can be
            used.
         idle - a period of time where the line is true before the next byte.

                                  Figure 22.3 - A Serial Data Byte

    Some of the byte settings are optional, such as the number of data bits (7 or 8), the parity bit
(none, even or odd) and the number of stop bits (1 or 2). The sending and receiving computers
must know what these settings are to properly receive and decode the data. Most computers send
page 122


the data asynchronously, meaning that the data could be sent at any time, without warning. This
makes the bit settings more important.


     Another method used to detect data errors is half-duplex and full-duplex transmission. In
half-duplex transmission the data is only sent in one direction. But, in full-duplex transmission a
copy of any byte received is sent back to the sender to verify that it was sent and received cor-
rectly. (Note: if you type and nothing shows up on a screen, or characters show up twice you may
have to change the half/full duplex setting.)


     The transmission speed is the maximum number of bits that can be sent per second. The units
for this is ’baud’. The baud rate includes the start, parity and stop bits. For example a 9600 baud
                                                                         9600
transmission of the data in Figure 22.3 would transfer up to ----------------------------------- = 800
                                                              bytes each -
                                                             (1 + 8 + 1 + 2)
second. Lower baud rates are 120, 300, 1.2K, 2.4K and 9.6K. Higher speeds are 19.2K, 28.8K and
33.3K. (Note: When this is set improperly you will get many transmission errors, or ’garbage’ on
your screen.)


     Serial lines have become one of the most common methods for transmitting data to instru-
ments: most personal computers have two serial ports. The previous discussion of serial commu-
nications techniques also applies to devices such as modems.




6.1.1 RS-232

     The RS-232c standard is based on a low/false voltage between +3 to +15V, and an high/true
voltage between -3 to -15V (+/-12V is commonly used). Figure 22.4 shows some of the common
connection schemes. In all methods the ’txd’ and ’rxd’ lines are crossed so that the sending ’txd’
outputs are into the listening ’rxd’ inputs when communicating between computers. When com-
municating with a communication device (modem), these lines are not crossed. In the ’modem’
connection the ’dsr’ and ’dtr’ lines are used to control the flow of data. In the ’computer’ the ’cts’
page 123


and ’rts’ lines are connected. These lines are all used for handshaking, to control the flow of data
from sender to receiver. The ’null-modem’ configuration simplifies the handshaking between
computers. The three wire configuration is a crude way to connect to devices, and data can be lost.


                                    com                                    com
                                    txd                                    txd
   Modem             Computer                                                       Modem
                                    rxd                                    rxd
                                    dsr                                    dsr
                                    dtr                                    dtr

                                    com                                    com
                     Computer       txd                                    txd      Computer
   Computer                         rxd                                    rxd
                     A                                                              B
                                    cts                                    cts
                                    rts                                    rts

                                    com                                    com
                                    txd                                    txd
   Null-Modem        Computer       rxd                                    rxd      Computer
                     A              dsr                                    dsr      B
                                    dtr                                    dtr
                                    cts                                    cts
                                    rts                                    rts

                                    com                                    com
                     Computer       txd                                    txd      Computer
   Three wire                       rxd                                    rxd
                     A                                                              B
                                    cts                                    cts
                                    rts                                    rts

                       Figure 22.4 - Common RS-232 Connection Schemes

    Common connectors for serial communications are shown in Figure 22.5. These connectors
are either male (with pins) or female (with holes), and often use the assigned pins shown. The
DB-9 connector is more common now, but the DB-25 connector is still in use. In any connection
the ’RXD’ and ’TXD’ pins must be used to transmit and receive data. The ’COM’ must be con-
nected to give a common voltage reference. All of the remaining pins are used for ’handshaking’.
page 124




                                 DB-25                                                  DB-9
           1     2 3 4 5 6 7 8 9 10 11 12 13                                1       2       3       4       5
               14 15 16 17 18 19 20 21 22 23 24 25                              6       7       8       9


          Commonly used pins
                 1 - GND (chassis ground)                                        1 - DCD
                 2 - TXD (transmit data)                                         2 - RXD
                 3 - RXD (receive data)                                          3 - TXD
                 4 - RTS (request to send)                                       4 - DTR
                 5 - CTS (clear to send)                                         5 - COM
                 6 - DSR (data set ready)                                        6 - DSR
                 7 - COM (common)                                                7 - RTS
                 8 - DCD (Data Carrier Detect)                                   8 - CTS
                 20 - DTR (data terminal ready)                                  9 - RI
          Other pins
                 9 - Positive Voltage
                 10 - Negative Voltage
                 11 - not used
                 12 - Secondary Received Line Signal Detector
                 13 - Secondary Clear to Send
                 14 - Secondary Transmitted Data
                 15 - Transmission Signal Element Timing (DCE)
                 16 - Secondary Received Data
                 17 - Receiver Signal Element Timing (DCE)
                 18 - not used                                           Note: these connec-
                 19 - Secondary Request to Send                            tors often have
                 21 - Signal Quality Detector                              very small num-
                 22 - Ring Indicator (RI)                                  bers printed on
                 23 - Data Signal Rate Selector (DTE/DCE)                  them to help you
                 24 - Transmit Signal Element Timing (DTE)                 identify the pins.
                 25 - Busy

                     Figure 22.5 - Typical RS-232 Pin Assignments and Names

    The ’handshaking’ lines are to be used to detect the status of the sender and receiver, and to
regulate the flow of data. It would be unusual for most of these pins to be connected in any one
application. The most common pins are provided on the DB-9 connector, and are also described
below.
         TXD/RXD - (transmit data, receive data) - data lines
         DCD - (data carrier detect) - this indicates when a remote device is present
         RI - (ring indicator) - this is used by modems to indicate when a connection is about to be
page 125


             made.
       CTS/RTS - (clear to send, ready to send)
       DSR/DTR - (data set ready, data terminal ready) these handshaking lines indicate when
             the remote machine is ready to receive data.
       COM - a common ground to provide a common reference voltage for the TXD and RXD.

    When a computer is ready to receive data it will set the "CTS" bit, the remote machine will
notice this on the ’RTS’ pin. The ’DSR’ pin is similar in that it indicates the modem is ready to
transmit data. ’XON’ and ’XOFF’ characters are used for a software only flow control scheme.




6.2 SERIAL COMMUNICATIONS UNDER LINUX

    In Linux serial communications is similar to normal file access. The file names used to access
these ports are in the ’dev’ directory. The ’com1’ port is called ’ttyS0’, and the ’com2’ port is
called ’ttyS1’.




   #ifndef __SERIAL
   #define __SERIAL
   #define         ERROR             -1
   #define         NO_ERROR          0
   class serial_io {
          protected:
          public:
                   int      fd; /* File Descriptor Global Variable */
                            serial_io(char*);
                            ~serial_io();
                   int      decode_param(char*);
                   int      writer(char*);
                   int      reader(char*, int);
   };
   #endif



    Figure X.10 - The Header File (serial_io.h)




   #include <stdio.h>
page 126


   #include   <stdlib.h>
   #include   <string.h>
   #include   <unistd.h>
   #include   <fcntl.h>
   #include   <errno.h>
   #include   <termios.h>
   #include   <ctype.h>

   #include "serial_io.h"


   char   *param_file_name;
   int    param_baud;
   int    param_parity;// not implemented yet
   int    param_size;
   int    param_flow;        // not implemented yet




   serial_io::serial_io(char *args){
         struct    termios
                   options;
         int       error;
         int       i;

          param_file_name = NULL;
          param_baud = B9600;// set defaults
          param_size = CS8;
          char     temp[200];
          int      len, last, cnt;

          error = NO_ERROR;
          strcpy(temp, args);
          len = strlen(args);
          last = 0;
          cnt = 0;
          for(i = 0; (i < len) && (error == NO_ERROR); i++){
                    if(temp[i] == ’,’){
                             temp[i] = 0;
                             error = decode_param(&(temp[last]));
                             cnt++;
                             last = i + 1;
                    } else if(i == (len-1)){
                             error = decode_param(&(temp[last]));
                             cnt++;
                    }
          }

         if((error == NO_ERROR) && (param_file_name != NULL)){
                   if((fd = open(param_file_name /*args[0] port "/dev/ttyS0"*/, O_RDWR | O_NOCTTY
| O_NDELAY)) < 0){
                            printf("Unable to open serial portn");
                            fd = -1;
                   } else {
                            fcntl(fd, F_SETFL, FNDELAY);
                            /* Configure port reading */
                            tcgetattr(fd, &options);
                            /* Get the current options for the port */

                            cfsetispeed(&options, param_baud);      /* Set the baud */
                            cfsetospeed(&options, param_baud);

                            options.c_cflag |= (CLOCAL | CREAD);
                            // enable receiver and set local mode
page 127


                            options.c_cflag &= ~PARENB;
                            // Mask the character size to 8 bits, no parity
                            options.c_cflag &= ~CSTOPB;

                            options.c_cflag &= ~CSIZE;
                            // set data size
                            options.c_cflag |= param_size;
                            // set number of data bits

//                          options.c_cflag &= ~CRTSCTS;
                            // Disable hardware flow control
//                          options.c_lflag &= ~(ICANON | ECHO | ISIG);
                            // process as raw input
                            options.c_oflag |= OPOST;

                            // Update settings
                            tcsetattr(fd, TCSANOW, &options);
                 }
      } else {
                 fd = -1;
      }
}


serial_io::~serial_io(void)
{
      close(fd);
      fd = -1;
      if(param_file_name != NULL) delete param_file_name;
}


int serial_io::decode_param(char*parameter){
      int       error;
      int       temp;

      error = NO_ERROR;
      if(parameter[0] == ’F’){
               if(param_file_name != NULL) delete param_file_name;
               param_file_name = new char[strlen(parameter)];
               strcpy(param_file_name, &(parameter[1]));
      } else if(parameter[0] == ’B’){
               temp = atoi(&(parameter[1]));
               if(temp == 9600) param_baud = B9600;
               if(temp == 2400) param_baud = B2400;
               if(temp == 1200) param_baud = B1200;
      } else if(parameter[0] == ’D’){
               temp = atoi(&(parameter[1]));
               if(temp == 8) param_size = CS8;
               if(temp == 7) param_size = CS7;
      } else {
               printf("Did not recognize serial argument type - ignoringn");
      }

      return error;
}


int serial_io::reader(char *text, int max){
      int       char_read,
                error,
                i, j;

      error = ERROR;
      if(fd >= 0){
page 128


                   char_read = read(fd, text, max-1);
                   if (char_read > 0){
                            text[char_read] = 0;
                            error = NO_ERROR;
                            for(i = 0; i < char_read;){
                                      if((text[i] == 10 /*CR*/) || (text[i] == ’n’)){
                                               for(j = i+1; j <= char_read; j++){
                                                         text[j-1] = text[j];
                                               }
                                               char_read--;
                                      } else if(text[i] == ’t’){
                                               text[i] = ’ ’;
                                               i++;
                                      } else {
                                               i++;
                                      }
                            }
                   } else {
                            text[0] = 0;
                   }
        } else {
                   printf("Serial port is not initializedn");
        }

        return error;
}


int serial_io::writer(char *text)
{
      int       error,
                length = 0,
                count = 0;

        error = NO_ERROR;
        if(fd >= 0){
                 length = strlen(text);
                 for(count = 0; count < length; count++){
                          write(fd, &(text[count]), 1);
                 }
        } else {
                 printf("Serial port not initializedn");
                 error = ERROR;
        }

        return error;
}



    Figure X.11 - Serial Communication Drivers (serial_io.c)




#include "serial_io.h"

main(){
      serial_io             *serial;
      char                  in[100];
      char                  sent[107];
      int                   flag = 0;
      char                  out[100];
page 129


           serial = new serial_io("B9600,F/dev/ttyS0");
           while(flag == 0){
                    if(serial->reader(in, 100) != ERROR){
                              if(strlen(in) > 0){
                                       printf("Got String: %s", in);
                                       sprintf(out, "ECHO: %sn", in);
                                       printf("Sending String: %s", out);
                                       serial->writer(out);
                              }
                    }
           }

           delete serial;
   }



       Figure X.12 - A Serial Communication Program (serial.c)


       These programs can be compiled with the makefile in Figure X.13.


   all:              serial
   CC=g++
   CFLAGS=
   serial:           serial.c serial_io.o
                     $(CC) $(CFLAGS) serial.c -o serial serial_io.o
   serial_io.o:      serial_io.c serial_io.h
                     $(CC) $(CFLAGS) -c serial_io.c



       Figure X.13 - A Makefile




6.3 PARALLEL COMMUNICATIONS

       Parallel data transmission will transmit multiple bits at the same time over multiple wires.
This does allow faster data transmission rates, but the connectors and cables become much larger,
more expensive and less flexible. These interfaces still use handshaking to control data flow.


       These interfaces are common for computer printer cables and short interface cables, but they
are uncommon on PLCs. A list of common interfaces follows.
          Centronics printer interface - These are the common printer interface used on most per-
                 sonal computers. It was made popular by the now defunct Centronics printer com-
                 pany.
page 130


          GPIB/IEEE-488 - (General Purpose Instruments Bus) This bus was developed by Hewlett
                Packard Inc. for connecting instruments. It is still available as an option on many
                new instruments.




6.4 LABORATORY - SERIAL INTERFACING AND PROGRAMMING

Purpose:
       To achieve a basic understanding of the serial communication hardware and software.

Overview:
       Please review the chapter

Pre-Lab:
       1. Enter the C++ code found in the chapter.

In-Lab:
          1. Set up two computers beside each other, at least one should be a Linux computer.
          2. Select the right connectors for the serial ports (9 or 25 pin, and male or female) on the
                  computers and build a null modem RS-232 cable to connect the two computers.
          3. Start a serial communication program on both of the computers, and establish commu-
                  nications - this will require you to change communication settings.
          3a. (Linux) You may use ’minicom’, you will have to be logged in as root, or change the
                  settings for the serial port with ’chmod 666 /dev/ttyS0’ or ’chmod 666 /dev/ttyS1’.
          3b. (Windows) Use the hyperterm program ’hypertrm.exe’. When prompted for connec-
                  tion information select ’cancel’.
          4. Enter and run the C++ program to echo serial data.
          5. Modify the number guess game developed in a previous lab to operate over the serial
                  port.

Submit (individually):
      1. The source code listings for the game running on the serial port.



6.5 LABORATORY - STEPPER MOTOR CONTROLLER

Purpose:
       To use a serial interface to communicate with a stepper motor controller.

Overview:
page 131


A stepper motor is unlike other motors. When a voltage is applied the motor does not turn
       continuously, it only moves a small increment. There are normally a set of four or
       more inputs. When these are turned on-off in a set pattern the motor shaft will
       rotate forward or backwards. A typical stepper motor might have 200 steps per
       revolution, or steps of 1.8 degrees. These motors often require somewhat sophisti-
       cated controllers. One type of controller is called an indexer. It can be given com-
       mands to move the motor, and then it takes care of pulsing the motor outputs to
       drive the motion.

The stepper motor controllers to be used in this laboratory are integrated into the turnta-
       bles in the material handling system. The controller is integrated into the turntable
       stations so that it can rotate the turntable up to 360 degrees with a stepped motor,
       eject a cart using two outputs to solenoid valves, and detect a cart present with a
       diffuse photoelectric sensor. The controller has an RS-422 port that can be used to
       communicate, and load programs. This will be connected to an RS-232C port
       using a special interface cable that converts the current loop to voltage values. The
       communication settings for the turntables are 9600 baud, 8 data bits, no parity, 1
       stop bits, no flow control.

The programming commands for the controller are summarized below.

DCB-241 Commands

<ESC> abort                                   G go from address
@ soft stop                                   I initial velocity
<CTL>C reset                                  K ramp slope
+ move in positive direction                  L loop on port
- move in negative direction                  M move at constant speed
[ read nonvolatile memory                     O set origin
] read hardware limits                        P program mode
 write to nonvolatile memory                 Q query program
^ read moving status                          R index to target position
A port read/write                             S store parameters
B jog speed                                   T set trip point
C restore                                     V slew velocity
D divide step rates                           W wait
E enable auto power off                       X examine parameters
F find home                                   Z display position


Figure X.14 - Stepper Motor Control Board Commands (DCB-241)

When writing programs command lines can be up to 15 characters long, including spaces.
      Spaces are used to separate commands and arguments. Characters used in pro-
      grams can be either upper or lower case. A sample program is given below.
page 132




Pre-Lab:
       1. Go to the web site www.stepcontrol.com and look at the product documents for the
               DCB-241 stepper driver.

In-Lab:
          1. Use a terminal program to communicate with the stepper motor controller. You will
                  need a special communication cable, and the boxes can be opened with a flat
                  bladed screwdriver. Plug the communication cable into the lower connector. (Note:
                  if the unit already has power don’t touch the exposed 120Vac power on the power
                  supply.) Connect an air supply and power to the unit. (Note: don’t forget to turn on
                  the power on the front of the cabinet.)
          2. Use the following commands (in sequence) to verify that the turntable is operating
                  properly, and to explore basic commands. (Note: comments are provided for
                  understanding, but should not be entered into the controller.)
                  <CTRL>C -- this should reset the unit
                  <SPACE> -- this should print out the line ’V2.03’, if not there are problems
                  <ENTER> -- this should print ’#’
                  Z -- read the current position
                  O -- set the current position as the origin
                  Z -- print the current position
                  R1000 -- this should rotate the turntable
                  Z -- should now be 1000
                  R-1000 -- this should rotate the turntable the other way
                  Z -- should be zero again
                  A8 - kicks the cart one way (notice the lights on the solenoids)
                  A16 - kicks the cart the other way
                  A0 - turns off all solenoids
                  ] -- this will check the input ports, bits 7 and 8 are for the cart present detectors
          3. Enter the following program so that the turntable operates automatically. The list below
                  also includes the commands to download and enter the program. Again comments
                  should not be entered, and line numbers are automatically generated. When the
                  program has been entered it can be run with the command ’G0’.
                  P0 -- put the controller in programming mode and start the program at location ’0’
                  0 O0 -- set the current position to the origin with a value of 0
                  4 R10000 -- more the controller 10000 steps in the positive direction
                  8 W0 -- wait until ’0’ ms after the motion is complete
                  11 R-10000 -- move 10000 steps in the opposite direction
                  15 W100 -- wait until ’100’ ms after the motion is complete
                  18 J 4 3 -- jump to address ’4’ four (3+1) times, a basic for loop (you may need to
                     change ’4’ if your line numbers don’t match)
                  22 A8 -- eject the cart
                  24 W1000 - wait for 1 second
                  27 A0 - shut off the solenoid valve
                  29 P0 -- the end of the program
          4. Write a C++ program to communicate with the stepper motor controller over RS-232. It
page 133


              should allow the user to enter a motor position from the keyboard, and the control-
              ler should automatically move.

Submit (individually):
      1. The source code listings for the motor control program.
page 134



7. PROGRAMMABLE LOGIC CONTROLLERS (PLCs)


 • CONTROL - Using artificial means to manipulate the world with a particular goal.




 • System types,
    • Continuous - The values to be controlled change smoothly.
          e.g. the speed of a car as the gas pedal is pushed
    • Logical - The values to be controlled are easily described as on-off.
          e.g. The car motor is on-off (like basic pneumatics).
          Note: All systems are continuous but they can be treated as logical for
            simplicity.

 • Logical control types,
    • Conditional - A control decision is made by looking at current conditions
          only.
          e.g. A car engine may turn on only when the key is in the ignition and
            the transmission is in park.
    • Sequential - The controller must keep track of things that change and/or
          know the time and/or how long since something happened.
          e.g. A car with a diesel engine must wait 30 seconds after the glow
            plug has been active before the engine may start.
          Note: We can often turn a sequential problem into a conditional by
            adding more sensors.
page 135




                             CONTROL



    CONTINUOUS                               LOGICAL



LINEAR              NON_LINEAR             CONDITIONAL              SEQUENTIAL
                                                                     EVENT BASED
                 e.g. MRAC                                      TEMPORAL
   e.g. PID                                 BOOLEAN
                        e.g. FUZZY LOGIC                       e.g. COUNTERS
                                        EXPERT SYSTEMS e.g. TIMERS


  Examples:


    continuous:




    logical:

              conditional:




              sequential:




    mixed (continuous and logical) systems:



  • A Programmable Logic Controller (PLC) is an input/output processing computer.
page 136




  • Advantages of PLCs are:
     - cost effective for complex systems
     - flexible (easy to add new timers/counters, etc)
     - computational abilities
     - trouble shooting aids
     - reliable
     - easy to add new components

  • Ladder logic was originally introduced to mimic relay logic.




7.1 BASIC LADDER LOGIC



  • The PLC can be programmed like other computers using specialized “languages.”


     - Ladder Logic - a programming technique using a ladder-like structure. It
           was originally adopted because of its similarity to relay logic diagrams
           to ease its acceptance in manufacturing facilities. The ladder approach
           is somewhat limited by the lack of loops, etc. (although this is chang-
           ing).
page 137




                                               OUTPUTS




    HOT                                                        NEUTRAL
                  INPUTS

    POWER NEEDS TO FLOW THROUGH
    THE INPUTS TO THE OUTPUTS




- Mnemonic - instructions and opcodes, similar to assembly language. It is
     more involved to program, but also more flexible than ladder logic.
     This will be used with the hand held programmers.
page 138




      e.g. for an Omron PLC



         00000        LDI            A
         00001        AND            B
         00002        LD             C                  the mnemonic code is equivalent to
         00003        AND            D                  the ladder logic below
         00004        ORB
         00005        OUT            E
         00006        END


                                         A              B                       E



                                         C              D




                                                                            END



  • There are other methods that are not as common,
    - sequential function charts/petri nets
    - state space diagrams
    - etc.




7.2 WHAT DOES LADDER LOGIC DO?
page 139


7.2.1 Connecting A PLC To A Process


                                   PROCESS


           Feedback from                                  Connections to
           sensors/switches                               Actuators


                                          PLC




    • The PLC continuously scans the inputs and changes the outputs.


    • The process can be anything - a large press, a car, a security door, a blast furnace, etc.


    • As inputs change (e.g. a start button), the outputs will be changed. This will cause the pro-
cess to change and new inputs to the PLC will be received.


                 PLC program changes outputs
                 by examining inputs                         Set new outputs

                                              THE
                                              CONTROL
                                              LOOP
                                                             process changes and PLC pauses
                                read inputs                  while it checks its own operation


7.2.2 PLC Operation

    • Remember: The PLC is a computer. Computers have basic components, as shown below:
page 140




               Keyboard
               Input                                                  SVGA Screen
                                                                      Output
                                            80586
               Serial                       CPU
               Mouse
               Input                                                   133/200 MHz
                                                                       Light output


                                       32MB Memory                       2.1GB Disk
                                       Storage                           Storage




    • In fact the computer above looks more like the one below:



      inputs            input memory       computer              output memory         outputs


    Keyboard        Input Chip
                                                                                         monitor
                                                                 Screen memory
                                            CPU ‘586             chips
     Mouse         Serial Input Chip
                                                                digital output chip   LED display
          Flow of Information
                                              Disk Controller


                                   Memory Chips       Disk
                                               storage


    • Notice that in this computer, outputs aren’t connected to the CPU directly.


    • A PLC will scan a copy of all inputs into memory. After this, the ladder logic program is run
once and it creates a temporary table of all outputs in memory. This table is then written to the
page 141


outputs after the ladder logic program is done. This continues indefinitely while the PLC is run-
ning.


      • PLC operation can be shown with a time-line -



   Self input logic output        Self input logic output        Self input logic
   test scan solve scan           test scan solve scan           test scan solve


  0                             ranges from 1 to 100 ms                                  time
         PLC turns on


         SELF TEST - Checks to see if all cards error free, resets watch-dog timer,
              etc. (A watchdog timer will cause an error, and shut down the PLC if
              not reset within a short period of time - this would indicate that the lad-
              der logic is not being scanned normally).
         INPUT SCAN - Reads input values from the chips in the input cards and cop-
              ies their values to memory. This makes the PLC operation faster and
              avoids cases where an input changes from the start to the end of the
              program (e.g., an emergency stop). There are special PLC functions
              that read the inputs directly and avoid the input tables.
         LOGIC SOLVE/SCAN - Based on the input table in memory, the program is
              executed one step at a time, and outputs are updated. This is the focus
              of the later sections.
         OUTPUT SCAN - The output table is copied from memory to the output
              chips. These chips then drive the output devices.


7.3 LADDER LOGIC

      • Ladder logic has been developed to mimic relay logic - to make the computer more accept-
able to companies and employees.


      • Original efforts resisted the use of computers because they required new skills and
approaches, but the use of ladder logic allowed a much smaller paradigm shift.
page 142




• Original relay ladder logic diagrams show how to hook-up inputs to run outputs.
  Relay - An input coil uses a voltage/current to create a magnetic field. As the
        coil becomes magnetic it pulls a metal switch (or reed) towards it and
        makes an electrical contact. The contact that closes when the coil is
        energized is normally open. There is a contact that the reed touches
        without the coil energized is called the normally closed contact. Relays
        are used to let one power source close a switch for another (often high
        current) power source while keeping them isolated.




                    input coil




                      normally             normally
                      closed               open
  Schematic - The drawing below shows the relay above in a symbolic form.


                                                        OR
page 143


       A Circuit - A mix of inputs and outputs allows logical selection of a device.

                                                      115VAC
                                                      wall plug




                                                                              relay logic




                                                                  output
                                                                  (normally open)
                  input
                  (normally closed)       input
                                          (normally open)




                                                                         ladder logic




    • We can then imaging this in context of a PLC. (this idea was suggested by Walt Siedelman
of Ackerman Electric)
page 144




                    push buttons



  power
  supply
     +24V

      com.
                                                                PLC

           inputs




           ladder
           logic



          outputs




                                        115Vac
                                   AC power

                                           neut.




7.3.1 Relay Terminology

   • Contactor - special relays for switching of large loads.
page 145




    • Motor Starter - Basically a contactor in series with an overload relay to cut off when too
much current is drawn.


    • Rated Voltage - Suggested operation voltage. Lower levels can result in failure to operate:
voltages above shorten life.


    • Rated Current - The maximum current before contact damage occurs (welding or melting).


    • DC relays require special arc suppression. AC relays have a zero crossing to reduce relay
arc problems.


    • AC relays require a shading pole to maintain contact. If a DC relay is used with AC power
on the coil, it clicks on-and-off at the frequency of the AC (also known as chattering).
page 146


7.3.2 Ladder Logic Inputs

    • Contact coils are used to connect the PLC power lines to drive the outputs.


    • The inputs can come from electrical inputs or memory locations.




                                 Normally open, an active input will close the contact
                                 and allow power to flow.




                                 Normally closed, power flows when the input is not active.



    • Note: if we are using normally closed contacts in our ladder logic, this is independent of
what the actual device is. The choice between normally open or closed is based on what is logi-
cally needed, and not the physical device.


    • For the Micrologix PLCs the inputs are labelled ‘I:0.0/x’ where x is the input number 0 to 9.
page 147


7.3.3 Ladder Logic Outputs

        • The outputs allow switches to close that supply or cut-off power to control devices.


        • Ladder logic indicates what to do with the output, regardless of what is hooked up -- The
programmer and electrician that connect the PLC are responsible for that.


        • Outputs can go to electrical outputs, or to memory.


        • Output symbols -




                             When power is applied (on) the output is activated




                             When power is not applied (off) the output is activated



        • We can relate these to actual outputs using numbers (look for these on the front of the PLC).


        • For the Micrologix PLCs the outputs are labelled ‘O:0.0/x’ where x is the output number 0
to 5.



7.4 LADDER DIAGRAMS

        • These diagrams are read from left to right, top to bottom.


        • For the ladder logic below the sequence of operations would be B1, B2 on the top first, then
page 148


the bottom. This would be followed by T1, then F1.


                          B1            B2       T1
                                                              F1


                         B1         B2




    • Power flow can be used to consider how ladder diagrams work. Power must be able to flow
from the left to the right.




7.4.1 Ladder Logic Design

    eg. Burglar Alarm
    1. If alarm is on, check sensors.
    2. If window/door sensor is broken (turns off), sound alarm and turn on lights.
    3. If motion sensor goes on (detects thief), sound alarm and turn on lights.


    A = Alarm and lights switch (1 = on)
    W = Window/Door sensor (1 = OK)
    M = Motion Sensor (0 = OK)
    S = Alarm Active switch (1 = on)
page 149




We can do this with ladder logic

               M         S            A


               W     S




           We can also draw an electronic circuit for this -



W                            W              (S*W)
                                                               (S*W)+(S*M)

S
                                                                               A


M
                                                (S*M)



    We can also simplify both the circuit and the ladder -

              M          S           A

              W




W                            W            (M+W)                S * (M+W)
M                                                              = (S*W)+(S*M)

S                                                                              A
page 150


7.4.2 A More Complicated Example of Design


     D
     E
     C

                                                                                        A

     F


         B
                                                               The gates can be purchased for
                                                               about $0.25 each in bulk.
             D       C       B            A
                                                               Inputs and outputs are
                                                               typically 5V.
             E
                             An inexpensive PLC is worth
                             at least a few hundred dollars.
             C

             F       C                                  Consider the cost trade-off!
                                                        Why are gates not used more often?




     D
     E
      F                                                        A
     C
     B

                 D       C       B                                     Simplified
                                              A


                 E


                 F
page 151


7.5 TIMERS/COUNTERS/LATCHES

    • There are some devices and concepts that are temporal/sequential (time based) or sequen-
tial. This means that they keep track of events over time, as opposed to conditional logic that
decides based on instantaneous conditions.


               e.g. A light activating push button
                                        push button
                   +V
                                                                 light
                               button
        On/Off                 pushed      button
                               here        released
                                           here
               Push Button

               simple light                                              (Conditional Control)

               toggled light                                             (Temporal Control)
                                                                                                 time


                 Note: As we follow this graph from left to right we are going through time.
          When the line moves up (on) or down (off) we can see how inputs and outputs




    • Controls that have states or time dependence will require temporal controls (also known as
sequential).


    • Some devices that are temporal are:


       Flip-Flops - These can be latched on or off.
       Latches - Will stay on until reset (Similar to flip-flops)
       Counters - Keeps a count of events
       Timers - Allows inputs and outputs to be delayed or prolonged be a known
             amount
page 152




7.6 LATCHES

         - Will stay on when set, until unlatched.

                          A                    D
                                         L

                          A                    C



                          B                    D
                                         U




  • We can show how these latches respond with a simple diagram.




        A

        B

        C

        D




  • As an example consider the ladder logic:
page 153




           A                                                              X


           A                                                              Y
                                                                                  L


           B                                                              Y
                                                                                 U


           A              Note: this effects of this rung are             Z
                              overwritten by the rung below.

           B                                                              Z




     A

     B

     X

     Y

     Z




    • In most PLCs, latches will keep their last state even when the PLC is turned off and back on.


    (Note: In some other PLCs latches are only used for keeping the state of the PLC when it was
turned off, they don’t ‘stick’ on or off)


7.7 TIMERS

    • We use timers to do some or all of the following:
page 154


   - Delay turning on
   - Delay turning off
   - Accumulate time passed (retentive)



e.g. An On Timer (TON)

                                  TON
                         A          Timer T4:0
                                    Time Base 1.0               (DN)
                                    Preset 4
                                    Accum. 0                    (EN)




      A

T4:0 EN
T4:0 DN



                                                    4
                         3                                                  2
              0
T4:0 Accum.

          0       3          6       9                  13 14          17       19
page 155




e.g. A Retentive On Timer (RTO)

                                  RTO
                       A            Timer T4:0
                                    Time Base 1.0        (DN)
                                    Preset 4
                                    Accum. 0             (EN)




      A

T4:0 EN
T4:0 DN



                                   4
                        3
               0
T4:0 Accum.

          0        3         6         9 10         14          17   19
page 156




e.g. An Off Timer (TOF)

                                        TOF
                          A               Timer T4:0
                                          Time Base 0.01        (DN)
                                          Preset 350
                                          Accum. 0              (EN)




      A

T4:0 EN
T4:0 DN



                                  3.5
              3
                  0
T4:0 Accum.

          0           3       6     9.5 10                 16          18   20
page 157




   e.g. A Retentive Off Timer (RTF)

                                            RTF
                             A               Timer T4:0
                                             Time Base 0.01            (DN)
                                             Preset 350
                                             Accum. 0                  (EN)




           A

   T4:0 EN
   T4:0 DN




   T4:0 Accum.

               0         3        6            10                 16          18       20



    • When using timers (especially retentive) we must reset values when done. The (RES)
instruction does this.




7.8 COUNTERS

    • Count up/count down counters will track input events.
page 158




    • An allen Bradley PLC-5 counter is shown below
                                          a count up counter
                                 CTU
            A                counter C5:0                         (EN)
                             Preset 4
                             Accum. 2                            (DN)




                 1. Each time A turns on (then off), the accumulated value increases
                   (here from 2to3, then 3to4, and so on)
                 2. When the accumulated value reaches the preset value, the ‘DN’
                   flag is set.
                                     C5:0

                                      DN
                 3. We can set the accumulated value to zero with.
                                           C5:0
                                      RES




• Count down counters are similar.




• Consider the example below,
page 159




           I:0.0/0                     CTU
                                   counter C5:0     (EN)
                                   Preset 4
                                   Accum. 2         (DN)


           I:0.0/1                     CTD
                                   counter C5:0     (EN)
                                   Preset 4
                                   Accum. 2         (DN)


           I:0.0/2                        C5:0
                                           RES

           C5:0/DN                        O:0.0/0




 I:0.0/0


 I:0.0/1


 I:0.0/2

 C5:0/DN

 O:0.0/0




7.9 DESIGN AND SAFETY
page 160


7.9.1 FLOW CHARTS

  • Good when the PLC only does one thing at a time in a predictable sequence.


  • The real advantage is in modeling the process in an orderly manner.



                                 START


                          Reset all values off



                              start button pushed?        no


                                   yes

                             Open inlet valve
                             Close outlet valve


                                                        yes        Open outlet valve
                                 Is tank full?                     Close inlet valve

                                         no


                            stop button pushed?
                                                        yes

                                         no




7.10 SAFETY
page 161


7.10.1 Grounding

    • The case of an object should be tied to ground to give current a path to follow in the case of
a fault that energizes the case. (Note: fuses or breakers will cut off the power, but the fault will be
on for long enough to be fatal.)


                                e.g., wire break off
                                and touches case




              Current can flow two ways, but most will follow the path of least
              resistance. Good grounding will keep the worker relatively safe
              in the case of faults.



    • Step potential is another problem. Electron waves from a fault travel out in a radial direction
through the ground. If a worker has two feet on the ground at different radial distances, there will
be a potential difference between the feet that will cause a current to flow through the legs. If
there is a fault, don’t run/walk away/towards.


    • Always ground systems first before applying power. (The first time a system is activated it
will have a higher chance of failure.)


    • Safe current levels are listed below [ref hydro handbooks], but be aware that in certain cir-
cumstances very low currents can kill. When in doubt, take no chances.
page 162




             current in body (mA)   effect
             0-1                    negligible
             1-5                    uncomfortable
             10-20                  possibility for harm
             20-50                  muscles contract
             50-100                 pain, fainting, physical injuries
             100-300                heart fibrillates
             300+                   burns, breathing stops, etc.



7.10.2 Programming/Wiring

    • Fail-safe wiring should be used so that if wires are cut or connections fail, the equipment
should turn off. For example, if a normally closed stop button is used and the connector is broken
off, it will cause the machine to stop, as if the stop button has been pressed and broken the con-
nection.


    • Programs should be designed so that they check for problems and shut down in safe ways.
Some PLC’s also have power interruption sensors; use these whenever danger is present.


    • Proper programming techniques will help detect possible problems on paper instead of in
operation.



7.10.3 PLC Safety Rules

    • Use a fail-safe design.


    • Make the program inaccessible to unauthorized persons.


    • Use predictable, non-configurable programs.


    • Use redundancy in hardware.
page 163




    • Directly connect emergency stops to the PLC, or the main power supply.


    • Check for system OK at start-up.


    • Provide training for new users and engineers to reduce careless and uninformed mistakes.


    • Use PLC built in functions for error and failure detection.




7.10.4 Troubleshooting

    1. Look at the process and see if it is in a normal state. i.e. no jammed actuators, broken parts,
etc. If there are visible problems, fix them and restart the process.
    2. Look at the PLC to see which error lights are on. Each PLC vendor will provide documents
that indicate which problems correspond to the error lights. Common error lights are given below.
If any off the warning lights are on, look for electrical supply problems to the PLC.


       HALT - something has stopped the CPU
       RUN - the PLC thinks it is OK (and probably is)
       ERROR - a physical problem has occurred with the PLC

    3. Check indicator lights on I/O cards to see if they match the system. i.e., look at sensors that
are on/off, and actuators on/off, check to see that the lights on the PLC I/O cards agree. If any of
the light disagree with the physical reality, then interface electronics/mechanics need inspection.
    4. Turn the PLC off and on again. If this fixes the problem it could be a programming mis-
take, or a grounding problem. Programming mistakes often happen the same way each time.
Grounding problems are often random, and have no pattern.
    5. Consult the manuals or use software if available. If no obvious problems exist, the problem
is not simple and requires a technically skilled approach.
    6. If all else fails call the vendor (or the contractor) for help.
page 164




7.11 DESIGN CASES



7.11.1 DEADMAN SWITCH

    A motor will be controlled by two switches. The Go switch will start the motor and the Stop
switch will stop it. If the Stop switch was used to stop the motor, the Go switch must be thrown
twice to start the motor. When the motor is active a light should be turned on. The Stop switch
will be wired as normally closed.



               Motor                Stop
                                                                        C5:0     RES


               Go                    Motor                        CTU      C5:0
                                                                  Preset 2
                                                                  Accum. 1

               C5:0/DN              Stop
                                                                        Motor


               Motor
                                                                        Light


            Consider:
            - what will happen if stop is pushed and the motor is not running?
page 165


7.11.2 CONVEYOR

    A conveyor is run by switching on or off a motor. We are positioning parts on the conveyor
with an optical detector. When the optical sensor goes on, we want to wait 1.5 seconds, and then
stop the conveyor. After a delay of 2 seconds the conveyor will start again. We need to use a start
and stop button - a light should be on when the system is active.



                 Go             Stop                                  Light

             Light

                 Part Detect                                        TON        T4:0
                                                                    Time base: 0.01
                                                                    Preset 150

                 T4:0/DN                                            TON       T4:1
                                                                    Time base: 1.0
                                                                    Preset 2

                 T4:0/DN               Light
                                                                          Motor

                 T4:1/DN
                                                                          T4:0      RES

                 T4:1/DN
                                                                          T4:1      RES

        - what is assumed about part arrival and departure?




7.11.3 ACCEPT/REJECT SORTING
page 166


    For the conveyor in the last case we will add a sorting system. Gages have been attached that
indicate good or bad. If the part is good, it continues on. If the part is bad, we do not want to delay
for 2 seconds, but instead actuate a pneumatic cylinder.



                  Go              Stop                                   Light

             Light

                  Part Detect                                          TON        T4:0
                                                                       Time base: 0.01
                                                                       Preset 150

                  T4:0/DN         Part Good                            TON       T4:1
                                                                       Time base: 1.0
                                                                       Preset 2

                  T4:0/DN         Part Good                            TON       T4:2
                                                                       Time base: 0.01
                                                                       Preset 50
                  T4:1/EN           Light
                                                                             Motor
                  T4:2/EN
                                                                             Cylinder
                  T4:1/DN
                                                                             T4:0      RES
                  T4:2/DN

                  T4:1/DN
                                                                             T4:1      RES
                  T4:2/DN
                                                                             T4:2      RES


7.11.4 SHEAR PRESS

    The basic requirements are,
page 167


1. A toggle start switch (TS1) and a limit switch on a safety gate (LS1) must
       both be on before a solenoid (SOL1) can be energized to extend a
       stamping cylinder to the top of a part.
2. While the stamping solenoid is energized, it must remain energized until a
       limit switch (LS2) is activated. This second limit switch indicates the
       end of a stroke. At this point the solenoid should be de-energized, thus
       retracting the cylinder.
3. When the cylinder is fully retracted a limit switch (LS3) is activated. The
       cycle may not begin again until this limit switch is active.
4. A cycle counter should also be included to allow counts of parts produced.
       When this value exceeds 5000 the machine should shut down and a
       light lit up.
5. A safety check should be included. If the cylinder solenoid has been on for
       more than 5 seconds, it suggests that the cylinder is jammed or the
       machine has a fault. If this is the case, the machine should be shut
       down and a maintenance light turned on.
page 168




              TS1          LS1             LS3        C5:0/DN SOL1
                                                                               L

              LS2                                                  SOL1        U

          T4:0/DN


              SOL1                                               CTU        C5:0
                                                                 Preset 5000
                                                                 Accum. 0

              SOL1                                               RTO       T4:0
                                                                 Time base: 1.0
                                                                 Preset 5

              T4:0/DN
                                                                       LIGHT L
              C5:0/DN


              RESET
                                                                       T4:0        RES


     - what do we need to do when the machine is reset?




7.12 ADDRESSING

  • To use advanced data functions in a PLC, we must first understand the structure of the data
page 169


in the PLC memory.


    • There are two types of memory used in a PLC-5.
       Program Files - these are a collection of 1000 slots to store up to 1000 pro-
             grams. The main program will be stored in program file 2. SFC pro-
             grams must be in file 1, and file 0 is used for program and password
             information. All other program files from 3 to 999 can be used for
             ‘subroutines’.
       Data Files - This is where the variable data is stored that the PLC programs
             operate on. This is quite complicated, so a detailed explanation fol-
             lows.




7.12.1 Data Files

    • In brief PLC memory works like the memories in a pocket calculator. The values below are
for a PLC-5, although most Allen-Bradley PLCs have a similar structure.
page 170




                For Allen-Bradley PLC-5

                                               Rack
                                                  I/O slot number in rack

                 Interface to           O:000            outputs
                 outside world          I:               inputs
                                        S2:              processor status
                                        B3:              bits in words
                                        T4:              timers
               Fixed types of                            counters
                                        C5:
               Data files                                control words
                                        R6:
                                        N7:              integer numbers
                                        F8:              floating point numbers

                                             Other files 9-999 can be created and and used.
                                             The user defined data files can have different
                                             data types.




    • These memory locations are typically word oriented (16 bits, or 2 bytes). This includes the
bit memory. But the T4, C5, R6 data files are all three words long.


    • All values are stored and used as integers (except when specified, eg. floating point). When
integers are stored in binary format 2’s complements are used to allow negative numbers. BCD
values are also used.


    • There are a number of ways the PLC memory can be addressed,
       bit - individual bits in memory can be accessed - this is like addressing a sin-
               gle output as a data bit

             I:000/02 - the third input bit from input card I:000
             B3:3 - a bit in memory
       word/integer - 16 bits can be manipulated as a group
page 171




             N7:8 - an integer from memory
             I:000 - an integer with all input values from an input card
       data value - an actual data value can be provided

             8 - an integer
             8.5 - a floating point number
       file level - an array of data values can be manipulated and operated on as a
               group

             #F8:5 - indicates a group of values starting at F8:5
             #N7:0 - indicates a group of values starting at I7:0
       indirect - another memory location can be used in the description of a loca-
              tion.

             I:000/[N7:2] -If the integer memory N7:2 location contains 5 this will become I:000/
             I:[N7:1]/03 -If the integer memory location contains 2 this will become I:002/03
             #I:[N7:1] -If the integer memory location contains 2 the file will start at I:002

       expression - a text string that describes a complex operation

             “sin(F8:3) + 1.3” - a simple calculation


    • For the user assigned data files from 9 to 999 different data types can be assigned. These
can be one of the data types already discussed, or another data type.
       A - ASCII
       B - bit
       BT - block transfer
       C - counter
       D - BCD
       F - floating point
       MG - message
       N - integer (signed, unsigned, 2s compliment, BCD)
       PD - PID controller
       R - control
       SC - SFC status
page 172


        ST - ASCII string
        T - timer



7.12.1.1 - Inputs and Outputs

    • Recall that the inputs and outputs use octal for specific bits. This means that the sequence of
output bits is 00, 01, 02, 03, 04, 05, 06, 07, 10, 11, 12, 13, 14, 15, 16, 17




7.12.1.2 - User Numerical Memory

    • Bit data file B3 is well suited to use of single bits. the data is stored as words and this allows
two different ways to access the same bit.
        B3:0/0 = B3/0
        B3:0/10 = B3/10
        B3:1/0 = B3/16
        B3:1/5 = B3/21
        B3:2/0 = B3/32
        etc...

    • The integer file N7 stores words in 2’s complement form. This allows values from -32768 to
32767. These values can be addressed as whole words, and individual bits can also be changed.


    • The floating point file F8 will store floating point numbers that can only be used by floating
point functions. The structure of these numbers does not allow bit access.




7.12.1.3 - Timer Counter Memory

    • Timer T4 values are addressed using the number of the timers, and an associated data type.
For example the accumulator value of timer 3 is T4:3.ACC or T4:3/ACC.
        EN - timer enabled bit
page 173


       TT - timer timing bit
       DN - timer done bit
       PRE - preset word
       ACC - accumulated time word

    • Counter C5 values are addressed using the number of the counters, and an associated data
type. For example the accumulator value of counter 3 is C5:3.ACC or C5:3/ACC.
       CU - count up bit
       CD - count down bit
       DN - counter done bit
       OV - overflow bit
       UN - underflow bit
       PRE - preset word
       ACC - accumulated count word



7.12.1.4 - PLC Status Bits (for PLC-5s)

    • Some of the more commonly useful status bits in data file S2 are given below. Full listings
are given in the manuals.
       S2:0/0 carry in math operation
       S2:0/1 overflow in math operation
       S2:0/2 zero in math operation
       S2:0/3 sign in math operation
       S2:1/14 first scan of program file
       S2:8 the scan time (ms)
       S2:18 year
       S2:19 month
       S2:20 day
       S2:21 hour
       S2:22 minute
       S2:23 second
       S2:28 watchdog setpoint
       S2:29 fault routine file umber
       S2:30 STI (selectable timed interrupt) setpoint
       S2:31 STI file number
page 174


       S2:46-S2:54,S2:55-S2:56 PII (Programmable Input Interrupt) settings
       S2:55 STI last scan time (ms)
       S2:77 communication scan time (ms)



7.12.1.5 - User Function Memory

    • Control file R6 is used by various functions to track progress. Values that are available are,
listed below. The use of these bits is specific to the function using the control location.
       EN - enable bit
       EU - enable unload
       DN - done bit
       EM - empty bit
       ER - error bit
       UL - unload bit
       IN - inhibit bit
       FD - found bit
       LEN - length word
       POS - position word




7.13 INSTRUCTION TYPES

    • There are basic categories of instructions,
       Basic (discussed before)
             - relay instructions
             - timer instructions
             - counter instructions
       Program Control
             - branching/looping
             - immediate inputs/outputs
             - fault/interrupt detection
       Basic Data Handling
             - moves
page 175


             - computation instructions
             - boolean instructions
             - conversion
       Logical
             - comparisons
       Advanced Data Handling
             - file instructions
             - shift registers/stacks
       Complex
             - PID
             - communications
             - high speed counters
             - ASCII string functions

    • The reader should be aware that some functions are positive edge triggered (i.e. they only
work the scan is active). while most are active any time the input is active. Some examples of
edge triggered and non-edge triggered functions are listed below,
       Edge Triggered
            CTU, CTD
       Non-edge triggered
            TON, TRO, TOF, ADD, MUL, etc.




7.13.1 Program Control Structures

    • These change the flow of execution of the ladder logic.




7.13.2 Branching and Looping

    • These functions allow control found in languages like Fortran
       IF-THEN is like MCR (Master Control Reset)
       GOTO is like JMP (Jump)
page 176


       SUBROUTINES is like Program Files

    • MCR blocks have been used earlier, but they are worth mentioning again.


            MCR

                                      A
                                                        MCR

                              If A is true then the MCR will cause the ladder in between
                              to be executed. If A is false it is skipped.

                                                            MCR



    • Block of ladder logic can be bypassed using a jump statment.


            JMP

                                      A             B
                                                        JMP 01

                              If A and B are true, the program will jump to LBL:01
                              to be executed. If A or B is false it is skipped.

                                    LBL 01



    • Subroutines allow reusable programs to be written and called as needed. They are different
from jump statements because they are not part of the main program (they are other program
files), and arguments can be passed and returned.
page 177




          SUBROUTINES/PROGRAM FILES
                           A                                JSR (Jump subroutine)
    program file 2                                          Program File 3
                                                            Input par N7:0
                                                            Input par 123
                                                            Return par N7:1

                          A separate ladder logic program is stored in program file 3. This fea-
                          ture allows the user to create their own ‘functions’. In this case if A is
                          true, then the program below will be executed and then when done
                          the ladder scan will continue after the subroutine instruction. The
                          number of data values passed and returned is variable.

                                                            SBR (subroutine arguments)
                                                            Input par N10:0

                            If B is true the subroutine will return and the values listed will be
                            returned to the return par. For this example the value that is in
                            N10:1 will eventually end up in N7:1
    program file 3



                                        B                               RET
                                                                        Return par N10:1




    • For next loops can also be done to repeat blocks of ladder logic inside a single scan. Care
must be used for this instruction so that the ladder logic does not get caught in an infinite, or long
loop - if this happens the PLC will experience a fault and halt.
page 178




                       A
                                                                   FOR
                                                                   label number 0
                                                                   index N7:0
                                                                   initial value 0
                                                                   terminal value 9
                                                                   step size 1

                                                                   ADD
                                                                   Source A 1
                                                                   Source B N7:1
                                                                   Dest N7:1

                                                                   NXT
                                                                   label number 0


        Note: if A is true then the loop will repeat 10 times, and the value of N7:1 will be
        incresed by 10. If A is not true, then the ADD function will only be executed once and
        N7:1 will increase in value by 1.




    • Ladder logic programs always have an end statement, but it is often taken for granted and
ignored. Most modern software automatically inserts this. Some PLCs will experience faults if
this is not present.



                           A           B                           C



                                                            END


               When the end (or End Of File) is encountered the PLC will stop scanning the
               ladder, and start updating the outputs. This will not be true if it is a subroutine
               or a step in an SFC.
page 179


    • There is also a temporary end (TND) that for a single ladder scan will skip the remaining
portion of a program.


    • A one shot contact can be used to turn on a ladder run for a single scan. When the run has a
positive rising edge the oneshot will turn on the run for a single scan. Bit ‘B3:0’ is used here to
track to rung status.



                  A             B3:0
                                 ONS                                              B



       A


       B




7.13.2.1 - Immediate I/O Instructions
page 180




      • The normal operation of the PLC is



      fast [input scan]
                                             Input values read


                                          outputs are updated in
       slow [ladder logic is checked]
                                          memory only as ladder
                                          logic scanned


                                             Output values are
       fast [outputs updated]
                                             changed to match
                                             values in memory




    • This approach avoids problems caused by logic setting and resetting outputs before done.


    • If we have a problem we may want to update an output immediately, and not wait for the
PLC to complete its scan of the ladder logic. To do this we use immediate inputs and outputs.
page 181




          e.g. Check for nuclear reactor overheat

                                                                 I:001/03 overheat sensor
                                                                 O:010/01 reactor shutdown

                                                                      I:001
                                                                         IIN
                       I:001/03
                                                                                 O:010/01



                                                                       O:010
                                                                        IOT


                   These added statements can allow the ladder logic to examine a critical
                   input, and adjust a critical output many times during the execution of
                   ladder logic that might take too long for safety.




7.13.2.2 - Fault Detection and Interrupts

    • The PLC can be set up to run programs automatically. This is normally done for a few rea-
sons,
        - to deal with errors that occur (eg. divide by zero)
        - to run a program at a regular timed interval (eg. SPC calculations)
        - to respond when a long instruction is complete (eg. analog input)
        - when a certain input changed (eg. panic button)

    • Two types of errors will occur - terminal (critical) and warnings (non-critical). A critical
failure will normally stop the PLC.


    • In some applications faults and failures must be dealt with in logic if possible, if not the sys-
tem must be shut down.
page 182


    • There are some memory locations that store indications of warning and fatal errors that have
occurred. The routine in program file [S:29] needs to be able to detect and clear the fault.
       S:29 - program file number to run when a fault occurs

    • To set a timed interrupt we will set values in the status memory as indicated below. The pro-
gram in file [S:31] will be run every [S:30]ms.
       S:30 - timed delay between program execution - an integer number of ms
       S:31 - the program number to be run

    • To cause an interrupt when a bit changes the following bits can be set.
       S:46 - the program file to run when the input bit changes
       S:47 - the rack and group number (eg. if in the main rack it is 000)
       S:48 - mask for the input address (eg. 0000000000000100 watches 02)
       S:49 - for positive edge triggered =1 for negative edge triggered = 0
       S:50 - the number of counts before the interrupt occurs 1 = always up to
              32767




7.13.3 Basic Data Handling

    • Some handy functions found in PLC-5’s (similar functions are available in other PLC’s)




7.13.3.1 - Move Functions

    • There are two types of move functions,
       MOV(value,destination) - moves a value to a memory location
       MVM(value,mask,destination) - moves a value to a memory location, but
           with a mask to select specific bits.

    • The following function moves data values between memory locations. The following exam-
ple moves a floating point number from floating point memory 7 to 23
page 183




                            MOV

                             Source F8:07
                             Destination F8:23




   • The following example moves a floating point number from floating point memory F8:7 to
integer memory N7:23


                            MOV

                             Source F8:07
                             Destination N7:23




   • The following example puts an integer value 123 in integer memory N7:23


                            MOV

                             Source 123
                             Destination N7:23




   • A more complex example of the move functions follows,
page 184




                                                                  MOV
                                                                  source 130
                                                                  dest N7:0


                                                                  MOV
                                                                  source N7:1
                                                                  dest N7:2


                                                                  MVM
                                                                  source N7:3
                                                                  mask N7:4
                                                                  dest N7:5

             before (binary)                            after (binary)

           N7:0     0000000000000000                   N7:0    0000000010000010
           N7:1     1101101101010111                   N7:1    1101101101010111
           N7:2     0000000000000000                   N7:2    1101101101010111
           N7:3     1101100010111011                   N7:3    1101100010111011
           N7:4     1010101010101010                   N7:4    1010101010101010
           N7:5     0000000000000000                   N7:5    1000100010101010




7.14 MATH FUNCTIONS

    • These functions use values in memory, and store the results back in memory (Note: these
functions do not use variables like normal programming languages.)


    • Math functions are quite similar. The following example adds the integer and floating point
number and puts the results in ‘F8:36’.
page 185




                          ADD

                          source A N7:04
                          source B F8:35
                          destination F8:36




• Basic PLC-5 math functions include,
  ADD(value,value,destination) - add two values
  SUB(value,value,destination) - subtract
  MUL(value,value,destination) - multiply
  DIV(value,value,destination) - divide
  NEG(value,destination) - reverse sign from positive/negative
  CLR(value) - clear the memory location

• Consider the example below,
page 186




                                          ADD
                                          source A N7:0
                                          source B N7:1
                                          dest. N7:2
                                          ADD                    addr.    before   after
                                          source A 1
                                          source B N7:3          N7:0     10       10
                                          dest. N7:3             N7:1     25       25
                                                                 N7:2     0        35
                                          SUB                    N7:3     0        1
                                          source A N7:1          N7:4     0        -10
                                          source B N7:2          N7:5     0        250
                                          dest. N7:4             N7:6     0        2
                                          MULT                   N7:7     0        10
                                          source A N7:0          N7:8     100      0
                                          source B N7:1
                                          dest. N7:5             F8:0     10.0     10.0
                                                                 F8:1     25.0     25.0
                                          DIV                    F8:2     0        2.5
                                          source A N7:1          F8:3     0        2.0
                                          source B N7:0
                                          dest. N7:6
                                          NEG
                                          source A N7:4          Note: integer values are
                                          dest. N7:7             limited to ranges between -
                                                                 32768 and 32767, and there
                                          CLR                    are no fractions.
                                          dest. N7:8
                                          DIV
                                          source A F8:1
                                          source B F8:0
                                          dest. F8:2
                                          DIV
                                          source A N7:1
                                          source B N7:0
                                          dest. F8:3


• As an exercise, try the calculation below with ladder logic,
page 187




    N7:2 = -(5 - N7:0 / N7:1)




• Some intermediate math functions include,
  CPT(destination,expression) - does a calculation
  ACS(value,destination) - inverse cosine
  COS(value,destination) - cosine
  ASN(value,destination) - inverse sine
  SIN(value,destination) - sine
  ATN(value,destination) - inverse tangent
  TAN(value,destination) - tangent
  XPY(value,value,destination) - X to the power of Y
  LN(value,destination) - natural log
  LOG(value,destination) - base 10 log
  SQR(value,destination) - square root

• Examples of some of these functions are given below.
page 188




given
                       C
         A =   ln B + e acos ( D )
assign
         A = F8:0
         B = F8:1
         C = F8:2
         D = F8:3

                                                LN
                                                SourceA F8:1
                                                Dest. F8:4


                                                XPY
                                                SourceA 2.718
                                                SourceB F8:2
                                                Dest F8:5

                                                ACS
                                                SourceA F8:3
                                                Dest. F8:6


                                                MUL
                                                SourceA F8:5
                                                SourceB F8:6
                                                Dest F8:7

                                                ADD
                                                SourceA F8:4
                                                SourceB F8:7
                                                Dest F8:7

                                                SQR
                                                SourceA F8:7
                                                Dest. F8:0
page 189




 It can also be done with a compute expression

                                          CPT
                                          Dest. F8:0
                                          Expression
                                          SQR(LN(F8:1)+XPY(2.718,F8:2)*ACS(F8:3))



• For practice implement the following function,



           x = atan  y  y + log ( y ) 
                          ------------------------
                      y + 1 




• Some functions are well suited to statistics.
   AVE(start value,destination,control,length) - average of values
   STD(start value,destination,control,length) - standard deviation of values
   SRT(start value,control,length) - sort a list of values

• Examples of these functions are given below.
page 190




                                                        AVE
                                                        File #F8:0
                                                        Dest F8:4
                                                        Control R6:1
                                                        length 4
                                                        position 0


                                                        STD
                                                        File #F8:0
                                                        Dest F8:5
                                                        Control R6:2
                                                        length 4
                                                        position 0


                                                        SRT
                                                        File #F8:0
                                                        Control R6:3
            Addr.     before   after                    length 4
                                                        position 0
            F8:0      3        1
            F8:1      1        2
            F8:2      2        3
            F8:3      4        4
            F8:4      0        2.5
            F8:5      0        1.29



• There are also functions for basic data conversion.
   TOD(value,destination) - convert from BCD to binary
   FRD(value,destination) - convert from binary to BCD
   DEG(value,destination) - convert from radians to degrees
   RAD(value,destination) - convert from degrees to radians

• Examples of these functions are given below.
page 191




                                             FRD
                                             Source A D9:0
                                             Dest. N7:0


                                             TOD
                                             Source A N7:1
                                             Dest. D9:1


                                             DEG
                                             Source A F8:0
                                             Dest. F8:2


                                             RAD
                                             Source A F8:1
                                             Dest. F8:3

               Addr.   before                     after

               N7:0    0000000000000000           0000011100000001
               N7:1    0000001000100100           0000001000100100
               F8:0    3.141                      3.141
               F8:1    45                         45
               F8:2    0                          180
               F8:3    0                          0.785
               D9:0    0000 0000 0000 0000        0000 0101 0100 1000
               D9:1    0001 0111 1001 0011        0001 0111 1001 0011




7.15 LOGICAL FUNCTIONS




7.15.1 Comparison of Values
page 192


    • These functions act like input contacts. The equivalent to these functions are if-then state-
ments in traditional programming languages.


    • Basic comparison functions in a PLC-5 include,
       CMP(expression) - compares two values for equality
       EQU(value,value) - equal
       NEQ(value,value) - not equal
       LES(value,value) - less than
       LEQ(value,value) - less than or equal
       GRT(value,value) - greater than
       GEQ(value,value) - greater than or equal

    • The comparison function below compares values at locations A and B. If they are not equal,
the output is true. The use of the other comparison functions is identical.



                                                                     O:012
                                NEQ
                                A N7:03
                                B N7:02                                   04



                                                                     O:012
                                CMP
       OR                       expression
                                N7:03 <> N7:02                            04




    • More advanced comparison functions in a PLC-5 include,
       MEQ(value,mask,threshold) - compare for equality using a mask
       LIM(low limit,value,high limit) - check for a value between limits

    • Examples of these functions are shown below.
page 193




                      LIM
                      low limit N7:0                                         N7:4/0
                      test value N7:1
                      high limit N7:2


                      LIM
                      low limit N7:2                                         N7:4/1
                      test value N7:1
                      high limit N7:0


                      LIM
                      low limit N7:2                                         N7:4/2
                      test value N7:3
                      high limit N7:0


                      MEQ
                      source N7:0                                            N7:4/3
                      mask N7:1
                      compare N7:2


              Addr.     after (decimal)                   after (binary)

              N7:0      1                                 0000000000000001
              N7:1      5                                 0000000000000101
              N7:2      11                                0000000000001011
              N7:3      15                                0000000000001111
              N7:4                                        0000000000001101




7.16 BINARY FUNCTIONS

  • These functions allow Boolean operations on numbers and values in the PLC memory.


  • Binary functions are also available for,
page 194


     AND(value,value,destination) - Binary and function
     OR(value,value,destination) - Binary or function
     NOT(value,value,destination) - Binary not function
     XOR(value,value,destination) - Binary exclusive or function

  • Examples of the functions are,



                                                              AND
                                                              source A N7:0
                                                              source B N7:1
                                                              dest. N7:2
                                                              OR
                                                              source A N7:0
                                                              source B N7:1
                                                              dest. N7:3
                                                              XOR
                                                              source A N7:0
                                                              source B N7:1
                                                              dest. N7:4
                                                              NOT
                                                              source A N7:0
                                                              dest. N7:5


                                     addr.     data (binary)
                                     N7:0      0011010111011011
                                     N7:1      1010010011101010
                          after      N7:2      1010010011001010
                                     N7:3      1011010111111011
                                     N7:4      1001000100110001
                                     N7:5      1100101000100100




7.17 ADVANCED DATA HANDLING
page 195


7.17.1 Multiple Data Value Functions

    • We can also deal with large ‘chunks’ of memory at once. These will not be covered, but are
available in texts. Some functions include,
       - move/copy memory blocks
       - add/subtract/multiply/divide/and/or/eor/not/etc blocks of memory

    • These functions are similar to single value functions, but they also include some matrix
operations. For a PLC-5 a matrix, or block of memory is also known as an array.


    • The basic functions are,
       FAL(control,length,mode,destination,expression) - will perform basic math
            operations to multiple values.
       FSC(control,length,mode,expression) - will do a comparison to multiple val-
            ues
       COP(start value,destination,length) - copies a block of values
       FLL(value,destination,length) - copies a single value to a block of memory

    • These functions are done on a PLC-5 using file commands. Typical operations include
       file to file - copy an array of memory from one location to another.
       element to file - one value is copied to a block of memory
       file to element - can convert between data types
       file add - add arrays
       file subtract - subtract arrays
       file multiply - multiply arrays
       file divide - divide an array by a value
       convert to/from BCD
       AND/OR/XOR/NOT - perform binary functions.

    • Examples of these functions are shown below.
page 196




                                   FAL
                                   Control R6:0
                                   length 5                        file to file
                                   position 0
                                   Mode all
                                   Destination #N7:5
                                   Expression #N7:0 + 5


                                   FAL
                                   Control R6:0
                                   length 5                        element to file
                                   position 0                      file to element
                                   Mode incremental
                                   Destination #N7:5
                                   Expression N7:0 + 5


                                   FAL
                                   Control R6:0
                                   length 5
                                   position 0                      file to element
                                   Mode incremental
                                   Destination N7:5
                                   Expression #N7:0 + 5




    • a useful function not implemented on PLC-5 processors is a memory exchange.




7.17.2 Block Transfer Functions

    • Certain PLC cards only have a single address (eg. O:001 or I:001) but multiple data values
need to be read or written to it. To do this the block transfer functions are used.


    • These will be used in the labs for analog input/output cards.
page 197




    • These functions will take more than a single scan, and so once activated they will require a
delay until they finish.


    • To use the write functions we set up a block of memory, the function shows this starting at
N9:0, and it is 10 words long (this is determined by the special purpose card). The block transfer
function also needs a control block of memory, this is BT10:1




      BT10:1/EN            Advance                   Block Transfer Write
                                                     Module Type Example Output Card
                                                     Rack 00
                                                     Group 3
                                                     Module 0
                                                     Control Block BT10:1
                                                     Data File N9:0
                                                     Length 10
                                                     Continuous No




    • To read values we use a similar method. In the example below 9 values will be read from
the card and be placed in memory locations from N9:4 to N9:11.




              BT10:0/15         read                            BTR
                                                                Rack: 00
                                                                Group: 0
                                                                Module: 0
                                                                BT Array: BT10:0
                                                                Data File: N9:4
                                                                Length: 9
                                                                Continuous: no
page 198


7.18 COMPLEX FUNCTIONS



7.18.1 Shift Registers

    • The values can be shifted left or right with the following functions.
       BSL - shifts left from the LSB to the MSB. The LSB must be supplied
       BSR - similar to the BSL, except the bit is input to the MSB and shifted to the
             LSB

    • These use bit memory blocks of variable length.


    • An example of a shift register is given below. In this case it is taking the value of bit B3:1/0
and putting it in the control word bit R6:2/UL. It then shifts the bits once to the right, B3:1/0 =
B3:1/1 then B3:1/1 = B3:1/2 then B3:1/2 = B3:1/3 then B3:1/3 = B3:1/4. Then the input bit is put
into the most significant bit B3:1/4 = I:000/00.


                                                                    bits shift right

               B3:1        MSB 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 LSB
                           15                                  00

                                                    I:000/00            5              R6:2/UL




                                           BSR
                                           File B3:1
                                           Control R6:2
                                           Bit address I:000/00
                                           Length 5




    • There are other types of shift registers not implemented in PLC-5s.
page 199




     Arithmetic Shift Left (ASL)
                  carry      msb                                 lsb
                     0           0   0   0   0       0   0   0   0     0


     Arithmetic Shift Right (ASR)
                                                                           carry
                         0       0   0   0   0       0   0   0   0           0


     Rotate Left (ROL)
                                 0   0   0   0 0 0           0   0
                                             carry
                                               0

     Rotate Right (ROR)
                                 0   0   0   0 0 0           0   0
                                             carry
                                                 0




7.18.2 Stacks

    • We can also use stack type commands. These allow values to be stored in a ‘pile’. This
allows us to write programs that will accumulate values that can be used later, or in sequence.


    • The basic concept of a FIFO stack is that the first element in is the first element out.


    • The PLC-5 commands are FFL to load the stack, and FFU to unload it.


    • The example below shows two instructions to load and unload the stack. The first time FFL
is activated it will grab all of the bits from the input card I:001 and store them on the stack, at
N7:0. The next value would be at N7:1, and so on until the stack length is met. When FFU is used
the value at N7:0 will be moved to set all of the bits on the output card O:003 and the values on
page 200


the stack will be shifted up so that the value previously in N7:1 is now in N7:0, etc. (note: the
source and destination do not need to be inputs and outputs)


                   A
                                            FFL
                                            source I:001
                                            FIFO N7:0
                                            Control R6:0
                                            length 5
                                            position 0


                   B
                                            FFU
                                            FIFO N7:0
                                            destination O:003
                                            Control R6:0
                                            length 5
                                            position 0




    • A Last-In-First-Out stack can also be used with the LFL/LFU functions.




7.18.3 Sequencers

    • Basically, sequencers are a method for using predetermined patterns to drive a process


    • These were originally based on motor driven rotating cams that made and broke switches.
When a number of these cams were put together, they would be equivalent to a binary number,
and could control multiple system variables.
page 201




                                                          As it rotates it makes contact with
                                                          none, one, or two terminals, as
                                                          determined by the depressions and
                                                          rises in the rotating cam.




     • A sequencer can keep a set of values in memory and move these to memory locations (such
as an output card) when directed.


     • These are well suited to state diagrams/processes with a single flow of execution (like traf-
fic lights)


     • The commands are,
        SQO(start,mask,source,destination,control,length) - sequencer output from
              table to memory address
        SQI(start,mask,source,control,length) - sequencer input from memory
              address to table
        SQL(start,source,control,length) - sequencer load to set up the sequencer
              parameters

     • An example of a sequencer is given below for traffic light control. The light patterns are
stored in memory (entered manually by the programmer). These are then moved out to the output
card as the function is activated. The mask (003F = 0000000000111111) is used so that only the 6
LSB are changed.
page 202




                                         SQO
                                         File B3:0
                                         Mask 003F
                                         Destination O:000
                                         Control R6:0
                                         Length 4
                                         Position 0



        B3:0     0   0   0   0   0   0   0   0   0   0   0   0   1   1   0   0
                 0   0   0   0   0   0   0   0   0   0   0   0   1   0   1   0
                 0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   1
                 0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   1
        B3:3                                             EW - green
                                                         EW - yellow
                                                         EW - red
                                                         NS - green
                                                         NS - yellow
                                                         NS - red




7.19 ASCII FUNCTIONS

  • ASCII functions can be used to interpret and manipulate strings in PLCs.


  • These functions include,
     ABL(channel, control, )- reports the number of ASCII characters including
          line endings
     ACB(channel, control, ) - reports the numbers of ASCII characters in buffer
     ACI(string, dest) - convert ASCII string to integer
     ACN(string, string,dest) - concatenate strings
     AEX(string, start, length, dest) - this will cut a segment of a string out of a
          larger string
     AIC(integer, string) - convert an integer to a string
     AHL(channel, mask, mask, control) - does data handshaking
     ARD(channel, dest, control, length) - will get characters from the ASCII
page 203


          buffer
     ARL(channel, dest, control, length) - will get characters from an ASCII
          buffer
     ASC(string, start, string, result) - this will look for one string inside another
     AWT(channel, string, control, length) - will write characters to an ASCII out-
          put

   • An example of this function is given below,




   • Try the problem below,



      Add the following numbers and store the results in ST10:2
      ST10:0 “100”
      ST10:1 “10”
      ST10:2




7.20 DESIGN TECHNIQUES



7.20.1 State Diagrams

   • We can implement state diagrams seen in earlier sections using many of the advanced func-
page 204


tion discussed in this section.


    • Most PLCs allow multiple programs that may be used as subroutines. We could implement
a block logic method using subroutine programs.


    • Consider the state diagram below and implement it in ladder logic. You should anticipate
what will happen if both A and C are pushed at the same time.




                   STA                                          STC
                                   B          D



                   A                                            C

                                       STB


                                                  first scan
page 205




PROGRAM 2
       first scan
                                           L   STB


                                           U   STA


                                           U   STC


       STA
                               JSR
                               program 3

       STB
                               JSR
                               program 4

       STC
                               JSR
                               program 5
page 206




   PROGRAM 3
         B
                                    U    STA


                                    L    STB


   PROGRAM 4
         C
                                    U    STB


                                    L    STC

             A      C
                                    U    STB


                                    L    STA
   PROGRAM 5

         D
                                    U    STC


                                    L    STB


                                   MCR




7.21 DESIGN CASES
page 207


7.21.1 If-Then

    • If-then can be implemented different ways, as a simple jump, or as a subroutine call.



                      A
                                                                 JMP
                                                                 LBL 01



                                                        IF (A) THEN GOTO (01)
                          01
                      LBL



                      A
                                                                 JSR
                                                                 FILE 3



                                                        IF (A) THEN {...... }




7.21.2 For-Next

    • For-next can be implemented as shown below, but recall that PLC programs do not execute
one line at a time.
page 208




                   LIM
                   N7:0                                                  MCR
                   min 1
                   max 10




                                                                                 for i = 1 to 10
                                                                                 next i
                     ADD
                     source A: N7:0
                     source B: 1
                     Dest.: N7:0

                                                                         MCR




    • A For/Next function is also available in the PLC.


    • A do-while can be done as a simple variation of this.




7.21.3 Conveyor

    • Consider a conveyor where parts enter on one end. they will be checked to be in a left or
right orientation with a vision system. If neither left nor right is found, he part will be placed in a
reject bin. The conveyor layout is shown below.
page 209




                         vision
                                               left         right          reject



 part movement
 along conveyor



                          conveyor location sensor




7.22 IMPLEMENTATION




7.23 PLC WIRING
   • Many configurations and packages are available. But essential components are:
      power supply - Provides voltage/current to drive the electronics (often5V, +/
             - 12V, +/- 24V)
      CPU - Where ladder logic is stored and processed; the main control is exe-
             cuted here.
      I/O (Input/Output) - A number of input/output terminals to connect to the
             actual system
      Indicator lights - Indicate mode/power and status. These are essential when
             diagnosing problems.

   • Common Configurations:
      Rack/Chassis - A rack or number of racks are used to put PLC cards into.
           These are easy to change, and expand.
      Shoebox - A compact, all-in-one unit (about the size of a shoebox) that has
           limited expansion capabilities. Lower cost and compactness make
           these ideal for small applications.

   • Criteria for evaluation:
page 210


     Rack, shoebox or micro
     # of inputs/outputs (digital)
     Memory - often 1K and up. Need is dictated by size of ladder logic program.
            A ladder element will take only a few bytes and will be specified in
            manufacturers documentation.
     # of I/O modules - When doing some exotic applications, a large number of
            special add-on cards may be required.
     Scan Time - The time to execute ladder logic elements. Big programs or
            faster processes will require shorter scan times. The shorter the scan
            time, the higher the cost. Typical values for this are 1 microsecond per
            simple ladder instruction.
     Communications - Serial and networked connections allow the PLC to be
            programmed and talk to other PLCs. The needs are determined by the
            application.


7.23.1 SWITCHED INPUTS AND OUTPUTS

  The Obvious:
     A PLC is just a computer. We must get information in so that it may make
          decisions and have outputs so that it can make things happen.

  Inputs:
     Switches - Contact, deadman, etc. all allow a voltage to be applied or
           removed from an input.
     Relays - Used to isolate high voltages from the PLC inputs, these act as
           switches.
     Encoder - Can keep track of positions.
     etc.
page 211




                                                                       PLC Input Card
        e.g.
                                                                       24V AC
                                    normally open push-button
                                                                                00
               24 V AC                                                          01
               Power
               Supply                                                           02
                                                                                03
                                                                                04
                                            Normally open                       05
                                            temperature switch
                                                                                06
                                            (See appendix in
                                            textbook for more                   07
                                            symbols)

                I:0.3                                                        GND
                                      Push Button
                          01
                I:0.3                                                      it is in rack 0
                                      Temperature Sensor                   I/O Group 3
                          03




7.23.1.1 - Input Modules

    • Input modules typically accept various inputs depending upon specified values.


    • Typical input voltages are:
       12-24 VDC
       100-120 VAC
       200-240 VAC
       12-24 VAC/DC
       24 VAC

    • DC voltages are usually lower and, therefore, safer (i.e., 12-24V)
page 212


    • DC inputs are very fast. AC inputs require a longer time (e.g., a 60Hz wave would require
1/60sec for reasonable recognition).


    • DC voltages are flexible being able to connect to greater varieties of electrical systems.


    • DC input cards typically have more inputs.


    • AC signals are more immune to noise than DC, so they are suited to long distances and
noisy (magnetic) environments.


    • AC signals are very common in many existing automation devices.




7.23.1.2 - Actuators

    • Inductive loads - Inductance is caused by a coil building up a magnetic field. When a volt-
age is removed from the coil, the field starts to collapse. As it does this, the magnetic field is
changed back to current/voltage. If this change is too sudden, a large voltage spike is created. One
way to overcome this is by adding a surge suppressor. One type of design was suggested by Steel
McCreery of Omron Canada Ltd.
page 213




                                   inductive load
         output                                                VDC+/VAC
                                                                              Uncompensated
                                                               VDC-/COM.
       common

  Control Relay (PLC)                                          Power supply

                                    inductive load
         output                    L                           VAC            Compensating
                                                          +                   for AC loads
                               C                R         Vs
                                                          -
                                                               COM.
       common
  Relay or Triac                                             Power supply
                        R = Vs(.5 to 1) ohms
                        C = (.5 to 1)/Adc (microfarads)
                        Vcapacitor = 2(Vswitching) + (200 to 300) V
                        Adc is the rated amperage of the load
                        Vs is the voltage of the load/power supply
                        Vswitching may be up to 10 time Vs

                                   inductive load
         output                                                  +            Compensating
                                                                              for DC loads

                                                                 -
       common
  Relay or Transistor                                          Power supply

7.23.1.3 - Output Modules

    • Typical Outputs
      Motors - Motors often have their own controllers, or relays because of the
            high current they require.
      Lights - Lights can often be powered directly from PLC output boards,
      etc.

    • WARNING - ALWAYS CHECK RATED VOLTAGES AND CURRENTS FOR PLC’s
AND NEVER EXCEED!
page 214




24 V DC                                            120 V AC
Output Card
                                                        Power
                                                        Supply
 00
                                                   COM.
 01                        Relay
 02

 03

 04                                             Motor

 05
               24 V lamp
 06

 07                                        +24 V DC
                                                Power
COM                                             Supply
                                           GND
 in rack 01
 I/O group 2
                             O:1.2
                                                    Motor
                                      03

                             O:1.2
                                                    Lamp
                                      07
page 215




 e.g. output example with dry (relay) contacts

 120 V AC/DC
 Output Card                                24 V DC
                                            Power
                                            Supply           120 V AC
  00                                                         Power
                                                             Supply
  01

  02

  03
                                      Relay
  04

  05

  06                                                     Motor

  07
  in rack 01
  I/O group 2                        24 V lamp



                 O:0.2
                                                 Motor
                             03

                 O:0.2
                                                Lamp
                             07




• Typical outputs operate in one of two ways:
  Dry contacts - A separate relay is dedicated to each output. This allows
        mixed voltages (AC or DC and voltage levels up to the maximum) as
        well as isolated outputs to protect other outputs and the PLC. Response
        times are often greater than 10ms. This method is the least sensitive to
page 216


              voltage variations and spikes.
        Switched outputs - A voltage is supplied to the PLC card and the card
              switches it to different outputs using solid state circuitry (transistors,
              triacs, etc.) Triacs are well suited to AC devices requiring less than an
              amp. They are sensitive to power spikes and might inadvertently turn
              on when there are transient voltage spikes. A resistor may need to be
              put in parallel with a load to ensure enough current is drawn to turn on
              the triac. The resistor size can be determined by

      PLC output card          I = leakage current (mA)

                                                                                    Vac
                                                    load
        PLC
        controlled                                                                        power
                                                                              Von         supply
        TRIAC                                R

                                                                                     neut.

                                        R < Von/I
        Transistor outputs use NPN or PNP transistors up to 1A typically. Their
              response time is well under 1ms.




7.24 THE PLC ENVIRONMENT

7.24.1 Electrical Wiring Diagrams

    • PLC’s are generally used to control the supply of power to a system. As a result, a brief
examination of electrical supply wiring diagrams is worthwhile.


    • Generally electrical diagrams contain very basic circuit elements, such as relays, transform-
ers, motors, fuses, lights, etc.


    • Within these systems there is often a mix of AC and DC power. 3 phase AC power is what
is delivered universally by electric utilities, so the wiring diagrams focus on AC circuits.
page 217




    • A relay diagram for a simple motor with a seal in circuit might look like the one shown
below,:


          terminals   power interrupter             motor starter

                                                    M
  L1

                                                    M
                                                                                         motor
  L2
                                                                                       3 phase
                                                    M                                    AC
  L3




                                                                    step down transformer




                                start
                                                    stop
                                                                M


                      M




    • The circuit designed for the motor controller must be laid out so that it may be installed in
page 218


an insulated cabinet. In the figure below, each box could be a purchased module(s).




           Main Breaker                          Contactors


                             Transformer

             Start                               Overload




                  Stop                        Terminal Block


         A physical layout for the control cabinet




    • After the Layout for the cabinet is determined, the wire paths must be determined. The fig-
ure below lays out the wire paths and modules to be used.
page 219




            L1


                     L2


                                L3



                     start




                     stop




                                                                    motor
                                                                  3 phase
                             3 phase AC                             AC



7.24.2 Wiring

   • Discrete inputs - If a group of input voltages are the same, they can be grouped together. An
page 220


example of this is shown below:


                                                                         PLC Input

                   +                                                        I0

                                                                            I1
       24VDC
                                                                            I2

                                                                            I3
                   -                                                       COM.




    • If the input voltages are different and/or come from different sources, the user might use
isolated inputs.


                                                                        PLC Input Card
                       24VAC

                        COM                                                 I0
                                                                            N0
                                    +
                                                                            I1
                        24VDC
                                    -                                       N1
                                                                            I2
                                +                                           N2
                       12VDC
                                -




    • Analog Inputs - The continuous nature of these inputs makes them very sensitive to noise.
More is discussed in the next section, and an example is given below:
page 221




                                        A shield is a metal sheath that        Analog Input
                                        surrounds the wires


    Analog voltage source

                 +                                                                IN1
                                                                                  REF1
                  -                                                               SHLD




7.24.3 Shielding and Grounding

    • In any sort of control system, wire still carries most inputs/outputs/communications


    • We transmit signals along wires by pushing/pulling electrons in one end of the metal wires.
Based upon the push/pull that shows up at the other end, we determine the input/output/communi-
cations. *** The key idea is that a signal propagates along the wire.


    • There are two problems that occur in these systems.
       1. Different power sources in the same system can cause different power sup-
              ply voltages at opposite ends of a wire. As a result, a current will flow
              and an unwanted voltage appears. This can destroy components and
              create false signal levels.
       2. Magnetic fields crossing the long conductors or in conductor loops can
              induce currents, destroy equipment, give false readings, or add
              unwanted noise to analog data signals.

    • General design points
       - Choose a good shielding cabinet
       - Avoid “noisy” equipment when possible
page 222


          - Separate voltage levels, and AC/DC wires from each other when possible.

        • typical sources of grounding problems are:
          - Electrostatic
          - Magnetic
          - Electromagnetic
          - Resistance coupled circuits
          - Ground loops



        • Shielded wire is one good approach to reducing electrostatic/magnetic interference. The
conductors are housed in a conducting jacket or the circuitry in housed in a conducting metal cab-
inet.


        • Resistance coupled devices can have interference through a common power source, such as
power spikes or brownouts caused by other devices in a factory.


        • Ground loops are caused when too many separate connections to ground are made creating
loops of wire that become excellent receivers for magnetic interference that induces differences in
voltage between grounds on different machines. The common solution is to use a common ground
bar.
page 223




                                          Preferred


    device A                                             device A
                       ground loop #1


                             device B                                      device B


                         ground loop #2




                                                          -V
                                                         gnd
                                                         +V
    +V       -V

    power          gnd                                   power
    supply                                               supply




7.24.4 PLC Environment

   • Care must be taken to avoid certain environmental factors.
      Dirt - dust and grime can enter the PLC through air ventilation ducts. As dirt
             clogs internal circuitry and external circuitry, it can effect operation. A
             storage cabinet such as Nema 4 or 12 can help protect the PLC.
      Humidity - Humidity is not a problem with the modern plastic construction
             materials. But if the humidity condenses, the water can cause corro-
             sion, conduct current, etc. Condensation should be avoided at all costs.
      Temperature - The semiconductor chips in the PLC have operating ranges
             where they are operational. As the temperature is moved out of this
             range, they will not operate properly and the PLC will shut down.
             Ambient heat generated in the PLC will help keep the PLC operational
             at lower temperatures (generally to 0°C). The upper range for the
             devices is about 60°C, which is generally sufficient for sealed cabinets,
             but warm temperatures, or other heat sources (e.g. direct irradiation
             from the sun) can raise the temperature above acceptable limits. In
page 224


              extreme conditions, heating or cooling units may be required. (This
              includes “cold-starts” for PLCs before their semiconductors heat up).
       Shock and Vibration - The nature of most industrial equipment is to apply
              energy to exact changes. As this energy is applied, there are shocks and
              vibrations induced. Both will travel through solid materials with ease.
              While PLCs are designed to withstand a great deal of shock and vibra-
              tion, special elastomer/sprung or other mounting equipment may be
              required. Also note that careful consideration of vibration is also
              required when wiring.
       - Interference - Discussed in shielding and grounding.
       - Power - Power will fluctuate in the factory as large equipment is turned on
              and off. To avoid this various options are available. Use an isolation
              transformer. A UPS (Uninterruptable Power Supply) is also becoming
              an inexpensive option and are widely available for personal computers.




7.24.5 SPECIAL I/O MODULES

    • Counters
       • each card will have 1 to 16 counters generally.
       • typical sample speeds 200KHz
       • often allow count up/down
       • the counter can be set to zero, or up/down, or gating can occur with an
              external input.

    • High Speed Counter - When pulses are too fast to be counted during normal PLC ladder
scans, a special counter can be used that will keep track of the pulses.


    • Position controller - A card that will drive a motor (servo motor or stepper motor), and use
feedback of the motor position to increase accuracy (feedback is optional with stepper motors).
               • PID modules - For continuous systems, for example motor speed.
               • There are 2 types of PID modules. In the first, the CPU does the cal-
                 culation; in the second, a second controller card does the calculation.
page 225


                  - When the CPU does the calculation, the PID loop is slower.
                  - When a specialized card controls the PID loop, it is faster, but it costs
                    more.
                  • Typical applications - positioning workpieces.

    • Thermocouple - Thermocouples can be used to measure temperature, but these low voltage
devices require sensitive electronics to get accurate temperature readings.


    • Analog Input/Output - These cards measure voltages in various ranges and allow monitor-
ing of continuous processes. These cards can also output analog voltages to help control external
processes, etc.


    • Programmers - There are a few basic types of programmers in use. These tend to fall into 3
categories:
       1. Hand held units (or integrated) - They allow programming of PLC using a
             calculator type interface. And is often done using mnemonics.
       2. Specialized programming units - Effectively these are portable computers
             that allows graphical editing of the ladder logic, and fast uploading/
             downloading/monitoring of the PLC.
       3. PLC Software for Personal Computers - They are similar to the specialized
             programming units, but the software runs on a multi-use, user supplied
             computer. This approach is typically preferred over 2.

    • Man Machine Interface (MMI) - The user can use,
       • touch screens
       • screen and buttons
       • LCD/LED and buttons
       • keypad to talk to PLC

    • PLC CPU’s - A wide variety of CPU’s are available and can often be used interchangeably
in the rack systems. The basic formula is price/performance. The table below compares a few
CPU units in various criteria.
page 226




            PLC        Siemens        Allen-Bradley Siemens          Allen-Bradley AEG
                       S5-90U         MicroLogix S5-115U             SLC 5/04      PC-A984-145
                                                    (CPU 944)
FEATURE
RAM (KB)               4              4            96                64           8
Scan times (us)
  per basic instruc.                  1            0.8               .75          5
  overhead                            <1000        2000              <1000

Package                mini-module    micro      card                card
Power Supply           24 VDC         24DC/115AC 24 VDC              24DC/115AC
Maximum Cards          6 with addon                                  30
Maximum Racks          N/A                                           up to 30
  Maximum Drops                                                      64
  Distance                                         2.5m or 3km

Counters                              32           128               no limit
Timers                                32           128               no limit
Flags                                              2048


I/O - Digital
  on board             16             32           0                 0            0
  maximum              208            960          1024              960          256
I/O - Analog
  on board             0              0            0                 0
  maximum              16             0            64                120

Communication
  network              Sinec-L1       DH-485       Sinec-L1, prop.   DH+,devicenet Modbus/Modubs+
  line                                             printer, ASCII    RS-232
  other                                            ASCII



Functions
 PID                                  yes          option            yes          option

 Legend:
 prop. - proprietary technology used by a single vendor
 option - the vendor will offer the feature at an additional cost


• Specialty cards for IBM PC interface.
    - Siemens/Allen-Bradley/Etc have cards that fit into IBM computers and will
          communicate with PLC’s. Most modern PLCs will connect directly to
page 227


               a PC using ethernet or serial (RS-232) cables.

    • IBM PC computer cards - an IBM compatible computer card that plugs into a PLC bus and
allows use of common software
        • For example, the Siemens CP580 Simatic AT
                      - 1 com port (RS-232C)
                      - 1 serial port (?)
                      - 1 RS-422 serial port
                      - RGB monitor driver (VGA)
                      - keyboard
                      - 3.5” disk
                      - TTY interface
                      - 9 pin RS-232C mouse

    • Diagnostic Modules
        - Plug in and all they do is watch for trouble.

    • ID Tags - Special “tags” can be attached to products and, as they pass within range of
pickup sensors, they transmit (via radio) an ID number or a packet of data. This data can then be
used, updated and rewritten to the tags by the PLC
        • e.g., Omron V600/V620 ID system
        • a basic method for transmission of a text based message
        • tags on parts carry message
        • transceivers that receive and transmit changes

    • Voice Recognition/Speech - In some cases verbal I/O can be useful. Speech recognition
methods are still very limited, the user must control their speech. Background noise causes prob-
lems.




7.25 PRACTICE PROBLEMS

    1. A switch will turn a counter on when engaged. This counter can be reset by a second
switch. The value in the counter should be multiplied by 5, and then displayed as a binary output
page 228


using (201-208)


    2. Develop Ladder Logic for a car door/seat belt safety system. When the car door is open, or
the seatbelt is not done up, the ignition power must not be applied. In addition the key must be
able to switch ignition power.


       1. List of Inputs

       2. Draw Ladder

    3. TRUE / FALSE -- PLC outputs can be set with Bytes instead of bits.


    (ans. true)


    4. Create a ladder logic program that will start when input ‘A’ is turned on and calculate the
series below. The value of ‘n’ will start at 1 and with each scan of the ladder logic ‘n’ will increase
until n=100. While the sequence is being incremented, any change in ‘A’ will be ignored.


       x = 2(n – 1 )                   A = I:000/00
                                       n = N7:0
                                       x = N7:1
page 229




 ans.
                 A            B3:0
                                                               MOV
                                                               Source A 1
                                                               Dest. N7:0
                 A
                                                                                   B3:0
                                     LEQ
                                     Source A N7:0
               B3:0                  Source B 100


               B3:0
                                                               CPT
                                                               Dest. N7:1
                                                               Expression
                                                               2 * (N7:0 - 1)

               B3:0
                                                               ADD
                                                               Source A 1
                                                               Source B N7:0
                                                               Dest. N7:0




    5. A thumbwheel input card acquires a four digit BCD count. A sensor detects parts dropping
down a chute. When the count matches the BCD value the chute is closed, and a light is turned on
until a reset button is pushed. A start button must be pushed to start the part feeding. Develop the
ladder logic for this controller. Use a structured design technique such as a state diagram.


               INPUT                                OUTPUT

               I:000 - BCD input card               O:002/00 - chute open
               I:001/00 - part detect               O:002/01 - light
               I:001/01 - start button
               I:001/02 - reset button
page 230




             first scan
ans.

       S1                        start      S2
                                             parts
             waiting                         counting
                                             (chute open)


                                                     count
                          S3                         exceeded
            reset                  bin
                                   full
                               (light on)
page 231




first scan
                         L     S1


                         U     S2


                         U     S3

S2
                               chute

S3
                               light

S1
                        MCR

start
                         L     S2


                         U     S1


                        FRD
                        Source A I:000
                        Dest. C5:0/ACC


                        MCR
page 232




                 S2
                                                                              MCR

                 part detect
                                                                              CTD
                                                                              counter C5:0
                                                                              preset 0
                 C5:0/DN
                                                                                L      S3


                                                                                U      S2


                                                                              MCR

                 S3
                                                                              MCR

                 reset
                                                                                L      S1


                                                                                U      S3


                                                                              MCR




    6. Design and write ladder logic for a simple traffic light controller that has a single fixed
sequence of 16 seconds for both green lights and 4 second for both yellow lights. Use either stacks
or sequencers.
page 233




 ans. (the sequencer is best suited to this problem)             OUTPUTS
         T4:0/DN                                                 O:000/00 NSG - north south green
                                                                 O:000/01 NSY - north south yellow
                                      TON                        O:000/02 NSR - north south red
                                      T4:0                       O:000/03 EWG - east west green
                                      preset 4.0 sec             O:000/04 EWY - east west yellow
        T4:0/DN                                                  O:000/05 EWR - east west red
                            SQO
                            File #N7:0                           Addr.       Contents (in binary)
                            mask 003F
                            Dest. O:000                          N7:0        0000000000100001
                            Control R6:0                         N7:1        0000000000100001
                            Length 10                            N7:2        0000000000100001
                                                                 N7:3        0000000000100001
                                                                 N7:4        0000000000100010
                                                                 N7:5        0000000000001100
                                                                 N7:6        0000000000001100
                                                                 N7:7        0000000000001100
                                                                 N7:8        0000000000001100
                                                                 N7:9        0000000000010100



    7. A PLC is to be used to control a carillon (a bell tower). Each bell corresponds to a musical
note and each has a pneumatic actuator that will ring it. The table below defines the tune to be
programmed. Write a program that will run the tune once each time a start button is pushed. A
stop button will stop the song.

                            time sequence in seconds

        O:000/00       0    1     2   3   4   5    6   7     8   9   10 11 12 13 14 15 16
        O:000/00       0    0     0   0   0   0    0   1     0   0   0   0   0   0   0   0   1
        O:000/01       1    0     0   0   0   0    0   0     0   0   0   0   0   1   0   0   0
        O:000/02       1    0     0   1   0   0    0   0     0   1   1   0   0   0   1   0   0
        O:000/03       0    0     0   0   1   0    0   0     0   0   1   0   1   0   0   1   0
        O:000/04       0    1     1   0   0   0    0   0     0   0   0   0   0   0   0   0   0
        O:000/05       0    0     0   0   0   0    1   0     0   0   0   0   0   0   0   0   0
        O:000/06       0    0     0   0   0   1    1   0     0   0   0   0   1   0   0   0   0
        O:000/07       0    0     0   0   0   0    0   0     1   0   0   0   0   0   0   0   0
page 234


    8. The following program uses indirect addressing. Indicate what the new values in memory
will be when button A is pushed after the first and second instructions.


                     A
                                                                 ADD
                                                                 Source A 1
                                                                 Source B N7:0
                                                                 Dest. N7:[N7:1]

                     A
                                                                 ADD
                                                                 Source A N7:[N7:0]
                                                                 Source B N7:[N7:1]
         addr        before      after 1st    after 2nd          Dest. N7:[N7:0]
         N7:0        1
         N7:1        2
         N7:2        3


9. Divide the string in ST10:0 by the string in ST10:1 and store the results in ST10:2. Check for a
   divide by zero error.

   ST10:0 “100”
   ST10:1 “10”
   ST10:2
page 235




 ans)
                                                                      AIC
                                                                      Source ST10:0
                                                                      Dest N7:0


                                                                      AIC
                                                                      Source ST10:1
                                                                      Dest N7:1


                                      NEQ                             DIV
                                      Source A 0                      Source A N7:0
                                      Source B N7:1                   Source B N7:1
                                                                      Dest N7:2


                                                                      IAC
                                                                      Source N7:2
                                                                      Dest ST10:2



10. Write a number guessing program that will allow a user to enter a number on a terminal that
  transmits it to a PLC where it is compared to a value in ’N7:0’. If the guess is above "Hi" will
  be returned. If below "Lo" will be returned. When it matches "ON" will be returned.
page 236




 (ans.
                    R6:4/EN                                             ACB
                                                                        Channel 0
                                                                        Control R6:4

                                                                        ARL
                    EQU                                                 Channel 0
                    SourceA R6:4.POS                                    Dest ST9:0
                    Source B 2                                          Control R6:0
                                                                        Length 3

              R6:0/DN
                                                                        AIC
                                                                        Source ST9:0
                                                                        Dest N7:1


                                             LES                        AWT
                                             Source A N7:1              Channel 0
                                             Source B N7:0              Source ST9:1
                                                                        Control R6:1
                                                                        Length 2

                                             EQ                         AWT
                                             Source A N7:1              Channel 0
          ST9:1="Lo"                         Source B N7:0              Source ST9:2
          ST9:2="ON"                                                    Control R6:2
          ST9:3="Hi"                                                    Length 2

                                             GRT                        AWT
                                             Source A N7:1              Channel 0
                                             Source B N7:0              Source ST9:3
                                                                        Control R6:3
                                                                        Length 2


    11. Write a program that will convert a numerical value stored in ‘F8:0’ and write it out the
RS-232 output on a PLC-5 processor.
page 237




                                                                     MOV
                                                                     Source F8:0
                                                                     Dest N7:0


                                                                     AIC
                                                                     Source N7:0
                                                                     Dest ST9:0


                                           R6:0/EN               AWT
                                                                 ASCII WRITE
                                                                 Channel           0
                                                                 Source            ST9:0
                                                                 Control           R6:0
                                                                 String Length     5
                                                                 Characters Sent




7.26 REFERENCES

      Bryan, L.A., Bryan, E.A., Programmable Controllers, Industrial Text Company, 19??.


      Cox, R., Technician’s Guide to Programmable Controllers, Delmar Publishing, 19??.


      Filer and Linonen, Programmable Controllers and Designing Sequential Logic, Dryden &
Saunders/HBJ, 19??.


      Petruzella, F., Programmable Logic Controllers, McGraw-Hill Publishing Co., 19??.


      Sobh, M., Owen, J.C., Valvanis, K.P., Gracanin, S., “A Subject-Indexed Bibliography of Dis-
crete Event Dynamic Systems”, IEEE Robotics and Applications Magazine, June 1994, pp. 14-
20.
page 238




    Sugiyama, H., Umehara, Y., Smith, E., “A Sequential Function Chart (SFC) Language for
Batch Control”, ISA Transactions, Vol. 29, No. 2, 1990, pp. 63-69.


    Swainston, F., A Systems Approach to Programmable Controllers, Delmar Publishing, 19??.


    Teng, S.H., Black, J. T., “Cellular Manufacturing Systems Modelling: The Petri Net
Approach”, Journal of Manufacturing Systems, Vol. 9, No. 1, 1988, pp. 45-54.


    Warnock, I., Programmable Controllers: Operation and Application, Prentice Hall, 19??.


    Wright, C.P., Applied Measurement Engineering, Prentice-Hall, New Jersey, 1995.




7.27 LABORATORY - SERIAL INTERFACING TO A PLC

    Purpose:
       To write C++ and ladder logic program to communicate over RS-232.

    Overview:
       only transmit a fixed number of characters
       line endings important
       when plc receives the following charaters it should,
       A - turn on an output
       B - turn off an output
       C - return ’0’ if output is off, or ’1’ if output is on

    Pre-Lab:
       1. If necessary review PLC basics and the PLC-5 tutorial.
       2. Write a ladder logic program to receive ASCII commands as described in the Overview,
               and perform the desired action.
       3. Write a C++ program to communicate with the ladder logic program using a user menu.
page 239


In-Lab:
  1. Enter the ladder logic program and test it with a terminal program.
  2. Enter the C++ program and test it with a terminal emulator.
  3. Test the two programs together.

Submit (individually):
  1.Program listings.
page 240



8. PLCS AND NETWORKING


          Computer                               Devicenet




               RS-232       Process                                     Process
                            Actuators                                   Sensors
                                                   Process

                            Process                                     Process
                            Actuators                                   Sensors
            PLC
                          Normal I/O on PLC

                            Figure 22.1 - A Communication Example




8.1 OPEN NETWORK TYPES



8.1.1 Devicenet

    Devicenet has become one of the most widely supported control networks. It is an open stan-
dard, so components from a variety of manufacturers can be used together in the same control sys-
tem. It is supported and promoted by the Open Devicenet Vendors Association (ODVA) (see http:/
/www.odva.org). This group includes members from all of the major controls manufacturers.


    This network has been designed to be noise resistant and robust. One major change for the
control engineer is that the PLC chassis can be eliminated and the network can be connected
directly to the sensors and actuators. This will reduce the total amount of wiring by moving I/O
points closer to the application point. This can also simplify the connection of complex devices,
page 241


such as HMIs. Two way communications inputs and outputs allow diagnosis of network problems
from the main controller.


    Devicenet covers all seven layers of the OSI standard. The protocol has a limited number of
network address, with very small data packets. But this also helps limit network traffic and ensure
responsiveness. The length of the network cables will limit the maximum speed of the network.
The basic features of are listed below.
       • A single bus cable that delivers data and power.
       • Up to 64 nodes on the network.
       • Data packet size of 0-8 bytes.
       • Lengths of 500m/250m/100m for speeds of 125kbps/250kbps/500kbps respectively.
       • Devices can be added/removed while power is on.
       • Based on the CANbus (Controller Area Network) protocol for OSI levels 1 and 2.
       • Addressing includes peer-to-peer, multicast, master/slave, polling or change of state.

    An example of a Devicenet network is shown in Figure 22.16. The dark black lines are the
network cable. Terminators are required at the ends of the network cable to reduce electrical
noise. In this case the PC would probably be running some sort of software based PLC program.
The computer would have a card that can communicate with Devicenet devices. The ’FlexIO
rack’ is a miniature rack that can hold various types of input and output modules. Power taps (or
tees) split the signal to small side branches. In this case one of the taps connects a power supply,
to provide the 24Vdc supply to the network. Another two taps are used to connect a ’smart sensor’
and another ’FlexIO rack’. The ’Smart sensor’ uses power from the network, and contains enough
logic so that it is one node on the network. The network uses ’thin trunk line’ and ’thick trunk
line’ which may limit network performance.
page 242




                thin           thin
                trunk tap      trunk                                   thick trunk line
                                              power tap
                line           line
 terminator




                                                                                                          terminator
                            drop
                            line                                        FlexIO
                                                                        rack              PC
                  tap
                                       drop
                                       line


                Smart              FlexIO          power
                sensor             rack            supply



                                            Figure 22.16 - A Devicenet Network

              The network cable is important for delivering power and data. Figure 22.17 shows a basic
cable with two wires for data and two wires for the power. The cable is also shielded to reduce the
effects of electrical noise. The two basic types are thick and thin trunk line. The cables may come
with a variety of connections to devices.
                • bare wires
                • unsealed screw connector
                • sealed mini connector
                • sealed micro connector
                • vampire taps




                                                                                               power (24Vdc)



                                                                                               data


                                                                                               drain/shield

                        Thick trunk - carries up to 8A for power up to 500m
                        Thin trunk - up to 3A for power up to 100m

                                         Figure 22.17 - Shielded Network Cable
page 243




    Some of the design issues for this network include;
       • Power supplies are directly connected to the network power lines.
       • Length to speed is 156m/78m/39m to 125Kbps/250Kbps/500Kbps respectively.
       • A single drop is limited to 6m.
       • Each node on the network will have its own address between 0 and 63.

    If a PLC-5 was to be connected to Devicenet a scanner card would need to be placed in the
rack. The ladder logic in Figure 22.18 would communicate with the sensors through a scanner
card in slot 3. The read and write blocks would read and write the Devicenet input values to inte-
ger memory from ’N7:40’ to ’N7:59’. The outputs would be copied from the integer memory
between ’N7:20’ to ’N7:39’. The ladder logic to process inputs and outputs would need to exam-
ine and set bits in integer memory.
page 244




       MG9:0/EN                                     MSG                       (EN)
                                                   Send/Rec Message           (DN)
                                                   Control Block MG9:0
                                                                              (ER)
       MG9:1/EN                                     MSG                       (EN)
                                                   Send/Rec Message           (DN)
                                                   Control Block MG9:1
                                                                              (ER)

             MG9:0                                           MG9:1
         Read/Write           Write                      Read/Write           Read
         Data Table           N7:20                      Data Table           N7:40
         Size                 20                         Size                 20
         Local/Remote         Remote                     Local/Remote         Remote
         Remote Station       ??                         Remote Station       ??
         Link ID              ??                         Link ID              ??
         Remote Link type     ??                         Remote Link type     ??
         Local Node Addr.     N/A                        Local Node Addr.     N/A
         Processor Type       ????                       Processor Type       ????
         Dest. Addr.          ????                       Dest. Addr.          ????

     Note: Get exact settings for these parametersXXXXXXXXXXXXXXXXX




               Figure 22.18 - Communicating with Devicenet Inputs and Outputs

    On an Allen Bradley Softlogix PLC the I/O will be copied into blocks of integer memory.
These blocks are selected by the user in setup software. The ladder logic would then using integer
memory for inputs and outputs, as shown in Figure 22.19. Here the inputs are copied into N9 inte-
ger memory, and the outputs are set by copying the N10 block of memory back to the outputs.
page 245




                     N9:0
                                                                                          N10:23



              Figure 22.19 - Devicenet Inputs and Outputs in Software Based PLCs




8.1.2 CANbus

    The CANbus (Controller Area Network bus) standard is part of the Devicenet standard. Inte-
grated circuits are now sold by many of the major vendors (Motorola, Intel, etc.) that support
some, or all, of the standard on a single chip. This section will discuss many of the technical
details of the standard.


    CANbus covers the first two layers of the OSI model. The network has a bus topology and
uses bit wise resolution for collisions on the network (i.e., the lower the network identifier, the
higher the priority for sending). A data frame is shown in Figure 22.20. The frame is like a long
serial byte, like that seen in Figure 22.3. The frame begins with a start bit. This is then followed
with a message identifier. For Devicenet this is a 5 bit address code (for up to 64 nodes) and a 6
bit command code. The ’ready to receive it’ bit will be set by the receiving machine. (Note: both
the sender and listener share the same wire.) If the receiving machine does not set this bit the
remainder of the message is aborted, and the message is resent later. While sending the first few
bits, the sender monitors the bits to ensure that the bits send are heard the same way. If the bits do
not agree, then another node on the network has tried to write a message at the same time - there
was a collision. The two devices then wait a period of time, based on their identifier and then start
to resend. The second node will then detect the message, and wait until it is done. The next 6 bits
indicate the number of bytes to be sent, from 0 to 8. This is followed by two sets of bits for CRC
(Cyclic Redundancy Check) error checking, this is a checksum of earlier bits. The next bit ’ACK
slot’ is set by the receiving node if the data was received correctly. If there was a CRC error this
bit would not be set, and the message would be resent. The remaining bits end the transmission.
page 246


The ’end of frame’ bits are equivalent to stop bits. There must be a delay of at least 3 bits before
the next message begins.




             1 bit           start of frame

             11 bits         identifier
                                                          arbitration field
             1 bit           ready to receive it

             6 bits          control field - contains number of data bytes

             0-8 bytes       data - the information to be passed

             15 bits         CRC sequence

             1 bit           CRC delimiter

             1 bit           ACK slot - other listeners turn this on to indicate frame received

             1 bit           ACK delimiter

             7 bits          end of frame

             >= 3 bits       delay before next frame



                               Figure 22.20 - A CANbus Data Frame

    Because of the bitwise arbitration, the address with the lowest identifier will get the highest
priority, and be able to send messages faster when there is a conflict. As a result the controller is
normally put at address ’0’. And, lower priority devices are put near the end of the address range.




8.1.3 Controlnet

    Controlnet is complimentary to Devicenet. It is also supported by a consortium of companies,
(http://www.controlnet.org) and it conducts some projects in cooperation with the Devicenet
page 247


group. The standard is designed for communication between controllers, and permits more com-
plex messages than Devicenet. It is not suitable for communication with individual sensors and
actuators, or with devices off the factory floor.


    Controlnet is more complicated method than Devicenet. Some of the key features of this net-
work include,
       • Multiple controllers and I/O on one network
       • Deterministic
       • Data rates up to 5Mbps
       • Multiple topologies (bus, star, tree)
       • Multiple media (coax, fiber, etc.)
       • Up to 99 nodes with addresses, up to 48 without a repeater
       • Data packets up to 510 bytes
       • Unlimited I/O points
       • Maximum length examples
               1000m with coax at 5Mbps - 2 nodes
               250m with coax at 5Mbps - 48 nodes
               5000m with coax at 5Mbps with repeaters
               3000m with fiber at 5Mbps
               30Km with fiber at 5Mbps and repeaters
       • 5 repeaters in series, 48 segments in parallel
       • Devices powered individually (no network power)
       • Devices can be removed while network is active

    This control network is unique because it supports a real-time messaging scheme called Con-
current Time Domain Multiple Access (CTDMA). The network has a scheduled (high priority)
and unscheduled (low priority) update. When collisions are detected, the system will wait a time
of at least 2ms, for unscheduled messages. But, scheduled messages will be passed sooner, during
a special time window.




8.1.4 Profibus

    Another control network that is popular in europe, but also available world wide. It is also
promoted by a consortium of companies (http://www.profibus.com). General features include;
       • A token passing between up to three masters
page 248


       • Maximum of 126 nodes
       • Straight bus topology
       • Length from 9600m/9.6Kbps with 7 repeaters to 500m/12Mbps with 4 repeaters
       • With fiber optic cable lengths can be over 80Km
       • 2 data lines and shield
       • Power needed at each station
       • Uses RS-485, ethernet, fiber optics, etc.
       • 2048 bits of I/O per network frame




8.2 PROPRIETARY NETWORKS

8.2.0.1 - Data Highway

    Allen-Bradley has developed the Data Highway II (DH+) network for passing data and pro-
grams between PLCs and to computers. This bus network allows up to 64 PLCs to be connected
with a single twisted pair in a shielded cable. Token passing is used to control traffic on the net-
work. Computers can also be connected to the DH+ network, with a network card to download
programs and monitor the PLC. The network will support data rates of 57.6Kbps and 230 Kbps


    The DH+ basic data frame is shown in Figure 22.22. The frame is byte oriented. The first
byte is the ’DLE’ or delimiter byte, which is always $10. When this byte is received the PLC will
interpret the next byte as a command. The ’SOH’ identifies the message as a DH+ message. The
next byte indicates the destination station - each node one the network must have a unique num-
ber. This is followed by the ’DLE’ and ’STX’ bytes that identify the start of the data. The data fol-
lows, and its’ length is determined by the command type - this will be discussed later. This is then
followed by a ’DLE’ and ’ETX’ pair that mark the end of the message. The last byte transmitted is
a checksum to determine the correctness of the message.
page 249




              1 byte      DLE = 10H
                                                 header fields
              1 byte      SOH = 01H

              1 byte      STN - the destination number

              1 byte      DLE = 10H
                                                 start fields
              1 byte      STX = 02H

                          data

              1 byte      DLE = 10H
                                                 termination fields
              1 byte      ETX = 03H

              1 byte      block check - a 2s compliment checksum of the DATA and STN values

                           Figure 22.22 - The Basic DH+ Data Frame

    The general structure for the data is shown in Figure 22.23. This packet will change for dif-
ferent commands. The first two bytes indicate the destination, ’DST’, and source, ’SRC’, for the
message. The next byte is the command, ’CMD’, which will determine the action to be taken.
Sometimes, the function, ’FNC’, will be needed to modify the command. The transaction, ’TNS’,
field is a unique message identifier. The two address, ’ADDR’, bytes identify a target memory
location. The ’DATA’ fields contain the information to be passed. Finally, the ’SIZE’ of the data
field is transmitted.
page 250




              1 byte      DST - destination node for the message

              1 byte      SRC - the node that sent the message

              1 byte      CMD - network command - sometime FNC is required

              1 byte      STS - message send/receive status

              2 byte      TNS - transaction field (a unique message ID)

   optional   1 byte      FNC may be required with some CMD values

   optional   2 byte      ADDR - a memory location

   optional   variable    DATA - a variable length set of data

   optional   1 byte      SIZE - size of a data field

                               Figure 22.23 - Data Filed Values

    Examples of commands are shown in Figure 22.24. These focus on moving memory and sta-
tus information between the PLC, and remote programming software, and other PLCs. More
details can be found in the Allen-Bradley DH+ manuals.
page 251




             CMD        FNC        Description

             00                    Protected write
             01                    Unprotected read
             02                    Protected bit write
             05                    Unprotected bit write
             06         00         Echo
             06         01         Read diagnostic counters
             06         02         Set variables
             06         03         Diagnostic status
             06         04         Set timeout
             06         05         Set NAKs
             06         06         Set ENQs
             06         07         Read diagnostic counters
             08                    Unprotected write
             0F         00         Word range write
             0F         01         Word range read
             0F         02         Bit write
             0F         11         Get edit resource
             0F         17         Read bytes physical
             0F         18         Write bits physical
             0F         26         Read-modify-write
             0F         29         Read section size
             0F         3A         Set CPU mode
             0F         41         Disable forces
             0F         50         Download all request
             0F         52         Download completed
             0F         53         Upload all request
             0F         55         Upload completed
             0F         57         Initialize memory
             0F         5E         Modify PLC-2 compatibility file
             0F         67         typed write
             0F         68         typed read
             0F         A2         Protected logical read - 3 address fields
             0F         AA         Protected logical write - 3 addr. fields


          Figure 22.24 - DH+ Commands for a PLC-5 (all numbers are hexadecimal)

    The ladder logic in Figure 22.25 can be used to copy data from the memory of one PLC to
another. Unlike other networking schemes, there are no ’login’ procedures. In this example the
first MSG instruction will write the message from the local memory ’N7:20’ - ’N7:39’ to the
page 252


remote PLC-5 (node 2) into its memory from ’N7:40’ to ’N7:59’. The second ’MSG’ instruction
will copy the memory from the remote PLC-5 memory ’N7:40’ to ’N7:59’ to the remote PLC-5
memory ’N7:20’ to ’N7:39’. This transfer will require many scans of ladder logic, so the ’EN’
bits will prevent a read or write instruction from restarting until the previous ’MSG’ instruction is
complete.


          MG9:0/EN                                   MSG                        (EN)
                                                    Send/Rec Message            (DN)
                                                    Control Block MG9:0
                                                                                (ER)
          MG9:1/EN                                   MSG                        (EN)
                                                    Send/Rec Message            (DN)
                                                    Control Block MG9:1
                                                                                (ER)
               MG9:0                                           MG9:1
            Read/Write          Write                      Read/Write            Read
            Data Table          N7:20                      Data Table            N7:40
            Size                20                         Size                  20
            Local/Remote        Local                      Local/Remote          Local
            Remote Station      N/A                        Remote Station        N/A
            Link ID             N/A                        Link ID               N/A
            Remote Link type    N/A                        Remote Link type      N/A
            Local Node Addr.    2                          Local Node Addr.      2
            Processor Type      PLC-5                      Processor Type        PLC-5
            Dest. Addr.         N7:40                      Dest. Addr.           N7:20

               Figure 22.25 - Ladder Logic for Reading and Writing to PLC Memory

       The DH+ data packets can be transmitted over other data links, including ethernet and RS-
232.




8.3 PRACTICE PROBLEMS

1. Explain why networks are important in manufacturing controls.
page 253


ans. These networks allow us to pass data between devices so that individually controlled systems
  can be integrated into a more complex manufacturing facility. An example might be a serial
  connection to a PLC so that SPC data can be collected as product is made, or recipes down-
  loaded as they are needed.

2. We will use a PLC to control a cereal box filling machine. For single runs the quantities of
   cereal types are controlled using timers. There are 6 different timers that control flow, and these
   result in different ratios of product. The values for the timer presets will be downloaded from
   another PLC using the DH+ network. Write the ladder logic for the PLC.
page 254




ans.                                            Read Message
       MG9:0/EN       on                        Remote station #1
                                       MSG      Remote Addr. N7:0
                                       MG9:0    Length 6
                                                Destination N7:0
       MG9:0/DN       on
                                       FAL
                                       DEST. #T4:0.PRE
                                       EXPR. #N7:0

        start              stop
                                                          on

       on

        box present         on
                                                TON
                                                T4:0

                                                TON
                                                T4:1

                                                TON
                                                T4:2

                                                TON
                                                T4:3

                                                TON
                                                T4:4

                                                TON
                                                T4:5
        T4:0/TT
                                                          fill hearts


        T4:1/TT
                                                          fill moons


                                   ETC...
page 255


3. a) We are developing ladder logic for an oven to be used in a baking facility. A PLC is control-
   ling the temperature of an oven using an analog voltage output. The oven must be started with a
   push button and can be stopped at any time with a stop push button. A recipe is used to control
   the times at each temperature (this is written into the PLC memory by another PLC). When idle,
   the output voltage should be 0V, and during heating the output voltages, in sequence, are 5V,
   7.5V, 9V. The timer preset values, in sequence, are in N7:0, N7:1, N7:2. When the oven is on, a
   value of 1 should be stored in N7:3, and when the oven is off, a value of 0 should be stored in
   N7:3. Draw a state diagram and write the ladder logic for this station.

b) We are using a PLC as a master controller in a baking facility. It will update recipes in remote
  PLCs using DH+. The master station is #1, the remote stations are #2 and #3. When an operator
  pushes one of three buttons, it will change the recipes in two remote PLCs if both of the remote
  PLCs are idle. While the remote PLCs are running they will change words in their internal
  memories (N7:3=0 means idle and N7:3=1 means active). The new recipe values will be writ-
  ten to the remote PLCs using DH+. The table below shows the values for each PLC. Write the
  ladder logic for the master controller.


                   button A        button B         button C

                   13              17               14
    PLC #2         690             235              745
                   45              75               34

                   76              72               56
                   345             234              645
    PLC #3         987             12               23
                   345             34               456
                   764             456              568
                   87              67               8
page 256




(ans. a)          start     stop          T4:2/DN
                                                                        on N7:3/0

                                                                MOV
               on N7:3/0                                        Source N7:0
                                                                Dest T4:0.PRE

                                                                MOV
                                                                Source N7:1
                                                                Dest T4:1.PRE

                                                                MOV
                                                                Source N7:2
                                                                Dest T4:2.PRE
                  on
                                                               TON
                                                               Timer T4:0
                  T4:0/DN                                      Delay 0s
                                                               TON
                                                               Timer T4:1
                  T4:1/DN                                      Delay 0s
                                                               TON
                                                               Timer T4:2
                                                               Delay 0s
           BT10:0/EN                          Block Transfer Write
                                              Module Type Generic Block Transfer
                                              Rack 000
                                              Group 3
                                              Module 0
                                              Control Block BT10:0
                                              Data File N9:0
                                              Length 13
                                              Continuous No
             T4:0/TT                          MOV
                                              Source 2095
                                              Dest N9:0
             T4:1/TT                          MOV
                                              Source 3071
                                              Dest N9:0
             T4:2/TT                          MOV
                                              Source 3686
                                              Dest N9:0
             on                               MOV
                                              Source 0
                                              Dest N9:0
page 257




(ans. b)       MG9:0/EN                                   MSG                   (EN)
                                                          Send/Rec Message      (DN)
                                                          Control Block MG9:0
                                                                                (ER)
               MG9:1/EN                                   MSG                   (EN)
                                                          Send/Rec Message      (DN)
                                                          Control Block MG9:1
                                                                                (ER)
               MG9:2/EN                                   MSG                     (EN)
                                                          Send/Rec Message        (DN)
                                                          Control Block MG9:2
                                                                                  (ER)
               MG9:3/EN                                   MSG                     (EN)
                                                          Send/Rec Message        (DN)
                                                          Control Block MG9:3
                                                                                  (ER)
    MG9:0                      MG9:0                  MG9:2                 MG9:3
Read/Write         Write    Read/Write Write       Read/Write Read       Read/Write Read
Data Table         N7:40    Data Table N7:43       Data Table N7:3       Data Table N7:3
Size               3        Size         6         Size          1       Size        1
Local/Remote       Local    Local/Remote Local     Local/Remote Local Local/Remote Local
Remote             N/A      Remote       N/A       Remote        N/A     Remote      N/A
Link ID            N/A      Link ID      N/A       Link ID       N/A     Link ID     N/A
Remote Link        N/A      Remote Link N/A        Remote Link N/A       Remote Link N/A
Local Node         2        Local Node 3           Local Node 2          Local Node 3
Processor          PLC-5    Processor    PLC-5     Processor     PLC-5 Processor     PLC-5
Dest. Addr.        N7:0     Dest. Addr. N7:0       Dest. Addr. N7:0      Dest. Addr. N7:1

                   A         N7:0/0     N7:0/1                COP
                                                              Source N7:10
                                                              Dest N7:40
                                                              Length 9
                   B         N7:0/0     N7:0/1                COP
                                                              Source N7:20
                                                              Dest N7:40
                                                              Length 9
                   C         N7:0/0     N7:0/1                COP
                                                              Source N7:30
                                                              Dest N7:40
                                                              Length 9
           N7:10       13   690   45   76    345    987    345 764 87      0
           N7:20       17   235   75   72    234    12     34  456 67      0
           N7:30       14   745   34   56    645    23     456 568 8       0
page 258




4. A controls network is to be 1500m long. Suggest three different types of networks that would
   meet the specifications.

(ans. Controlnet, Profibus, Ethernet with multiple subnets)

5 How many data bytes (maximum) could be transferred in one second with DH+?

(ans. the maximum transfer rate is 230 Kbps, with 11 bits per byte (1start+8data+2+stop) for
  20909 bytes per second. Each memory write packet contains 17 overhead bytes, and as many as
  2000 data bytes. Therefore as many as 20909*2000/(2000+17) = 20732 bytes could be trans-
  mitted per second. Note that this is ideal, the actual maximum rates would be actually be a frac-
  tion of this value.)




8.4 LABORATORY - DEVICENET

Purpose:
       To be introduced to a software based PLC, interfacing with devices using devicenet and
              practical sensors.

Overview:
       In previous coursework you have used PLC-5 processors. The software based PLC is very
               similar. The most noticeable difference is that Inputs and Outputs will appear in
               integer memory instead of the normal I:1 and O:0 blocks of memory.
       The program to be developed for this laboratory should......

Pre-Lab:
       1. Develop the ladder logic for the system described in the Overview.

In-Lab:
          1. Follow the Softplc and Devicenet tutorial.
          2. Implement a control system to .....

Submit (individually):
      1. Program listings and prelab design work.



8.5 TUTORIAL - SOFTPLC AND DEVICENET

Objective: By the end of this tutorial you should be able to do the major steps required to connect
  a devicenet network and program a SoftPLC to control it. It will end with the connection and
page 259


   programming of a Panelview 550 display.

1. Gather the components below. These will be used to build the Devicenet for the rest of the tuto-
   rial. When finding components the labels on the back are a good source of information. The
   information on the front of the devices is not normally useful.
         - A PC with a PCIDS devicenet scanner card and software installed
         - Devicenet Flex I/O rack on a din rail including,
                  24VDC adapter 1794-ADN
                  Relay output 1794-DWB
                  24Vdc source input 1794-IV16
                  24Vdc sink input 1794-IB16
         - a Sola 24Vdc power supply with a power cable attached
         - a Sola 24Vdc power supply with a power tap (1485T-P2T5-T5) attached
         - a devicenet capable photoswitch (42GNP-9000-QD)
         - 2 normal photoswitches (42GRP-9000-QD)
         - 4 Devicenet cable mini connector to wires (1485R-P3M5-C)
         - a light stack with red/amber/green
         - a central terminal Devicebox (1485P-P4T5-T5)
         - 3 network taps
         - a stop pushbutton
         - 2 terminator resistors
         - thick wire trunk line
         - wires for connection
         - Panelview 550 touch screen display

2. Wire up the network below (note: we will add more of the components later).
page 260




     PC                                                                  terminator


                                  1485R-P3R5-C
                  PCIDS                                                    tee
                  CARD



                  terminator      1485R-P3R5-C                             tee



   24V sola
                     thick                                                 tee
   power
   supply            line


                                                                             photosensor



          thick
          line


                                                                            flex I/O rack




                                 24Vdc sola
                                 power
                                 supply



3. Start the “RS Networx for Devicenet” software. When it starts it might show a diagram of pre-
   viously programmed devices on the network. We need to get a current list of devices on the
   network. To do this pick “Selection” “Online”. This will scan the devices on the network and
   get their current configurations. After this the diagram on the screen will be current.

4. Next, we want to map the data from each of the Devicenet nodes to a location in the SoftPLC
   memory. Double click on the PCIDS card on the screen. Click on the “scanlist” tab (you may
   have to upload parameters). Make sure that all of the devices appear on the scanlist. Use the
   “Input” and “Output” tabs to map these devices to specific input and output memory. Notice
page 261


   that this is organized in words (16bits). You will want to make a note of these values, because
   you will use these when programming the PLC. When done select “Apply” and then “OK”.
   Exit the program and save the changes. At this point a file has been set up that tells the Soft-
   PLC what devices are on the Devicenet, and what to do with them.

5. Move the pointer to the bottom right of the screen. You will see a black dot near the time. Click
   twice on this (Note: when the SoftPLC is running this will be green). A screen entitled “Soft-
   logix 5 Status Monitor” will popup. Click on “Config” and then “Start SoftLogix 5”. The Soft-
   PLC should now be running. Click “OK” to dismiss the screens.

6. Start the “RS-Logix SL5 English” software (Note the ‘SL’). Start a “New Project”, the pro-
   gramming window should appear. You should now be ready to tell the SoftPLC that you will
   be using devicenet. Double click on “Processor Status” and on the pop-up window scroll
   across and select the “Dnet” tab. For the output file enter “9”, for the input file enter “10”, for
   the diagnostic file enter “11”. Dismiss the window and look at the memory locations under
   data files, there should now be I/O words there under N9, N10, N11. The input and output
   memory set in the RSNetworx program will be put in this memory.

7. Write a simple ladder logic program to read to smart optical sensor and output a value to the
   relay card. If you need help finding which inputs are which, try running a simple or empty pro-
   gram, and watching the memory.

8. Connect the other photooptical sensors and the light stack to the Flex I/O rack and write a more
   sophistocated program.

9. Connect the PanelView display, and reconfigure the devicenet network. Use the Panel Builder
   software to create a visual interface, and then download it to the touchscreen. Write ladder
   logic that uses it for input and output.
page 262



9. INDUSTRIAL ROBOTICS


9.1 INTRODUCTION

    Robots are devices that are programmed to move parts, or to do work with a tool. For exam-
ple, robots are often used to stack boxes on a pallet, or to weld steel plates together. This chapter
will introduce the basic concepts behind robotics, and introduce a commercial robot. Following
chapters will introduce more robots, and discuss applications.



9.1.1 Basic Terms

    There is a set of basic terminology and concepts common to all robots. These terms follow
with brief explanations of each.


       Links and Joints - Links are the solid structural members of a robot, and joints are the
              movable couplings between them.

       Degree of Freedom (dof) - Each joint on the robot introduces a degree of freedom. Each
             dof can be a slider, rotary, or other type of actuator. Robots typically have 5 or 6
             degrees of freedom. 3 of the degrees of freedom allow positioning in 3D space,
             while the other 2or 3 are used for orientation of the end effector. 6 degrees of free-
             dom are enough to allow the robot to reach all positions and orientations in 3D
             space. 5 dof requires a restriction to 2D space, or else it limits orientations. 5 dof
             robots are commonly used for handling tools such as arc welders.

       Orientation Axes - Basically, if the tool is held at a fixed position, the orientation deter-
              mines which direction it can be pointed in. Roll, pitch and yaw are the common
              orientation axes used. Looking at the figure below it will be obvious that the tool
              can be positioned at any orientation in space. (imagine sitting in a plane. If the
              plane rolls you will turn upside down. The pitch changes for takeoff and landing
              and when flying in a crosswind the plane will yaw.)
page 263



                                                             yaw
   roll
                       yaw

                                              top
                            forward           front          pitch
               pitch
                                                                                     roll

                                                                          right
Figure 7.1 - Orientations


   Position Axes - The tool, regardless of orientation, can be moved to a number of positions
          in space. Various robot geometries are suited to different work geometries. (more
          later)

   Tool Centre Point (TCP) - The tool centre point is located either on the robot, or the tool.
          Typically the TCP is used when referring to the robots position, as well as the focal
          point of the tool. (e.g. the TCP could be at the tip of a welding torch) The TCP can
          be specified in cartesian, cylindrical, spherical, etc. coordinates depending on the
          robot. As tools are changed we will often reprogram the robot for the TCP.


                                                          TCP
                                                          (Tool Center Point)




Figure 7.2 - The Tool Center Point (TCP)


   Work envelope/Workspace - The robot tends to have a fixed, and limited geometry. The
         work envelope is the boundary of positions in space that the robot can reach. For a
         cartesian robot (like an overhead crane) the workspace might be a square, for more
         sophisticated robots the workspace might be a shape that looks like a ‘clump of
         intersecting bubbles’.
page 264




                                                                   Workspace




Speed - refers either to the maximum velocity that is achievable by the TCP, or by individ-
       ual joints. This number is not accurate in most robots, and will vary over the work-
       space as the geometry of the robot changes (and hence the dynamic effects). The
       number will often reflect the maximum safest speed possible. Some robots allow
       the maximum rated speed (100%) to be passed, but it should be done with great
       care.

Payload - The payload indicates the maximum mass the robot can lift before either failure
       of the robots, or dramatic loss of accuracy. It is possible to exceed the maximum
       payload, and still have the robot operate, but this is not advised. When the robot is
       accelerating fast, the payload should be less than the maximum mass. This is
       affected by the ability to firmly grip the part, as well as the robot structure, and the
       actuators. The end of arm tooling should be considered part of the payload.

Repeatability - The robot mechanism will have some natural variance in it. This means
       that when the robot is repeatedly instructed to return to the same point, it will not
       always stop at the same position. Repeatability is considered to be +/-3 times the
page 265


            standard deviation of the position, or where 99.5% of all repeatability measure-
            ments fall. This figure will vary over the workspace, especially near the bound-
            aries of the workspace, but manufacturers will give a single value in specifications.

  Accuracy - This is determined by the resolution of the workspace. If the robot is com-
        manded to travel to a point in space, it will often be off by some amount, the max-
        imum distance should be considered the accuracy. This is an effect of a control
        system that is not necessarily continuous.

  Settling Time - During a movement, the robot moves fast, but as the robot approaches the
          final position is slows down, and slowly approaches. The settling time is the time
          required for the robot to be within a given distance from the final position.

  Control Resolution - This is the smallest change that can be measured by the feedback
         sensors, or caused by the actuators, whichever is larger. If a rotary joint has an
         encoder that measures every 0.01 degree of rotation, and a direct drive servo motor
         is used to drive the joint, with a resolution of 0.5 degrees, then the control resolu-
         tion is about 0.5 degrees (the worst case can be 0.5+0.01).

  Coordinates - The robot can move, therefore it is necessary to define positions. Note that
        coordinates are a combination of both the position of the origin and orientation of
        the axes.


                                                     y
                                                          P = ( x, y, z )
        y
                                                         x
                                             z

                             World Coordinates - this is the position of the tool measured
                               relative to the base, the orientation of the tool is assumed to
                   x
                               be the same as the base.

    z


Figure 7.3 - World Coordinates - To Locate the TCP
page 266




                                                         y
                                                              P = ( x, y, z )
             y
                                                z            x

                                Tool Coordinates - here the tool orientation is considered, and
                                  the coordinates are measured against a frame attached to
                       x
                                  the tool

         z

    Figure 7.4 - Tool Coordinates - Describing Positions Relative to the Tool




                                θ3



                  θ2

                                θ1

                                Joint Coordinates - the position of each joint (all angles here)
                                   are used to describe the position of the robot.



    Figure 7.5 - Joint Coordinates - the Positions of the Actuators



9.1.2 Positioning Concepts



9.1.2.1 - Accuracy and Repeatability

    • The accuracy and repeatability are functions of,
       - resolution- the use of digital systems, and other factors mean that only a limited number
               of positions are available. Thus user input coordinates are often adjusted to the
               nearest discrete position.
       - kinematic modeling error - the kinematic model of the robot does not exactly match the
page 267


               robot. As a result the calculations of required joint angles contain a small error.
       - calibration errors - The position determined during calibration may be off slightly, result-
               ing in an error in calculated position.
       - random errors - problems arise as the robot operates. For example, friction, structural
               bending, thermal expansion, backlash/slip in transmissions, etc. can cause varia-
               tions in position.

    • Accuracy,
       • “How close does the robot get to the desired point”
       • This measures the distance between the specified position, and the actual position of the
              robot end effector.
       • Accuracy is more important when performing off-line programming, because absolute
              coordinates are used.

    • Repeatability
       • “How close will the robot be to the same position as the same move made before”
       • A measure of the error or variability when repeatedly reaching for a single position.
       • This is the result of random errors only
       • repeatability is often smaller than accuracy.

    • Resolution is based on a limited number of points that the robot can be commanded to reach
for, these are shown here as black dots. These points are typically separated by a millimeter or
less, depending on the type of robot. This is further complicated by the fact that the user might ask
for a position such as 456.4mm, and the system can only move to the nearest millimeter, 456mm,
this is the accuracy error of 0.4mm.




                  R
page 268




    • In a perfect mechanical situation the accuracy and control resolution would be determined
as below,

                           The manipulator may stop at
                           a number of discrete positions




                                                                                  One axis on
                                                                                  a surface

                             accuracy               accuracy

                                   control resolution


                                                  specified locations

                 In an ideal situation the manipulator would stop at the specified locations.
                    Here the accuracy would be half of the control resolution. The control
                    resolution would be the smallest divisions that the workspace could be
                    divided into (often by the resolution of digital components.



    • Kinematic and calibration errors basically shift the points in the workspace resulting in an
error ‘e’. Typically vendor specifications assume that calibration and modeling errors are zero.
page 269




                        error ‘e’

                                                                                   Should
                                                                                   be here




    • Random errors will prevent the robot from returning to the exact same location each time,
and this can be shown with a probability distribution about each point.


                                                                           System specified
                                                                           position ‘S’
  User requested
  position ‘U’


                        accuracy ‘a/2’




                                                        repeatability = 6s = ±3s

            control resolution
        a = -----------------------------------------
                                                    -                 e max = a + modeling error + 3s
                                2
      If the distribution is normal, the limits for repeatability are typically chosen as ±3 stan-
          dard deviations ‘s’.
page 270




    We can look at distributions for each specified position for the robot end effector in rela-
      tionship to other point distributions. This will give us overall accuracy, and spatial res-
      olution.

                                       controlled points ‘S’

                                            requested point ‘U’



                           worst case for a point

                                    worst case spatial resolution



    • The fundamental calculations are,




                                                                      a




                                                 A

                                       S                                                   U
                                                         σ



                       repeatability = ±r = 3s

                    accuracy = ( S – U ) + e




9.1.2.2 - Control Resolution
page 271


    • Spatial resolution is the smallest increment of movement into which the robot can divide its
work volume. Spatial resolution depends on two factors: the systems control resolution and the
robots mechanical inaccuracies. It is easiest to conceptualize these factors in terms of a robot with
1 degree of freedom.


    • Control resolution - is determined by the robot’s position control system and its feedback
measurement system. It is the controllers ability to divide the total range of movement for the par-
ticular joint into individual increments that can be addressed in the controller. The increments are
sometimes referred to as “addressable parts”. The ability to divide the joint range into increments
depends on the bit storage capacity in the control memory. The number of separate, identifiable
increments (addressable points) for a particular axis is,


                                    n
              # of increments = 2            where n is the number of control bits


    • example - A robot with 8 bit control resolution can divide a motion range into 256 discrete
positions. The control resolution is about (range of motion)/256. The increments are almost
always uniform and equal.


    • If mechanical inaccuracies are negligible, Accuracy = Control Resolution/2




9.1.2.3 - Payload

    • The payload is always specified as a maximum value, this can be before failure, or more
commonly, before serious performance loss.


    • Static considerations,
       - gravity effects cause downward deflection of the arm and support systems
       - drive gears and belts often have noticeable amounts of slack (backlash) that cause posi-
                tioning errors
       - joint play (windup) - when long rotary members are used in a drive system and twist
                under load
page 272


   - thermal effects - temperature changes lead to dimensional changes in the manipulator

• Dynamic considerations,
   - acceleration effects - inertial forces can lead to deflection in structural members. These
           are normally only problems when a robot is moving very fast, or when a continu-
           ous path following is essential. (But, of course, during the design of a robot these
           factors must be carefully examined)

• e.g.
Consider a steel cantilever beam of length L, width B and height H, fixed at one end and
with a force P, applied at the free end due to the gravitational force on the load.

                                   P
                    L
                                            B
                                                    H

            τ


                                       δ = deflection of beamtip caused by point load
                    3
             PL                                                          6
         δ = ---------                 E = Youngs modulus = 30 ×10 (psi)
             3EI
                                                3
                                       I = BH for rectangular beam
                                           ----------
                                             12
                                       **Note: this deflection does not include the mass
                                              of the beam, as might be important in many
                                              cases.
page 273




1a. Gravity Effects (payload)

         Say,     P   =   100(lbs)
                  L   =   60(in)
                  B   =   4 (in)
                  H   =   6 (in)
      ∴δ payload = 0.0033 (in)
        If accuracy = 0.01 then the gravity effects are less
        If accuracy = 0.001 then the gravity effects are too large

           Aside: Note that the length has a length cubed effect on the tip deflection,
                  so if a second similar link was added to the robot, the deflection would
                  increase 8 times, a third link would increase deflection by 81 times.


1b. Gravity effects (robot link mass)
                           4
                    ωL -
                                         ω = --------------- = 0.91  lb
                                             weight
                δ = ---------                              -
                                                                     ----
                                                                         -
                    8EI                       length                  in
                ∴δ link mass = 0.00066 (in)

                δ total = 0.0033 + 0.00066 = 0.00396

             Aside: If the deflection were too large, then we could use lighter link
                    materials, or larger annular (round tubular) members. Annular
                    members allow actuators, and instrumentation inside.
page 274




2. Drive Gear and Belt Drive Play
assume we are using gears, or timing belts, that do not mesh perfectly




                             The gears do not mesh perfectly, and the resulting space
                             is ‘D’
     The input drive has to move a distance ‘D’ before the output engages, and motion
     begins (this is often after a direction change). This error is multiplied by the
     gear ratio between input gears and the final position of the robot arm. Similar
     errors occur for chains, belts, and other types of errors.

              Aside: Some errors can be taken out of the system by using very
                     precise gearing, or anti-backlash gearing that uses springs to
                     hold the input gear against the drive gear. It is also possible
                     to compensate for this in software.
     With good gearing, Backlash can be held to less than 0.010 (in), but special
     design is required when accuracies of 0.001 (in) are desired.



  3. Joint Flexibility - ( the angular twist of the joints, rotary drives, shafts, under the load)

                 32LT-
            θ = --------------
                        4
                                  θ = twist of the cantilevered link in radian
                                                                             s
                πD G
                                 L = distance of the applied moment from the fixed end
                                 T = the applied moment
                                 G = the polar moment of inertia
                                 D = the effective diameter of application of the moment
page 275




4. Thermal effects
             δ thermal = α∆TL                    α = coefficient of linear thermal expansion

             If for the previous values we consider,

                 α = 6.5 ×10  -------- ( for steel )
                            – 6 in
                                      -
                                inF
                ∆T = T 1 (working temp.) – T 0 (calib. temp.) = 80F – 60F = 20F
                δ thermal = 0.0078 (in)

                Major errors in accuracy can result from thermal expansion/contraction



5. Acceleration Effects
       The robot arm, and payload are exposed to forces generated by accelera-
          tion.This applies mainly to the payload mass, but also to the link mass.
          These forces cause bending moments that must be added to the masses con-
          sidered before.
             F payload = M payload r payload ω'             F link = M link r centroid ω'(approximate)

         The robot arm also experiences radial forces due to centripetal forces. These
         lead to elongation of the arm, but are often negligible.

                                                      2
             Fpayload = M payload r payload ω

         And, if the centre of rotation moves, we must also consider coriolis forces,
         these could potentially result in a ‘whip’ effect. This does occur in multi-
         link robots.
                                      3
                 F payload L
             δ = -----------------------
                                       -
                        3EI


6. Combine cartesian components of deflection into one vector


                            ( ∑ δ xi ) + ( ∑ δ yi ) + ( ∑ δ zi )
                                           2      2                2
        δ accuracy =

         *** Remember to compare to control resolution
page 276




9.2 ROBOT TYPES




9.2.1 Basic Robotic Systems

   • The basic components of a robot are,
     Structure - the mechanical structure (links, base, etc). This requires a great deal of mass to
            provide enough structural rigidity to ensure minimum accuracy under varied pay-
            loads.
     Actuators - The motors, cylinders, etc. that drive the robot joints. This might also include
            mechanisms for a transmission, locking, etc.
     Control Computer - This computer interfaces with the user, and in turn controls the robot
            joints.
     End of Arm Tooling (EOAT) - The tooling is provided be the user, and is designed for spe-
            cific tasks.
     Teach pendant - One popular method for programming the robot. This is a small hand held
            device that can direct motion of the robot, record points in motion sequences, and
            begin replay of sequences. More advance pendants include more functionality.



                       Teach pendant
                       and/or
                       dumb terminal
   Control
   computer


    RS-232                                  Actuator                               End of Arm
                       control              power supply         Mechanical        Tooling
                       computer             (hydraulic, etc)     arm               (EOAT)

   PLC/NC
   machine
                     memory
                     (battery                                       Sensors
                     or eeprom)
page 277




9.2.2 Types of Robots

    • Robots come in a wide variety of shapes, and configurations.


    • The major classes of robots include,
       arms - fixed in place, but can reach and manipulate parts and tools
       mobile - these robots are free to move



9.2.2.1 - Robotic Arms

    • Typical joint types are,
       Revolute - rotary joints often driven by electric motors and chain/belt/gear transmissions,
              or by hydraulic cylinders and levers.
       Prismatic - slider joints in which the link is supported on a linear slider bearing, and lin-
              early actuated by ball screws and motors or cylinders.

    • Basic configurations are,
       Cartesian/Rectilinear/Gantry - Positioning is done in the workspace with prismatic joints.
              This configuration is well used when a large workspace must be covered, or when
              consistent accuracy is expected from the robot.
       Cylindrical - The robot has a revolute motion about a base, a prismatic joint for height,
              and a prismatic joint for radius. This robot is well suited to round workspaces.
       Spherical - Two revolute joints and one prismatic joint allow the robot to point in many
              directions, and then reach out some radial distance.
       Articulated/Jointed Spherical/Revolute - The robot uses 3 revolute joints to position the
              robot. Generally the work volume is spherical. This robot most resembles the
              human arm, with a waist, shoulder, elbow, wrist.
       Scara (Selective Compliance Arm for Robotic Assembly) - This robot conforms to cylin-
              drical coordinates, but the radius and rotation is obtained by a two planar links
              with revolute joints.
page 278




    CARTESIAN/RECTILINEAR/GANTRY




    SPHERICAL
page 279




           CYLINDRICAL




            ARTICULATED/REVOLUTE/
            JOINTED SPHERICAL
page 280




                                                                   SCARA




9.2.2.2 - Autonomous/Mobile Robots

    • The robots discussed up to this point have concerned ‘arms’ that are fixed to the floor.
Another important class of robots are autonomous, and free to move about the workspace.


    • Typical applications are,
       - nuclear accident cleanup
       - planetary exploration
       - Automatic Guided Vehicles in factories
       - mail delivery



9.2.2.2.1 - Automatic Guided Vehicles (AGVs)

    • These are typically wheeled robots that carry payloads through a factory.


    • They navigate using,
       - wires embedded in floors
page 281


          - light sources or reflectors
          - colored tapes on the floor




9.3 MECHANISMS

    • The mechanical structure of the robot has a major influence over performance. Typically
closed kinematic chains give higher strengths, but lower speeds and flexibility.


    • The linkage shown below uses two cylinders (hydraulic or pneumatic) to give radial posi-
tioning
page 282




                                                    This robot has a closed linkage,
                                             and any movements of the bottom cyl-
                                             inder will swing the top arm. The top
                                             arm also has a linear slider that moves
                                             in and out. This arrangement reduces




9.4 ACTUATORS

  • There are a large number of power sources that may be used for robots.


  • Typical actuators include,
page 283


     • Pneumatics
             - simple, low maintenance
             - light, least expensive
             - low payload
             - easy to find fault
             - hard to do continuous control
     • Hydraulic
             - large payload
             - high power/weight ratio
             - leakage
             - noisy
     • Electrical
             - feedback compatible
             - computer compatible
             - EOAT compatible
             - quiet, clean
             - low power/weight ratio

  • Actuators lead to various payload capabilities as shown in the following list.


       Robot                     Power                Payload (k.g.)        Max. Vel. (m/s)
       Asea IRB/6                Electric             6                     0.75
       IBM 7535                  Electric             6                     1.45
       Cincinatti T3/726         D.C. Motor           6.4                   1.0
       Devilbiss                 Hydraulic            6.8                   1.83
       Yaskawa L/10              Electric             10                    1.1
       Unimation 550/60          Electric             10                    1.0
       Hitachi                   Electric             10                    0.99
       Unimation 5000            D.C. Motor           14                    0.53
       VSI Charley #6            Electric             30                    1.8
       GMF M/1A                  Electric             46.7                  0.99
       Cincinatti T3/776         D.C. Motor           68                    0.635
       Cincinatti T3/586         Hydraulic            100                   0.89




9.5 A COMMERCIAL ROBOT
page 284


   • Some specifications for commercial robots are given below




9.5.1 Mitsubishi RV-M1 Manipulator

   • In general
      Degrees of freedom                                   5
      Maximum payload                                      1kg (2.2 lb)
      Repeatability (based on constant temp., load, speed) +/- 0.3mm
      Weight                                               19kg (42 lb)
      Operating Temperature                                5C to 40C
      Humidity (based on constant temp. load, speed)       10% to 85%
      Power Requirements                                   120/220/230/240 VAC
      Other                                                50-70 psig air

   • waist
      motion                                            revolute
      Range                                             300 degrees
      Resolution                                        ?? deg.
      Speed
             max. speed                                 120 deg/sec
             max. torque                                ?? in.lbs

   • shoulder
      motion                                            revolute
      Range                                             130 degrees
      Resolution                                        ?? deg.
      Speed
             max. speed                                 72 deg/sec
             max. torque                                ?? in.lbs

   • elbow
      motion                                            revolute
      Range                                             110 degrees
      Resolution                                        ?? deg.
      Speed
             max. speed                                 109 deg/sec
             max. torque                                ?? in.lbs
page 285


• wrist pitch
   motion                                         revolute
   Range                                          +/-90 degrees
   Resolution                                     ?? deg.
   Speed
          max. speed                              100 deg/sec
          max. torque                             ?? in.lbs

• wrist roll
   motion                                         revolute
   Range                                          +/-180 degrees
   Resolution                                     ?? deg.
   Speed
          max. speed                              163 deg/sec
          max. torque                             ?? in.lbs

• The workspace is pictured below,




 782mm




   57mm
                                                482mm
page 286




9.5.2 Movemaster Programs

    • All comments follow a semi-colon at any position on a line


    • Statements are ended with a colon, and as long as colons are used, more than one statement
can be used on a line.


    • Line numbering is required.


    • Dimensions are given in millimeters in the programs.


    • A sample program is given below with comments for explanation,



         10 NT
         20 SP 7 ; set speed
         30 MO 10, C ;move to position 10 with the hand closed
         40 MO 9, O ;move to position 9 with the hand opened
         50 TI 40 ;stop for 4 seconds
         60 GT 30 ;goto line 30




9.5.2.0.1 - Language Examples

    • The example below shows how points are defined and used. Please be aware that point loca-
tion values are not normally defined in a program. Normally they are programmed by hand, and
then when the program is run, it refers to them by number (from 1 to 629)
page 287




     10 NT ; move to the nest or neutral position, this is almost straight up
     20 OG ; move to the reference or zero position
     30 TL 20 ; this will set the tool length as 20mm for all cartesian position calculations
     40 PD 3, 0, 350, 250, -10, -20 ; define position #3 with joint angles
     50 MO 3 ; move the robot to position #3
     60 DW 20,20,0; a cartesian move 20 mm in the x and 20 mm in the y directions
     70 HE 4; stores the current location as position #4
     80 IP; moves the tool to position #5 ; assume that positions 5-10 are already defined
     90 MC 6,10 ; continuous motion through positions 6, 7, 8, 9 and then stop at point 10
     100 DP; the robot moves to position #9 and stops
     110 PD 11, 0, 0, 10, 0, 0 ; define a vector (point #11) with only a z component
     120 MA 9, 11, O ; move away from point #9 a distance of vector #11 with gripper open
     130 MJ 10, 10, 0, 0, 0 ; move the joints (shoulder and elbow) 10 degrees
     140 MP 10, 20, 30, 40, 50 ; move to cartesian position (10,20,30) with roll=40,pitch=50
     150 SP 3 ; set the speed low to increase accuracy
     160 MS 8, 5 ; straight line motion to point #8 as approximated with 5 knot points
     170 MT 8, -40 ; causes the tool to move 40mm straight back from point #8




    • The example below shows how we can define and use pallets. The definition of a pallet cov-
ers a number of lines to define the pallet size and then the location. We must also define points to
indicate where the pallet lies in space. For the example below these points would have to be posi-
tion numbers 20 (pallet origin), 21 (origin to end of first column), 22 (origin to end of first row),
23 (origin to diagonal corner of pallet). Note: if using pallet #3 these counters would be 30-33,
and point 3 would move.



     20   PA   2, 3, 4 ; pallet #2 is defined as having 3 columns and 4 rows
     30   SC   21, 1 ; set counter #21 for columns to 1 - each pallet # has dedicated counters
     40   SC   22, 2 ; set counter #22 for rows to 2 - each pallet # has dedicated counters
     50   PT   2 ; calculates the point for pallet #2 to move to - this will become point #2
     60   MO   2 ; move to the new position just calculated
     70   SC   22,3 ; move the counter to the next row
     80   PT   2 ; calculate a new pallet position
     90   MO   2 ; move to the new pallet position
page 288




    • The example below shows some of the position commands. These positions are normally
defined outside the program by moving the robot to desired locations. These positions are not
always absolute, and in some cases will act as displacement vectors.



    10   PC   1; the clears the position #1 value
    20   PD   2, 0, 300, 250, 50, -30 ; define position 2 with cartesian x,y,z and pitch,roll
    30   HE   3 ; defines the current robot position as position #3
    40   PX   1,2 ; the values of positions #1 and #2 have been swapped
    50   PD   4, 0, 20, 0, 0, 0 ; define a new position
    60   SF   1, 4 ; this will add #4 to #1 and store it in #1 becoming (0, 320, 250, 50, -30)




    • The example below shows some of the counter and branching functions. These tend to use a
status register approach - for example, a value to be compared will be loaded on one line, the next
line will compare it and a branch instruction will occur on the specified condition. For-next loops
have been constructed as part of this example.
page 289




    10 SC 1, 2 ; set counter 1 to a value of 2
    20 CP 1 ; load counter #1 into the comparison register
    30 EQ 10, 100 ; if the value loaded in the last line is 10, jump to line 100
    40 IC 1 ; increment the value of counter #1
    50 GT 20 ; goto line 20 to continue the loop
    100 DC 1 ; decrement the value of counter #1
    110 CP 1 ; load counter #1 into the comparison register
    120 LT 1, 100 ; if the value loaded in the last line is larger than 1, jump to
 line 100
    150 GS 200 ; goto the subroutine at line 200
    160 ED ; end the program
    200 RC 10 ; a for-next loop command
    210 RC 5 ; a nested loop
    220 NX ; this loop will cycle through the loop declared on line 210
    230 NX ; this loop will cycle through the loop declared on line 200
    240 RT ; return from the subroutine




    • The example below shows how to use various gripper and I/O functions. There are eight
input bits and 8 output bits available.



    10 GC ; close the gripper
    20 GO ; open the gripper
    30 GP 5, 2, 3 ; this defines the gripping force as 5 (N?) and the holding
 force as 2, there will be 3/10 of a second delay while the gripper settles
    40 GC ; close the gripper using the gripper force
    50 OB -7 ; turn off the 7th output bit
    60 TB +6, 50 ; if the 6th input bit is on go to line 50
    70
page 290


9.5.3 Command Summary

  • A summary of the motion commands is given below,


  DP (decrement position)      move to the previous numbered position
  DW (draw)
  HE (here)                    Moves the tool from point to point
  HO (Home)                    Assigns the current position to a position number
  IP (increment position)      Sets the cartesian reference coordinates
  MA (move approach)           Move to the next numbered position
  MC (move continuous)         Move from the current position to a new one
  MJ (move joint)              Execute a continuous motion
  MO                           move a joint by a specified angle
  MP                           move the tool to a specified location
  MS                           Move the hand to a position
  MT                           Move in a straight line
  NT                           moves tool a specified distance
  OG                           return to the global origin
  PA                           move to the cartesian reference coordinates
  PC                           Define a pallet
  PD                           Clear position variables in memory
  PL                           Define a position in memory
  PT                           Copies a position variable to another
  PX                           Calculates a new pallet position
  SF                           Exchange two position variable values
  SP                           Shift the position variable through space
  TI                           Set the robot speed
  TL                           Pause for a set amount of time
                               Define the length of the tool




  • A summary of the program control commands is given below,
page 291




    CP (compare counter)          compare a counter to a value
    DC (decrement counter)        decrement a counter value
    ED (End)
    EQ (If equal)                 End the program
    GS (Gosub)                    Jump if conditions equal
    GT (Goto)                     Go to a subroutine
    IC (increment counter)        Go to line number
    LG (If larger)                Increase a counter value by one
    NE (If not equal)             Branches if larger
    NX (Next)                     branch if not equal
    RC (Repeat cycle)             Next step in an ‘RC’ loop
    RT (Return)                   Repeat a loop the specified number of times
    SC (Set counter)              Return from a ‘GS’
    SM (If smaller)               Set a counter value
                                  Branch if the value is smaller




    • A summary of the IO commands is given below,


    GC (Gripper close)            Close the gripper
    GF (Gripper flag)             Check the gripper status
    GO (gripper open)             Open the gripper
    GP (gripper pressure)         Set the maximum pressure while gripper is closing
    ID (Input detect)             detect the state of an input
    IN (Input)                    inputs parallel data using handshaking
    OB (Output bit)               Set an output bit
    OD (Output direct)            Output data to ports
    OT (Output)                   Output parallel data using handshaking
    TB (Test bit)




9.6 PRACTICE PROBLEMS

1. a) What are some basic functions expected on a robot teach pendant
b) Describe how a computer can help avoid debug robot programs without a robot being used
page 292




2. Write a short program to direct a Mitsubishi RV-M1 robot to pick up and put down a block.
   Assume the points have already been programmed with the teach pendants.

3. What is the workspace for each of the robots below, and can the robots reach all positions and
   orientations in the workspace?


     y                             y                           y



                         x                               x                        x

                    y                             y




                                       x                            x

4. Why are 5 axis enough for some robotic applications (eg. welding) and all NC milling opera-
   tions?

5. You have been asked to write a program for a Mitsubishi RV-M1 robot. The program is to pick
   up a part at point T1, move to point T2, and then load the part into a pallet. The robot should
   then return to point A to pick up then next part. This should continue until the pallet is full.

         T1 = (300, 300, 20)
         T2 = (-300, 300, 0)
         Pallet has 6 rows and 7 columns
         Pallet origin T3 = (300, 0, 0)
         Pallet end of row T4 = (350, 0, 0)
         Pallet end of column T5 = (300, 60, 0)
page 293




 ans.           10 PD 1, 300, 300, 20, 0, 0
                20 PD 2, -300, 300, 0, 0, 0
                30 PD 30, 300, 0, 0, 0, 0
                40 PD 32, 350, 0, 0, 0, 0
                50 PD 31, 300, 60, 0, 0, 0
                60 PA 3, 7, 6
                70 GO
                80 SC 31, 0
                90 RC 7
                100 SC 32, 0
                110 RC 6
                120 PT 3
                130 MO 1
                140 CG
                150 MO 2
                160 MO 3
                170 OG
                180 IC 32
                190 NX
                200 IC 31
                210 NX




6. Given the scenario below, find the minimum angular resolution of the rotating sensor.




        - the robot has +/- 0.5” accuracy
        - the pallet can slide +/- 0.1” on the belt
page 294




                                                  4.8”                              belt travels


                                                5”
       - the driving motor is continuous, and can be run to any angle
       - the rotating sensor is an incremental encoder, every rotation of some small angle it issues
                a pulse. But, because of the construction of the device, it has a minimum resolution
                for angular measurements
       - the robot must be able to touch the part to pick it up
       - the tool on the end of the robot is a 1” magnet, and it must be able to touch the part com-
                pletely to pick it up.
       - pulley size is 10” dia.


7. Consider a double jointed manipulator as shown below. It is subjected to a loading at the tip of
   8 lbs, and works in a heated environment (i.e. T0(room temp.) = 60°F and T1 (working temp.) =
   80°F.
         a) Determine the elongation of the manipulator.
         b) Determine the total linear deflection of the manipulator.
         c) Determine the total final accuracy of the manipulator of the tip of the manipulator.


                        50”             10”
                                                      cross section is 1” wide by 2” high
                                                      solid square aluminum stock




8. For the robot pictured below, assume the that a maximum payload of 10kg is specified. The
   joints are controlled by stepper motors with 200 steps per revolution. Each of the joints slides,
   and the gearing is such that 1 revolution of the stepper motor will result in 1” of travel. What is
   the accuracy of the robot?
page 295




                                    maximum 10”                Assume the joints are solid, and
                                                               to robot links are made from 1”
                                                               solid aluminum stock.
                                  maximum 15”




9. Consider a double jointed manipulator as shown below. It is subjected to a loading at the tip of
   8 lbs, and works in a heated environment (i.e. T0(room temp.) = 60°F and T1 (working temp.) =
   80°F.
         a) Determine the elongation of the manipulator.
         b) Determine the total linear deflection of the manipulator.
         c) Determine the total final accuracy of the manipulator of the tip of the manipulator.


                       50”             10”
                                                    cross section is 1” wide by 2” high
                                                    solid square aluminum stock
page 296


9.7 LABORATORY - MITSUBISHI RV-M1 ROBOT

Purpose:
       Introduction to robots and programming methods.

Overview:
       This laboratory will involve a basic tutorial on the use of the robot, including safety. The
               students will have prepared a program for the robot, and tested it ahead of class
               time using the simulator. During the laboratory the robot will be programmed and
               tested using the prepared programs. A simple accuracy and repeatability test will
               be conducted.

Pre-Lab (individual):
       1. Use Netscape Communicator to access the robots in the laboratory, explore the site.
       2. Review the notes on the Mitsubishi RV-M1. After this use the on-line robot to write a
               simple test program.
       3. Write a program to pick up a pop can at one point, and drop it off at a pallet. The pro-
               gram should repeat six times in a row.

In-Lab:
          1. Follow the robot tutorial, and then examine the robot manual.
          2. Set up the pop can feeders and fixtures.
          3. Enter your prelab program and modify it as required.
          4. If not already done, connect the sensors on the feeders and fixture to the robot control-
                  ler.
          5. Add commands to the program that will examine inputs and take appropriate actions.
          6. Put the robot in an extended position (tool far away from the base). Set up a dial gauge
                  indicator so that it touches a solid point on the tool. Set the gauge so that it reads
                  zero. Move the robot away and back to the same position, and read the value from
                  the dial gauge indicator. Repeat this process to get 10 readings.
          7. Position the robot so that the tool is in the middle of the workspace. Take similar mea-
                  surements to those in step 3.

Submit (individually):
      1. A copy of your prelab program.
      2. A copy of the programs written during the laboratory.
      3. Statistical estimates of repeatability for both positions.




9.8 TUTORIAL - MITSUBISHI RV-M1
page 297


1. Turn on the robot power. The switch is located on the back of the unit.
2. Find the teach pendant (Note: It looks somewhat like a calculator). Turn the switch at the top
   left to ’on’. This will allow the teach pendant to control the robot.
3. Home the robot by pressing <NST><ENT>. The robot will move each joint to one end of it’s
   range. This is an important step whenever a robot is turned on to find the end of the range of
   motion.
4. The robot can be moved to new positions using the buttons on the right hand side of the teach
   pendant. Use the following buttons to move the arm. Notice that the buttons move one joint at a
   time.
         <B+><B-> - moves the base right/left
         <S+><S-> - moves the shoulder up/down
         <E+><E-> - moves the elbow up/down
         <P+><P-> - pitches the gripper up/down
         <R+><R-> - rolls the gripper
         <O><C> - opens/closes gripper
5. The robot tool (at the end of the arm) can be moved in cartesian coordinates by pressing
   <XYZ><ENT> and then using the buttons indicated below.
         <X+><X-> - move right/left
         <Y+><Y-> - move forward/back
         <Z+><Z-> - move up/down
6. The robot tool can be moved relative to the tool’s current orientation by pressing
   <TOOL><ENT>. The buttons below will move the robot to preserve the tool orientation.
         <Z+><Z-> - advance/retract the tool
         <P+><P-> - pitch the tool up/down
7. Pressing <PTP><ENT> returns the robot to joint motion mode. While programming robot
   points an operator will often switch between different robot programming modes.
8. Pressing <ORG><ENT> will move the robot to the origin position where all of the joint angles
   are equal to zero.
9. At this point we are ready to record positions. This is done by moving the robot to a position
   and then storing that position in a position memory location. These locations start at zero and
   go up to 100 (?). Move the robot to three different positions and then record the points using the
   keystrokes below. (Note: To clear positions you can use <PC><#><ENT> where ’#’ is the posi-
   tion number.)
         <PS><1><ENT> - this will record position 1
         <PS><2><ENT> - this will record position 2
         <PS><3><ENT> - this will record position 3
10. The robot can be moved to points using the keystrokes below. If the last point entered above
   was ’3’, then it will be the current focus. The commands <INC> and <DEC> will increment
   and decrement to other positions.
         <DEC><ENT> - decrement to position 2
         <DEC><ENT> - decrement to position 1
         <DEC><ENT> - try to decrement to position 0 - this will cause an error
         <INC><ENT> - increment to position 2
         <INC><ENT> - increment to position 3
         <MOV><1><ENT> - move to position 1
         <MOV><2><ENT> - move to position 2
page 298


       <MOV><3><ENT> - move to position 3
11. Connect the RS-232 port of the robot controller to a PC with a serial cable.
12. Run a terminal emulator on the PC and give it the following settings
       9600 baud
       8 data bits
       no parity
       1 stop bit
       hardware flow control
       echo typed characters locally
13. Turn the teach pendant off. This will allow you to control the robot from the remote terminal.
14. Type in ’NT’ to home the robot. All commands should be typed in UPPER CASE. If an error
  occurs a tone will be heard. To clear the error press the ’reset’ button on the front of the robot.
15. Type the following commands and observe their effect.
       MO 1
       MO 2
       MO 3
       GO
       GC
16. Type the following program in a text editor. Cut and paste it into the terminal window when
  done. This program could be run with ’GT 10’, ’RN 10’ or ’RN’.
       10 MO 1
       20 MO 2
       30 MO 3
       40 GT 10
17. Try other program in this chapter.
page 299



10. OTHER INDUSTRIAL ROBOTS

  This chapter discussed other industrial robots.



10.1 SEIKO RT 3000 MANIPULATOR

  • In general
     Degrees of freedom                                   4
     Maximum payload                                      5kg (11 lb)
     Repeatability (based on constant temp., load, speed) +/-0.025mm (+/- 0.001 in.)
     Weight                                               108kg (237 lb)
     Operating Temperature                                0C to 40C (32F to 104F)
     Humidity (based on constant temp. load, speed)       20% to 90%
     Power Requirements                                   200-240 VAC
     Other                                                50-70 psig air

  • A-axis
     motion                                              revolute
     Range                                               +/-145 degrees
     Resolution                                          0.005 deg.
     Speed
            max. speed                                   150 deg/sec
            max. torque                                  383. in.lbs

  • Z-axis
     motion                                              linear
     Range                                               4.72 in (120mm)
     Resolution                                          0.0005 in (0.012mm)
     Speed
            max. speed                                   14 in/sec (360 mm/sec)
            max. force                                   23.3-35.2 lbs (10.6-16.0 kg)

  • R-axis
     motion                                              linear
     Range                                               11.8 in (300mm)
     Resolution                                          0.001 in (0.025mm)
     Speed
            max. speed                                   29.5 in/sec (750 mm/sec)
page 300


               max. force                                  40 lbs

    • T-axis
       motion                                              revolute
       Range                                               290 degrees
       Resolution                                          0.003 deg.
       Speed
              max. speed                                   90 deg/sec
              max. torque                                  358. in.lbs

    • The workspace is pictured below,




                                            A-axis (290 deg)




                   R-axis (300mm)
                                                                    Z-axis (120mm)




10.1.1 DARL Programs

    • All DARL comments follow ’ at any position on a line.


    • Statements are ended with a colon, and as long as colons are used, more than one statement
can be used on a line.


    • Line numbering is required for DARL programs.
page 301


    • Dimensions are given in millimeters in the programs.


    • Commas and spaces are treated as equivalent.


    • A sample program is given below with comments for explanation,



          10   SPEED 250 ‘set the speed of the robot
          20   T1 = 0. -350. -50. 0. ‘ first point
          30   T2 = 0. -50. -350. 0. ‘second point
          40   T3 = 30. -50. -350. 30. ‘third point
          50   MOVE T1:MOVE T2:MOVE T3 ‘move the gripper to different points in space
          60   OUTPUT +OG0 200 ‘open gripper
          70   MOVE T1 + T2 ‘add two positions and move there
          70   OUTPUT +OG1 200 ‘close gripper
          80   STOP




10.1.1.1 - Language Examples

    • First, points can be defined in programs, they can also be defined by moving the robot to the
location and storing the value. This allows the robot to accurately find points without measuring.
It also means that points location values don’t need to appear in programs, they are stored in
memory.


    • A example that uses for-next, if-then, goto and gosub-return commands is shown below.
These commands are very standard in their use.
page 302




     10 FOR A = 2 TO 10 ‘ start a loop that will count from 2 to 10
     40 IF A = 4 THEN GOTO 100 ‘when a has a value of 4 jump to line 100
     50 IF A = 6 THEN GOSUB 200 ‘ when a has a value of 6 go to subroutine
     60 NEXT A ‘ go back to line 10 and increase the value of a until it reaches 10
     70 END ‘end the program
     100 MOVE T1 ‘ go to point 1
     110 NEXT A ‘ go back to line 10
     200 MOVE T2 ‘ go to point 2
     210 RETURN ‘ go back to where we left line 50




    • A example that uses motion is shown below. The ‘move’ command causes a motion to
another point by only turning the needed joints. ‘moves’ causes a more complex motion resulting
in a straight line tool motion between points. ‘movec’ allows a circular interpolation dictated by
three points (the start, and the two given). The shave command forces the robot to fully complete
a motion and stop before going to the next point. The sync command will move the robot, but
keep the gripper in the original position relative to the real world.



     10 T1 = 30. 10. 10. 40.
     20 T2 = 15. 5. 5. 10.
     30 T3 = 0. 0. 0. 0.
     40 MOVE T1 ‘ move to a start point
     50 SHAVE ‘ allow motions to “only get close” before moving to the next point
     60 MOVE T2: MOVE T3 ’ slows down at t2 before going to t3
     70 NOSHAVE ‘ make motion stop fully before going to the next point
     80 MOVE T1 ‘ return to the start
     90 MOVE T2: MOVE T3’ stops at t2 before going to t3
     100 MOVE T1 ‘ return to the start
     110 MOVES T2: MOVES T3 ’ moves in a straight line from t1 to t2 and from t2 to t3
     120 MOVE T1 ‘ back to the start again
     130 MOVEC T2 T3 ‘ follows a smooth path, not slowing down at t2
     140 MOVE T1 ‘ back to the start again
     150 SYNC ‘ make gripper stay stationary relative to ground
     160 MOVEC T2 T3 ‘ the arm moves, but the gripper stays at 0
     170 NOSYNC ‘ make gripper follow robot
page 303




    • A example that defines tool location offsets is shown below. This is particularly useful for a
robot that has more than one tool attached. The normal tool location is on the end of the arm. With
multiple tools attached we will have multiple tool center points. We can have a tool definition for
each one of these. Note that the x-axis is the normal forward for the tool. The tool axis can only be
changed in the x-y plane (or the plane perpendicular to the gripper rotation).



     30 A = 0.1 ’ the tool center point x offset from the gripper
     40 B = 0.2 ’ the tool center point y offset from the gripper
     50 C = 0.3 ’ the tool center point z offset from the gripper
     60 D = 1 ’ define an offset for an axis
     70 E = 0 ’ define a zero offset for an axis
     80 DEF TL2 D E A B C ’ tool 2 at (0.1, 0.2, 0.3) with the x-axis pointing forward (1,0)
     90 DEF TL3 E D C B A ’ tool 3 at (0.3, 0.2, 0.1) with the x-axis pointing to the left (0,1)
     100 TOOL 1 ’ indicate that you are using tool 1
     110 MOVE T1 ’ move to position 1 with the tool pointing in the normal direction
     111 remark note that the robot gripper will be positioned (-0.1, -0.2, -0.3) from normal
     120 TOOL 2 ’ choose the tool on the gripper pointing to the left
     130 MOVE T1 ’ this will move the robot to (-0.3, -0.2, -0.1)
     140 remark the robot will also move so that the tool is pointing to the left.




    • A example that uses pallet commands is shown below. Basically a pallet allows us to create
an array of points (it does the calculations). We can then give a location on a pallet and move to
that point. The basic pallet definition requires that we indicate the number of rows and columns.
We also need to define the physical locations of the rows and columns. We do this by giving an
origin point, and then defining where the first row and column end. To use the pallet location we
can simply refer to the pallet location index.
page 304




    110 R = 3 ’ define the number of rows on the pallet
    120 C = 4 ’ define the number of columns
    130 DEF PA2 (R,C) T1 T2 T3 ’ pallet with first row from t1 to t2, the first column from
 t1 to t3
    140 FOR I = 0 TO R-1 ’ loop for the rows
    150 FOR J = 0 TO C-1 ’ loop for the columns
    160 MOVE T4’ move the pickup point
    170 OUTPUT +OG3 ’ close the gripper
    180 MOVE PA2(J,I) ’ move to the location on the pallet
    190 OUTPUT -OG3 ’ open the gripper
    200 NEXT J: NEXT I ’ continue the loop to the next parts




    • A example that defines and uses new frames is shown below. We define a new frame of ref-
erence by using points. The first point becomes the new origin. The second point determines
where the new x-axis points. The z-axis remains vertical, and the y-axis is shifted appropriately.



    20 T1 = 2. 1. 0. 0. ’ define a point
    30 T2 = 1. 1. 0. 0.
    40 T3 = 2. 2. 0. 0.
    50 DEF FR1 T2 T1 ’ defines frame with origin at (1,1,0), but x-y axis in original
 direction
    60 DEF FR3 T1 T2 ’ defines origin at T1 and x-axis pointing T2-T1=(-1,0,0)
    70 DEF FR2 T2 T3 ’ defines origin at T2 and x-axis pointing T3-T2 = (.71,.71,0)
    80 MOVE T2 ’ THIS WILL MOVE TO (1 1 0 0)
    90 FRAME 1 ’ USE REFERENCE FRAME #1
    100 MOVE T2 ’ THIS WILL MOVE TO FR1+T2 = (2, 2, 0, 0)
    110 FRAME 2 ’ USE REFERENCE FRAME #2
    120 MOVE T2 ’ THIS WILL MOVE TO FR2+T2 = ( 1, 0, 0, 0)
    130 FRAME 3 ’ USE REFERENCE FRAME #3
    140 MOVE T2 ’ THIS WILL MOVE TO FR3+T2 = (1.71, 1.71, 0, 0)
    150 FRAME 0’ GO BACK TO THE MAIN COORDINATES
    80 MOVE T2 ’ THIS WILL MOVE TO (1 1 0 0)




    • A example that uses simple inputs and outputs is shown below. Note that there are two con-
nectors for I/O. The main or ‘E’xternal connector is on the main controller box. The other I/O
page 305


lines are on the ‘G’ripper. We can check the states of inputs and set the states of outputs. The ‘+’
sign indicates inputs/outputs high (5v) and the ‘-’ sign indicates low (0V). The ranges for input
points are ie0-ie15, ig0-ig7, and for output points oe0-15, og0-7. The search command allows us
to move the robot until an input is activated. This is useful when attempting to find a part by
touching it.



     100   WAIT +IE3 ’ wait for external input #3 to turn on
     110   WAIT -IG4 ’ wait for gripper input #4 to turn off
     120   IF IE5 AND NOT IE6 THEN 110 ’ check to see if external input5 is on and 6 is off
     130   OUTPUT +OG4 ’ turn on output #4 on the gripper
     140   OUTPUT -OE4 ’ turn on output #4 on the external connector (not the gripper)
     150   SEARCH +IG7 T1 THEN 200 ELSE 300 ’ move towards t1 until gripper input 7 goes on




10.1.1.2 - Commands Summary

    • A summary of the commands is given below,


         CLEAR <variable>                This will clear a variable or point value. If none is
                                      specified then all the variable memory is cleared.




         DEF FR <1-9> Tn Tn              This command will allow the workspace axes to be
                                      redefined.




         DEF PA <0-9> (etc.              For defining pallets




         DEF TL <1-9> X1 Y1 X2 Y2        Defined tool offsets
    Z1
page 306




DELAY <1-32767>      Will delay for the specified time in milliseconds




END                  Specifies the end of a program.




FOR TO / NEXT        Allows the standard BASIC for next loop.




FRAME                Specifies a current frame of reference.




GOSUB / RETURN       Functions for creating subroutines.




GOTO                 An unconditional jump to another line number.




HERE <Tn>            Will define the current position to the location
                  variable.




HOME                 Move the robot to an initial position




INPUT                Fill a variable with an input from the keyboard




IF/THEN/ELSE         Standard flow control commands
page 307



   JOGRT                       Sets the robot to move in cylindrical mode




   JOGSP <1-100>               Sets the jogging speed




   JOGXY                       Sets the robot to move in cartesian coordinates
                            relative to the current frame.




   MOVE <Tn>                   Move to a specified position.




   MOVEC <Tn> <Tn> [C]         Move the robot in a circular continuous path
   MOVEC <Tn> <rad> [L,C]




   MOVES <Tn>                  Move the robot with straight line motion




   NOSHAVE                     Sets the robot to stop fully at the end of each




   OD = n                      Sets one of the four binary output bits (0-15)




   OUTPUT <+/-> <OE,OGn>       Opens and closes gripper or externally connected
[10-32767]                  devices.




   PRINT                       Output a structured string to the output unit or




   SHAVE                       Allow the robot to start the next motion before the
                            previous one is complete.
page 308




     SPEED                           Sets the speed of the manipulator




     STOP                            Terminate the execution of the program.




     TOOL n                          Set motions to be relative to a tool.




     WAIT <+/-> <IE,IG> <0-15>       Wait for a certain input condition.




     OUTPUT <+/-> <OE,OGn>           Opens and closes gripper or externally connected
  [10-32767]                      devices.




10.2 IBM 7535 MANIPULATOR

  • In general
     Degrees of freedom                                   4
     Maximum payload                                      6kg (13.2 lb)
     Repeatability (based on constant temp., load, speed) +/-0.05mm (+/- 0.002 in.)
     Weight                                               99kg (218 lb)
     Operating Temperature                                10C to 40.6C (50F to 106F)
     Humidity (based on constant temp. load, speed)       8% to 80%

  • Theta 1 axis
     motion                                              revolute
     Range                                               0 to 200 degrees +/- 1deg.
     Resolution                                          0.00459 deg.
     Low speed (note: this is set by a switch)
            max. speed                                   700 mm/sec (28 in./sec)
page 309


          max. load                                 6 kg(13.2 lb)
   Medium speed
          max. speed                                1100 mm/sec (43 in./sec)
          max. load                                 6 kg(13.2 lb)
   High speed
          max. speed                                1450 mm/sec (57 in./sec)
          max. load                                 1 kg(2.2 lb)

• Theta 2 axis
   motion                                           revolute
   Range                                            0 to 160 degrees +/- 1deg.
   Resolution                                       0.009 deg.
   Low speed (note: this is set by a switch)
          max. speed                                525 mm/sec (21 in./sec)
          max. load                                 6 kg(13.2 lb)
   Medium speed
          max. speed                                825 mm/sec (32 in./sec)
          max. load                                 6 kg(13.2 lb)
   High speed
          max. speed                                1000 mm/sec (39 in./sec)
          max. load                                 1 kg(2.2 lb)

• Roll axis
   motion                                           revolute
   Range                                            +/- 180 degrees +/- 1.5 deg.
   Holding Torque                                   35 kg-cm (30.4 in.-lb.)
   Maximum load centered on Z-Axis                  6 kg (13.2 lb)
   Maximum speed                                    3.7 rad/sec (210 deg./sec. +/-5%)
   Rotating Torque                                  14 kg-cm (12.2 in-lb)
   Max. load inertia                                0.1 kg-m**2 (0.074 slug-ft**2)
                                                    (Note: effects of off centre loads not
                                                     considered, and lower maximum)
   Resolution                                       0.36 deg.

• Z-Axis
   motion                                           prismatic
   Range                                            75 mm (2.95 in.)
   Maximum Payload                                  6.0 kg (13.2 lb)
   Resolution                                       Not Applicable

• Compressed Air
   Maximum Pressure                                 6 kg/cm**2 (85 psig)
page 310


  Conditioning                                    Must be moisture free, as through a
                                                  moisture separator, and filtered with
                                                  regulator.

• The workspace is shown below,



                                             ( 0, 650, 0 )
                                                                   y


                                                                               x
                                                                       z


           ( – 650, 0, 0 )
                                                               ( 650, 0, 0 )
page 311




     7535/7540 LINEAR Rate Values Available


     Programmed Rate     Arm speed at tool tip                Straight line error
                         mm/sec. (in./sec)                    mm (in.)

     1                   60 (2.4)                             3.0 (0.12)
     2                   100 (3.9)                            3.7 (0.15)
     3                   140 (5.5)                            4.4 (0.17)
     4                   180 (7.1)                            5.3 (0.21)
     5                   225 (8.9)                            6.2 (0.24)
     6                   265 (10.4)                           6.9 (0.27)
     7                   305 (12.0)                           7.6 (0.30)
     8                   345 (13.6)                           8.4 (0.33)
     9                   385 (15.2)                           9.3 (0.37)
     10                  430 (16.9)                           10.0 (0.39)
     20                  430 (16.9)                           11.5 (0.45)
     30                  430 (16.9)                           11.5 (0.45)
     50                  430 (16.9)                           11.5 (0.45)
     0                   Exit linear speed and motion



     7535 Program Speed Values for PAYLOAD Command

Program speed values    Speed of theta1          Speed of theta2      Maximum
                        at the tool tip          at the tool tip      payload for speed
                        mm/sec (in./sec)         mm/sec (in./sec)     kg (lb)


1                       300 (11.8)            225 (8.9)               6 (13.2)
2                       500 (19.7)            375 (14.8)              6 (13.2)
3                       700 (27.6)            525 (20.7)              6 (13.2)
4                       750 (29.5)            575 (22.6)              6 (13.2)
5                       900 (35.4)            675 (26.6)              6 (13.2)
6                       1000 (39.3)           750 (29.5)              6 (13.2)
7                       1100 (43.3)           825 (32.4)              6 (13.2)
8                       1200 (47.2)           900 (35.4)              3.5 (7.7)
9                       1300 (51.2)           950 (37.4)              2 (4.4)
10                      1450 (57.1)           1000 (39.3)             1 (2.2)
0                       Default to speed switches
 NOTE: Speeds in the table are for planning purposes only and are typical minimum
       values. Speed values only consider a single joint moving. Speed at the end
       of the arm is greater when multiple joints are used on a single move.
page 312




10.2.1 AML Programs

    • All AML comments start with two dashes ‘--’ at any position on a line


    • Statements are ended with a semi-colon, and as long as semi-colons are used, more than one
statement can be used on a line.


    • Line numbering is done by the AML Editor


    • the free form variables/identifiers must: start with a letter; be up to 72 characters in length;
use letters numbers and underscores, except in the last position.


    • Statements have the general form,


                      IDENTIFIER:KEYWORD;
                                 - IDENTIFIER is a unique name that the user has selected
                                 - the colon separates the two elements
                                 - KEYWORD indicates the significance of the IDENTIFIER to
                              the system
                                 - the semi-colon indicates the end of the statement




    • A sample program is given below with comments for explanation,
page 313




    NEWPROG:SUBR: --A subroutine called NEWPROG to pick up a part
    RELEASE; -- open the gripper before dropping to prevent collision
    DELAY(20); -- wait 2 seconds to ensure the gripper is open
    DOWN; -- drop down to the work surface
    DELAY(10); -- wait 1 second just to be sure everything has settled down
    GRASP; -- close the gripper
    DELAY(10); -- wait 1 second to allow everything to settle down
    UP; -- go up so that we can move over other objects
    PMOVE(PT(300,300,0)); -- move to 300,300 in robot coordinates
    END; -- return to the calling routine




• A summary of the commands is given below,


  BRANCH(label);                  This will force a branch to the statement having the
  (flow command)               label.




  BREAKPOINT;                     When this command is executed, it will examine the
  (flow command)               “stop and Mem” key on the robot. If either is pressed,
                               the program execution will stop.




  DECR(name);                     Decrement ‘name’ by one.
  (logic command)




  DELAY(seconds);                 This commands will wait for the number of tenths of
  (flow command)               seconds given, this can be used when motions must finish
                               before continuing. If the value is 10, then the delay
                               will be 1 second.
page 314




DOWN(value);                 Instructs the robot to drop the gripper (z-axis). The
(motion command)          program delays until the gripper has dropped. If the axis
                          has not reached it’s limit within the given time, then an
                          error message will be generated. The timeout can be
                          altered (from 1.5 seconds) by supplying a ‘value’
                          argument in tenths of a second. A value of zero means
                          wait forever




DPMOVE(x,y,z,r);             A relative cartesian motion is made in the direction
DPMOVE(x,y,r);            specified. if the z-axis has a height control, the z can
(motion command)          be included.




GETC(counter_name);          The program is halted briefly while the host computer
(communication command)   is polled the a new counter value.




GETPART(name);               Move to the current part on the pallet.
(pallet command)




GRASP;                       The EOAT gripper will be closed when this command is
(motion command)          issued.




INCR(name);                  Variable ‘name’ is incremented by one.
(logic command)




LINEAR(quality);             When the robot moves it can follow a number of paths,
(setting command)         but this command will set all motions to follow a
                          straight path. As the ‘value’ goes from 50 to 1 the path
                          quality improves. If the ‘value’ is zero, the linear mode
                          is turned off.
page 315




NEXTPART(name);            move the pallet reference ahead by one.
(pallet command)




PAYLOAD(value);            As the mass carried changes, so do the maximum speeds.
(setting command)       This command will allow modification of the motion
                        speeds. As ‘value’ changes from 10 to 1 the load
                        increases, and the robot will go slower. A ‘value’ of
                        zero will turn the function off.




PMOVE(PT(x,y,r);           The PMOVE portion of this nested command will cause a
PMOVE(PT(x,y,z,r));     movement to a point. The PT statement indicated the
PMOVE(name);            position of a point. A point ‘name’ could also be used.
(motion command)        Here x and y are the cartesian coordinates on the work
                        plane, and r is the roll of the gripper (±180°). Home,
                        with the arm stretched to the far left is (650,0,0)




PREVPART(name);            reduce the current pallet part count by one.
(pallet command)




RELEASE;                   This command is the opposite of GRASP, and will
(motion command)        release the gripper.




SETC(name, value);         Set the counter name to a value.
(logic command)




SETPART(name, value);      set the pallet name to the given value.
(pallet command)
page 316




  TESTC(name, value, label);       TESTC does a conditional branch statement that
  TESTI(DIpoint,value,label);   compares name to value. TESTI does the same for a DI
  TESTP(name,value,label);      point, and a value. TESTP compares a pallet name and
  (logic command)               value. All statements branch to label if the comparison
                                is equal.




  UP(value);                       This commands is the reverse of DOWN, as it raises the
  (motion command)              z-axis.




  WAITI(DIpoint,value,time);       Pause while waiting for the DI point to reach value.
  (logic command)               Time specifies a maximum value before an error message
                                should be generated.




  WRITEO(DO point, value);         Set DO point to the given value.
  (logic command)




  ZMOVE(position);                 Move the z-axis to a given position, if variable
                                positioning is available.




  ZONE(factor);                    The accuracy of a point to point move is set using
  (setting command)             this command. As the value ‘factor’ changes from 15 to 1
                                the motion times increase, but the final position is more
                                accurate. If ‘factor’ has a value of zero, the function
                                is turned off.




• A summary of some of the keywords is,

  END;                             causes a return from a subroutine.




  name:NEW PT(x,y,r);              Defines a point name with the values x,y,r and z if
  name:NEW PT(x,y,z,r);         the robot supports it.
page 317




        name:NEW ‘string’;             A string is assigned to variable name.




        name:NEW n;                    Create a variable name, and assign a numeric value to




        ident:SUBR;                    A subroutine called ident is created. A parameter list
        ident:SUBR(parameter);      can be associated by adding it to the definition.




        name:STATIC                    a counter variable called name is created.
        COUNTER;




        name:STATIC                    a pallet definition name can be defined. The pallet is
        PALLET(ll,lr,ur,ppr,parts   assumed to be rectangular with the three corners given,
   );                               ll, lr and ur (lower left, lower right, and upper right
                                    respectively). the parts per row (ppr), and total number
                                    of parts are also given.




        label:statement;               A label can be arbitrarily inserted before any command
                                    to set a branch point.




10.3 ASEA IRB-1000

   • In general
        maximum payload (for a 200mm tool offset)           6 kg
        Maximum moment of inertia                           2.5 Nm (dynamic)
        Maximum static moment                               12 Nm (static)
        weight                                              125 kg
        accuracy at wrist                                   +/- 0.20mm

   • Axis 1
page 318


  joint type              revolute
  range                   340 deg.
  speed                   95 deg/sec
  actuator                servo

• Axis 2
  joint type              revolute
  range                   +/-40 deg.
  speed                   0.75 m/sec
  actuator                servo

• Axis 3
  joint type              revolute
  range                   +/-25 deg. to -40 deg.
  speed                   1.1 m/s
  actuator                servo

• Axis 4
  joint type              revolute
  range                   +/- 90 deg.
  speed                   115 deg/sec.
  actuator                servo

• Axis 5
  joint type              revolute
  range                   +/- 180 deg.
  speed                   195 deg/sec
  actuator                servo

• Gripper
  Pneumatic               2 solenoid valves are located in the
                          upper arm, and can be operated by
                          the programs.
  electrical              There is a four pole electrical outlet
                          in the upper arm for use with more
                          advanced grippers having search
                          functions.
page 319


10.4 UNIMATION PUMA (360, 550, 560 SERIES)

   • In general,
      - an articulated arm with 3 dof for positioning, and 3 dof for orientation
      - left/right arm configurations are possible
      - uses DC servo motors for drive
      - uses 110-130 VAC, 50-60Hz, 1.5KW
      - weight 120 lb
      - repeatability 0.004in
      - RS-232C port for dumb terminal
      - 32 parallel I/O lines
      - memory 16K
      - programming language is VAL

   • joint 1 (Waist)
      joint type                                            revolute
      range                                                 315°
      max slew rate                                         1.9 rad/sec.
      resolution                                            .0001 rad/bit
      maximum static torque                                 9.9Nm

   • joint 2 (Shoulder)
      joint type                                            revolute
      range                                                 320°
      max slew rate                                         1.8 rad/sec.
      resolution                                            .00009 rad/bit
      maximum static torque                                 14.9Nm

   • joint 3 (Elbow)
      joint type                                            revolute
      range                                                 300°
      max slew rate                                         2.6 rad/sec.
      resolution                                            .000146 rad/bit
      maximum static torque                                 9.1Nm

   • joint 4 (Wrist Rotation)
      joint type                                            revolute
      range                                                 575°
      max slew rate                                         8.7 rad/sec.
      resolution                                            .000181 rad/bit
page 320


       maximum static torque                               1.5Nm

    • joint 5 (Wrist Bend)
       joint type                                          revolute
       range                                               235°
       max slew rate                                       5.6 rad/sec.
       resolution                                          .000199 rad/bit
       maximum static torque                               1.4Nm

    • joint 6 (Flange Rotation)
       joint type                                          revolute
       range                                               525°
       max slew rate                                       5.2 rad/sec.
       resolution                                          .000247 rad/bit
       maximum static torque                               1.1Nm




10.5 PRACTICE PROBLEMS



    2. Write a short program to direct a robot to pick up and put down a block. Assume the points
have already been programmed with the teach pendants.
       a) Write program for the IBM 7535.
       b) Write program for the Seiko RT-3000.
page 321




 ans. a)   NEWPROG:BLOCK;
           RELEASE; -- open the gripper
           DELAY(5); -- delay 1/2 second to allow the gripper to open
           PMOVE(OVER); -- move to the point over the pickup point called ‘OVER’
           DOWN; -- move the arm down
           DELAY(2); -- wait for the motion to complete and settle
           GRASP; -- close the gripper
           DELAY(2); -- wait for the gripper to close
           UP; -- raise the block
           DELAY(20); -- wait for a couple of seconds
           DOWN; -- drop the block back to the surface of the table
           OPEN; -- open the gripper
           UP; move the arm away from the block
           END; - terminate the program




    10. You have been asked to write a program for a Seiko RT-3000. The program is to pick up
a part at point T1, move to point T2, and then load the part into a pallet. The robot should then
return to point A to pick up then next part. This should continue until the pallet is full.


    T1 = (300, 300, 20)
    T2 = (-300, 300, 0)
    Pallet has 6 rows and 7 columns
    Pallet origin T3 = (300, 0, 0)
    Pallet end of row T4 = (350, 0, 0)
    Pallet end of column T5 = (300, 60, 0)
page 322




         10 T1 = 300. 300. 20. 0.
 ans.    20 T2 = -300. 300. 0. 0.
         30 T3 = 300. 0. 0. 0.
         40 T4 = 350. 0. 0. 0.
         50 T5 = 300. 60. 0. 0.
         60 R = 6
         70 C = 7
         80 OUTPUT +OG3
         90 DEF PA2(R, C) T3 T4 T5
         100 FOR I = 0 TO R-1
         110 FOR J = 0 TO C-1
         120 MOVE T1
         130 OUTPUT -OG3 200
         140 MOVE T2
         150 MOVE PA2(J, I)
         160 OUTPUT +OG3 200
         170 NEXT J
         180 NEXT I
         190 STOP




    11. An IBM 7535 industrial robot is to be used to unload small 1 lb. cardboard boxes (5” by
4” by 1”) from a conveyor, and stack them in a large cardboard box (20” by 8” and 2” deep). After
the large box is loaded, it will be removed automatically and replaced with an empty one. The
conveyor will be controlled by a robot output, and it will be stopped when an optical sensor
detects a small box. When the box is full the conveyor will be stopped and a light turned on until
an unload button is pushed. The entire system uses a start and stop button combination. The stop
button is not an e-stop, but it will stop the cycle after the small box is placed in the large box.
        a) Layout the position of the conveyor, sensor, large box and robot so that all positions can
               be reached. Indicate critical points of objects.
        b) Design a robot gripper to pick up the boxes.
        c) Develop a flow chart for the robot operations.
        d) Write an AML program for the flowchart.
page 323




ans. a)
      First, we need to convert the given dimensions to mm.
      small boxes = 127x101.6x25.4mm
      large boxes = 508x203.2x76.2mm

     Next, we need to overlay these on the robot workspace. In this case there is abun-
       dant space and can be done by inspection.

                                         ( 0, 650, 0 )
                                                                  y
                                     A
                                             photo
                              127/2mm        sensor                           x
                                                                      z
                        D

   ( – 650, 0, 0 )
                                                              ( 650, 0, 0 )

                        B C
                                         A = (0, 650-101.6/2, 0) = (0, 599.2, 0)
                                         B = (-400, -1.5*127, 0) = (-400, -190.5, 0)
                                         C = (-400 + 101.6, -1.5*127, 0) = (-298.4, -190.5, 0)
                                         D = (-400, 1.5*127, 0) = (-400, 190.5, 0)
page 324




ans. b)

 For this application, vacuum grippers should work effectively because the mass is light,
   and the boxes should have clean cardboard faces. Because the application has been
   designed to lift the boxes in the centers, we should be able to use a single suction cup,
   but a large factor of safety will be used to compensate (>= 3). We will assume that we
   are using a venturi valve to generate the suction, so a pressure differential of 3psi is rea-
   sonable.

            ( W )FS = PA min

                      lb-
            1lb3 = 3 ------ Amin
                          2
                     in
                            2
            A min = 1in

                        d min 2
            A min ≤ π  --------- 
                       2 -
                       d min 2
            1in ≤ π  --------- 
                2
                      2 -

            d min = 1.13in
      Based on this calculation I would select a suction cup that is 1.25” or 1.5” dia.
page 325




ans. c)
                                Start


                          reset pallet values


                     no          start
                            button pushed?
                              yes

                          pick up small box


                          index pallet


                          move above box
                                                            no

                                                    no                    yes
                              is box full?                 stop pushed?


                                yes

                          turn off conveyor
                          turn on light


                                                      no
                              reset button?


                                         yes


  12. Repeat the previous problem for the Seiko RT-3000 robot.
page 326




ans. a)
      First, we need to convert the given dimensions to mm.
      small boxes = 127x101.6x25.4mm
      large boxes = 508x203.2x76.2mm

      Next, we need to overlay these on the robot workspace. In this case there is abun-
        dant space and can be done by inspection.

                             ( 0, 500, 0 )
                                                                   y
                                       A
                                                photo
                                                sensor                       x

                     D                       127/2mm

   ( – 500, 0, 0 )



                     B C



                                             A = (0, 500-101.6/2, 0) = (0, 449.2, 0)
                                             B = (-350, -1.5*127, 0) = (-350, -190.5, 0)
                                             C = (-350 + 101.6, -1.5*127, 0) = (-248.4, -190.5, 0)
                                             D = (-350, 1.5*127, 0) = (-350, 190.5, 0)
page 327




ans. b)

 For this application, vacuum grippers should work effectively because the mass is light,
   and the boxes should have clean cardboard faces. Because the application has been
   designed to lift the boxes in the centers, we should be able to use a single suction cup,
   but a large factor of safety will be used to compensate (>= 3). We will assume that we
   are using a venturi valve to generate the suction, so a pressure differential of 3psi is rea-
   sonable.

            ( W )FS = PA min

                      lb-
            1lb3 = 3 ------ Amin
                          2
                     in
                            2
            A min = 1in

                        d min 2
            A min ≤ π  --------- 
                       2 -
                       d min 2
            1in ≤ π  --------- 
                2
                      2 -

            d min = 1.13in
      Based on this calculation I would select a suction cup that is 1.25” or 1.5” dia.
page 328




ans. c)
                     Start


               reset pallet values


          no          start
                 button pushed?
                   yes

               pick up small box


               index pallet


               move above box
                                                 no

                                         no                    yes
                   is box full?                 stop pushed?


                     yes

               turn off conveyor
               turn on light


                                           no
                   reset button?


                              yes
page 329




 ans.
         10 R = 3: C = 4: H = 0 ‘ define rows and column variables
         20 SPEED 100 ‘ set the robot speed
         30 T1 = 0. 449.2 0. 0. ‘ set point A
         40 T2 = -350. 449.2 -190.5 0. ‘ set point B
         50 T3 = -248.4 449.2 -190.5 0. ‘ set point C
         60 T4 = -350. 449.2 190.5 0. ‘ set point D
         70 T5 = 0. 0. -50. 0. ‘ a displacement to the conveyor height
         80 T6 = 0. 0. -100.4 0. ‘ a displacement to the bottom layer of the large box
         90 T7 = 0. 0. -75. 0. ‘ a displacement to the top layer of the large box
         100 DEF PA2(4,2) T1 T2 T3 ‘ define pallet
         110 WAIT +IE1 ‘ wait for external input #1 to go on, this is the start button
         120 FOR H = 0 TO 1 ‘ set box layers
         130 FOR I = 0 TO R-1 ‘ loop for rows
         140 FOR J = 0 TO C-1 ‘ loop for columns
         150 OUTPUT +OE1 ‘ turn on external output #1, this is the conveyor
         160 MOVE T1 ‘ move to the conveyor pickup point
         170 WAIT +IE2 ‘ wait for the input from the optical sensor to go on
         180 OUTPUT -OE1 ‘ turn off the conveyor
         190 MOVE T1 + T5 ‘ move to pick up box
         200 OUTPUT +OG1 ‘ turn on suction cup on gripper
         210 MOVE T1 ‘ pick up the box
         220 MOVE PA2(I, J) ‘ move to the pallet position in the large box
         230 IF H = 1 THEN GOTO 260 ‘ jump if on the top layer
         240 MOVE PA2(I, J) + T6 ‘ move to the bottom layer of the box
         250 GOTO 270
         260 MOVE PA2(I, J) + T7 ‘ move to the bottom layer of the box
         270 OUTPUT -OG1 ‘ turn off the suction cup
         280 MOVE PA2(I, J) ‘ move out of box
         290 IF NOT IE3 THEN GOTO 310
         300 WAIT +IE1 ‘ wait for the start button
         310 NEXT J: NEXT I: NEXT H ‘ end of the loops
         320 OUTPUT +OE2 ‘ turn on box full light
         330 WAIT +IE4 ‘ wait for the reset button
         340 GOTO 110 ‘ go back to start anew




    14. The IBM 7535 robot arm moves its TCP to point (-450, 250)mm at speeds programmed
by ‘payload(5)’ and decelerates from the resultant speed to zero in 0.5 seconds. The tool has a
page 330


mass of 1.5 kg with its center of gravity at 3cm from the TCP and transfers a mass of 4kg with its
C.G. at 5cm from the TCP.
          a) determine the inertia torque about the theta1 axis showing all correct units
          b) compare the value in a) with a maximum inertia torque estimated from decelerating a
                  6kg mass from 1100mm/s to zero in 0.5 sec.
          c) Estimate the combined error at the CG of the load due to theta1 and theta 2 resolution




10.6 LABORATORY - SEIKO RT-3000 ROBOT

Purpose:
       Introduction to the Seiko RT-3000 robot and programming methods.

Overview:
       This laboratory will involve a basic tutorial on the use of the robot, including safety. The
               students will have prepared a program for the robot ahead of class. During the lab-
               oratory the robot will be programmed and tested using the prepared programs. A
               simple accuracy and repeatability test will be conducted.

Pre-Lab:
       1. Use Netscape Communicator to access the robots in the laboratory, explore the site.
       2. Review the note section on the Seiko RT-3000. After this use the on-line robot to write
              a simple test program.
       3. Write a program to pick up pop cans at one point, and put them down at another point.
              This program should repeat five times in a row. Test the program on the robot.

In-Lab:

          1. Examine the robot and all associated cables, including the pneumatics. Make sure the
                 settings match the manual specifications.

          2. Examine the buttons on the front and connectors on the back of the controller box.
                 Match these up to the input/output points. Determine if these are TTL, sourcing, or
                 some other type.

          3. Turn on the robot and use the teach pendant, with the commands below, to control the
                 robot.

          4. Turn the robot controller off, connect it to a computer, and then turn it back on. Turn the
                  servo power on and then type in the command home. The robot will move and find
                  its reference position. You may then type in commands at the prompt.
page 331


       5. Program some points using the ‘here’ command. (refer to manual).

       6. Enter the simple program below to move between the programmed points. Add in com-
               mands that will open and close the gripper.

       7. Add lines the the program that will turn on/off outputs and examine inputs. Use the
              appropriate electrical equipment to test the new parts of the program.

       8. Enter and test your prelab program with no parts present. Set up the parts and run the
               program again. Cooperate with the other group and add a part present sensor to the
               part pickup point, connect it to the robot, and add a line to the program to wait for
               the part.
       9. Move to the other robot and complete the other part of the first step.
       10. For the robot you are currently using, put the robot in an extended position (tool far
               away from the base). Set up a dial gauge indicator so that it touches a solid point
               on the tool. Set the gauge so that it reads zero. Move the robot away and back to
               the same position, and read the value from the dial gauge indicator. Repeat this
               process to get 10 readings.
       11. Position the robot so that the tool is in the middle of the workspace. Take similar mea-
               surements to those in step 3.

Submit (individually):
      1. A copy of your prelab program.
      2. A copy of the final program with the part detector sensor.
      3. Statistical estimates of repeatability for both positions.




10.7 TUTORIAL - SEIKO RT-3000 ROBOT

1. Look at the robot and controller. Indentify the controller, teach pendant (programming termi-
   nal) and robot.

2. Turn on the robot power and look at the programming terminal. There should be a message that
   says " ". If there are any error messages inform the instructor.

3. Turn on the servo motor power by pressing the ’Servo ON’ button on the front of the controller.
   After this the robot can be moved to the home position with the ’HOME’ command. After the
   robot goes through the startup procedure it will be ready for use.

4. The robor joints can be moved with the arrows on the right side of the keyboard. Move each
   joint and observe the range of motion.

5.
page 332




10.8 LABORATORY - ASEA IRB-1000 ROBOT

Purpose:
       Introduction to robots and programming methods.

Overview:


Pre-Lab:


In-Lab:


Submit:




10.9 TUTORIAL - ASEA IRB-1000 ROBOT

1. Look at the robot and controller. Indentify the controller, teach pendant (programming termi-
   nal) and robot.

2.
page 333



11. ROBOT APPLICATIONS

    The nice definition of a robot by the Robot Institute of America is “A robot is a reprogram-
mable multifunctional manipulator designed to move material, parts, tools, or specialized devices
through variable programmed motions for the performance of a variety of tasks”. The not-so-nice
definition is "Robots are one armed, blind, stupid, deaf, mute, and cannot feel and understand
what they are doing".



11.0.1 Overview

    • Unlike many machines, robots are easy to imagine performing tasks, because of their simi-
larity to the human form. This has caused many companies to adopt robots without properly
assessing what their strengths and weaknesses are.


    • The early days of experimentation lead to many failed applications, as well as some notable
successes.


    • A useful dichotomy is,
       Point-to-Point - A robot that typically only has 2 (or very few) possible positions. These
               are good for pick and place type operations, and they are often constructed with
               pneumatic cylinders.
       Manipulation - A robot that assembles, or moves parts requires good end of path motion,
               but does not require as much accuracy in the middle of the path. A higher speed
               between path endpoints is often desired.
       Path Tracking - When arc welding, gluing, etc. the robot must follow a path with high
               accuracy, and constant speed. This often results in slower motion, and more
               sophisticated control software.
       Operating - The robot will be expected to apply forces to perform work at the end of the
               tool, such as doing press fits. While the demands for these robots is essentially the
               same, they must be capable of handling the higher forces required when in work-
               ing contact with the work.
       Telerobotics - Acts as a remote extension of human control, often for safety or miniatur-
               ization purposes. In these cases the robots often mimic the human form, and pro-
               vide some forms of physical feedback.
       Services - mail delivery, vacuuming, etc.
page 334


       Biomedical - prosthetic and orthotic devices.

    • The number of degrees of freedom of the robot should be matched to the tasks.


    • Note: 5 d.o.f. robots will allow the tool to reach all points in space if the tool has an axis of
symmetry. For example, a welding torch flame has a symmetrical axis.


    • Some commercial applications that have been done with robots are,
       - die casting - used for unloading parts from dies, quenching parts, and trimming them
                with a trim press. The robot may also be used to put inserts into the die.
       - spot welding - spot welding electrodes are clamped in place, and the weld is made. The
                robot allows many welds to be done.
       - arc welding- continuous path robots are used to slowly track a path with a continuous
                rate, and with control of welding parameters.
       - investment casting - robots can be used in the pick and place operations involved in mak-
                ing the molds.
       - forging- a robot can be used to precisely position the work under the impact hammer,
                freeing a worker from the handling hot heavy work pieces.
       - press work- the robot handles loading parts into the press, and removing the resulting
                work pieces.
       - spray painting- a very popular application in which the robot sweeps the paint head
                across the surface to deposit a spray. This process has been coupled with electro-
                statics to improve efficiency and distribution.
       - plastic molding - they can be used for loading the hoppers, and unloading the parts. This
                is most effective when the parts are hard to handle.
       - foundry process- robots can be used for ladling materials, and preparation of molds.
       - machine tools- robots can be used for loading and unloading machine tools, and material
                transfer systems.
       - heat treatment process - parts can be loaded into the ovens, unloaded from the ovens,
                quenched and dried by robots.
       - metal deburring - continuous path robots can be used to track rough edges with a compli-
                ant tool design.
       - palletizing process - parts can be placed in boxes, or on skids in preparation for shipping.
                Most robots have program commands to support this.
       - brick manufacture - a robot can be used for loading and unloading a kiln, and stacking
                bricks for shipping.
       - glass manufacture - a robot can handle the breakable glass with a wide EOAT that pre-
                vents sagging, etc. The robot can also be used for grinding edges.
page 335


11.0.2 Spray Painting and Finishing

     • Air spraying - air under pressure causes the paint to atomize and be propelled to the article
to be painted


     • Airless spraying - finishing materials, such as paint, are sprayed under considerable hydrau-
lic pressure through a fixed orifice, which causes the paint to be atomized directly without the
need for air.


     • Electrostatic spraying - Atomized particles (paint or powder droplets) are electrostatically
charged. These are attracted to the object being sprayed by the applied electrostatic field. Consid-
erable material savings are achieved since very little of the sprayed material bypasses the object
and is lost. Objects being sprayed are kept at a ground potential to achieve a large electrostatic
field.


     • Heating of materials - paint decreases in viscosity when heated and can be sprayed with
lower pressures. Less solvent is required and there is less overspray of paint. Heating may be used
with any of the preceding systems


     • Air spraying and electrostatic spraying are the most common methods of application for
paints, enamels, powders, and sound absorbing coatings.




11.0.3 Welding

     • These tasks are characterized by the need for,
         - smooth motion
         - conformity to specified paths
         - consistent tool speed
page 336


11.0.4 Assembly

       • General concepts are,
          • one or more robots
          • each robot may perform a variety of sub-assemblies
          • requires a conveyor and inspection station
          • A host computer must synchronize robot actions
          • A bad part rejection function should be available
          • An organized output should be used, e.g. pallets, or shipping crates.

       • These tasks are common, but face stiff competition from fixed automation and manual
labor.




11.0.5 Belt Based Material Transfer

       • When a robot is used in a workcell, the raw part is delivered in, worked on, and then moved
out. This can be done using moving belts, etc.


       • Parts are placed directly on the belt, or placed on pallets first.


       • Belts can travel in straight paths, or in curved paths if flexible belt link designs are used.


       • If straight belts are used, transfer points can be used at the end to change part/pallet direc-
tion


       • When pallets are used, there is a fixture on top designed to hold the part in an accurate posi-
tion so that robots and other equipment will be able to locate the part within some tolerance.


       • Vision systems may be necessary if part orientation cannot be fixed.
page 337


11.1 END OF ARM TOOLING (EOAT)

   • The best known universal gripper - the human hand


   • Useful classifications are,
      - Grippers
              - multiple/single
              - internal/external
      - Tools
              - compliant
              - contact
              - non-contact

   • End of arm tooling is typically purchased separately, or custom built.



11.1.1 EOAT Design

   • Typical factors to be considered are,
      Workpiece to be handled
             part dimensions
             mass
             pre- and post- processing geometry
             geometrical tolerances
             potential for part damage
      Actuators
             mechanical
             vacuum
             magnet
             etc.
      Power source of EOAT
             electrical
             pneumatic
             hydraulic
             mechanical
      Range of gripping force
             object mass
             friction or nested grip
             coefficient of friction between gripper and part
             maximum accelerations during motion
page 338


   Positioning
          gripper length
          robot accuracy and repeatability
          part tolerances
   Maintenance
          number of cycles required
          use of separate wear components
          design for maintainability
   Environment
          temperature
          humidity
          dirt, corrosives, etc.
   Temperature protection
          heat shields
          longer fingers
          separate cooling system
          heat resistant materials
   Materials
          strong, rigid, durable
          fatigue strength
          cost and ease of fabrication
          coefficient of friction
          suitable for environment
   Other points
          interchangeable fingers
          design standards
          use of mounting plate on robot
          gripper flexible enough to accommodate product design change

• The typical design criteria are,
   - low weight to allow larger payload, increase accelerations, decrease cycle time
   - minimum dimensions set by size of workpiece, and work area clearances
   - widest range of parts accommodated using inserts, and adjustable motions
   - rigidity to maintain robot accuracy and reduce vibrations
   - maximum force applied for safety, and to prevent damage to the work
   - power source should be readily available from the robot, or nearby
   - maintenance should be easy and fast
   - safety dictates that the work shouldn’t drop when the power fails



• Other advanced design points,
   - ensure that part centroid is centered close to the robot to reduce inertial effects. Worst
           case make sure that it is between the points of contact.
page 339




                                                                     Part
                  robot arm


                                              Gripper

     Better - less chance of slippage




- holding pressures/forces/etc are hard to control, try to hold parts with features or shapes


              robot arm
                                                   Part

                                          Gripper

                              part will be more stable, and well located




- compliance can help guide work into out-of-alignment conditions.
- sensors in the EOAT can check for parts not in the gripper, etc.
- the gripper should tolerate variance in work position with part alignment features
- gripper changers can be used to make a robot multifunctional
- multiple EOAT heads allow one robot to perform many different tasks without an EOAT
         change.
- *** Don’t try to mimic human behavior.
- design for quick removal or interchange of tooling by requiring a small number of tools
         (wrenches, screwdrivers, etc).
- provide dowels, slots, and other features to lead to fast alignment when changing grip-
         pers.
- use the same fasteners when possible.
- eliminate sharp corners/edges to reduce wear on hoses, wires, etc.
- allow enough slack and flexibility in cables for full range of motion.
- use lightweight materials, and drill out frames when possible.
- use hard coatings, or hardened inserts to protect soft gripper materials.
- examine alternatives when designing EOAT.
page 340


       - the EOAT should be recognized as a potential bottleneck, and given extra design effort.
       - use shear pins, and other devices to protect the more expensive components.
       - consider dirt, and use sealed bearings where possible.
       - move as much weight away from the tip of the gripper towards the robot.




11.1.2 Gripper Mechanisms

    • A gripper is specifically EOAT that uses a mechanical mechanism and actuator to grasp a
part with gripping surfaces (aka fingers)


    • Quite often gripper mechanisms can be purchases, and customized fingers attached.


    • Fingers are designed to,
       1. Physically mate with the part for a good grip
       2. Apply enough force to the part to prevent slipping


                                            µ = coeff. of friction between part and grippe
                                                                                         r
            µn f F g = wgS
                                            nf = number of contacting fingers
                                        F g = gripper force
                                         w = weight of part
                                          g = gravity
                                          S = factor of safety
                                               (for basic applications 2 to 3 should be the
                                                 absolute minimum, but high speed applications
                                                 will require more force to resist inertial forces)



    • Movements of the fingers
       - pivoting (often uses pivotal linkages)
       - linear or translational movement (often uses linear bearings and actuators)

    • Typical mechanisms
       - linkage actuation
       - gear and rack
       - cam
page 341


    - screw
    - rope and pulley
    - miscellaneous - eg. bladder, diaphragm




Two Finger Gripper - as the pneu-
  matic cylinder is actuated, the
  fingers move together and
  apart.




Parallel finger actuator - as the
   cylinder is actuated, the fin-
   gers move together and apart
   in parallel.
page 342




       Two Fingered Pneumatic Actuated - as the cylinder is
         actuated, it translates to the fingers opening or clos-
         ing. The extra links help increase holding force.




  Two Finger Internal Gripper - as
    the cylinder is actuated, the
    fingers move outward.




11.1.2.1 - Vacuum grippers

    • Suction cups can be used to grip large flat surfaces. The cups are,
       - typically made of soft rubber or plastic
       - typically round, or oval shapes

    • A piston operated vacuum pump (can give a high vacuum), or a venturi valve (simpler) can
page 343


be used to generate the vacuum.


    • The surfaces should be large, smooth, clean.


    • The force of a suction cup depends on the effective area of the vacuum and the difference in
the vacuum, and air pressures.



             F = PA                        F = maximum gripping force
                                           P = difference between vacuum and air pressure
                                           A = total effective area of the vacuum



    • e.g.


             We have a suction cup gripper with two 5”diameter cups that is to be used
             to lift 1/4” steel plates cut to 2’ by 3’. How much vacuum pressure must
             be applied to just hold the plates? Suggest a realistic value.


                        w = 0.28  ------  -- ( in ) × 24 ( in ) × 36 ( in ) = 60.48 ( lb )
                                      lb- 1     -
                                  3 4
                                    in
                                         2
                        A = 2 π  5 = 2 [ 19.63 ( in ) ] = 39.26 ( in )
                                                                    2             2
                                   --
                                    -
                                 2
                           w      60.48 ( lb )                                Minimum to hold plate
                       P = --- = ------------------------- = 1.54 ( psi )
                             -
                                                       2
                                                         -
                           A     39.26 ( in )
                      Assume low moving speed for robot, use factor of safety = 2.0

                      P S = 2.0 × P = 3.08 ( psi )


                    Note: this is much less than atmospheric pressure (15 psi), there-
                      fore it is realistic.
page 344


   • Advantages,
     - requires only one surface of a part to grasp
     - a uniform pressure can be distributed over some area, instead of concentrated on a point
     - the gripper is light weight
     - many different types of materials can be used

   • Disadvantages,
     - the maximum force is limited by the size of the suction cups
     - positioning may be somewhat inaccurate
     - time may be needed for the vacuum in the cup to build up




11.1.3 Magnetic Grippers

   • Can be used with ferrous materials


   • Electromagnets,
     - easy to control, requires a power supply, and a controller
     - polarity can be reversed on the magnet when it is put down to reverse residual magne-
             tism

   • Permanent magnets,
     - external power is not required
     - a mechanism is required to separate parts from the magnet when releasing
     - good for environments that are sensitive to sparks

   • Advantages,
     - variation in part size can be tolerated
     - ability to handle metal parts with holes
     - pickup times fast
     - requires only one surface for gripping
     - can pick up the top sheet from a stack

   • Disadvantages,
     - residual magnetism that remains in the workpiece
     - possible side slippage
page 345




11.1.3.1 - Adhesive Grippers

    • Can handle fabrics and other lightweight materials


    • These grippers are basically a sticky surface on the end of the robot


    • As the adhesive gripper is repeatedly used, it loses stickiness, but a tape roll can be used to
refresh the sticky surface.




11.1.4 Expanding Grippers

    • Some parts have hollow cavities that can be used to advantage when grasping.


    • A bladder can be inserted into a part, and then inflated. This forms a friction seal between
the two, and allows manipulation. When done the pressure is released, and the part freed.
page 346




    • Expanding grippers can also be used when gripping externally.




                              bladders inflate inwards




11.1.5 Other Types Of Grippers

    • Most grippers for manipulation are sold with mounts so that fingers may be removed, and
replaced.
page 347




    • Gripper fingers can be designed to reduce problems when grasping.




                                                        Self Aligning Finger Pads - small rock-
                                                           ing pads are placed on the end fingers,
                                                           these are also covered with a high
                                                           friction material, such as rubber.
                                                           These allow some locational inaccu-
                                                           racy when grasping parts.




                                                             Multiple Part Gripper - the gripper
                                                               has a number of holes cut for dif-
                                                               ferent parts. In this case the grip-
                                                               per can hold three different radii,
                                                               and the rubber lining will help
                                                               hole the part.




11.2 ADVANCED TOPICS



11.2.1 Simulation/Off-line Programming

    • How a robot interacts with the environment makes it difficult to program off-line. To do this
successfully, a complete simulation of the robot workspace is required.


    • One excellent example of a simulation package is CIMStation by Silma. It allows full con-
struction of the robots workspace, and subsequent testing.
page 348




    • Examples of simulated operation in CIMStation are,
         - painting
         - NC code verification
         - tool and fixture simulation
         - Design For Manufacturing
         - process planning
         - composite tape layup
         - composite filament layup
         - spot welding
         - arc welding
         - material/work manipulation
         - collision detection
         - deburring
         - inspection
         - kinematic and dynamic simulation
         - controller simulation

    • The simulators available for the robots in the lab allow off-line programming and simula-
tions.




11.3 INTERFACING

    - TTL IO
    - sourcing/sinking
    - serial communications




11.4 PRACTICE PROBLEMS
page 349


    7. Suggest a type of robot suitable for the following tasks. Briefly explain your suggestion.
    a) placing pallets on rack shelving
    ans. cartesian - well suited to cartesian layout of shelves.
    b) electronics assembly
    ans. scara - will work on a flat table well.
    c) loading and unloading parts from an NC mill
    ans. articulated - can easily move around obstructions.




    8. Suggest a type of robot suitable for the following tasks. Briefly explain your suggestion.
    a) a gas pump robot for placing the gas nozzle into the fuel tank.
    b) for drilling holes in a printed circuit board.
    c) to vacuum a hotel.




    3. We plan to use a pneumatic gripper to pick up a 4 by 8 sheet of glass weighing 40 lbs. Sug-
gest a gripper layout and dimensions of the cups. State any assumptions.


 ans.        For stability we want to set up an array of cups. A set of 3 or 4 would be reason-
               able to help support the sheet. - I will pick 4. Now, the diameter of the cup
               should be determined. We will assume that the vacuum pressure will be 5 psi
               below atmosphere, and we will use a factor of safety of 2.


                                       2
                       FS ( L ) = Nπr P
                                           2
                       2 ( 40lb ) = 4πr 5psi
                       4
                       -- = r 2
                        -              r > 1.128in
                       π




    4. A vacuum pump to be used in a robot vacuum gripper application is capable of drawing a
page 350


negative pressure of 4.0 psi compared to atmospheric. The gripper is to be used for lifting stain-
less steel plates, each plate having dimensions of 15” by 35”, and weighing 52 lbs. Determine the
diameter of the suction cups to be used for the gripper if it is decided to use two cups for greater
stability. A factor of safety of 1.5 should be used in the computations.




    5. Consider the following gripper design problems.
    a) We plan to use a friction gripper to pick up a 50 lb iron plate. Suggest a gripper design and
specify the force required.
    b) Design an end effector, and describe the path planning approach for a robot unloading sat-
ellites from the space shuttle.




11.5 LABORATORY - ROBOT INTERFACING

Purpose: Basic robot interfacing

Overview:

Pre-Lab (individual):
       1. Develop a program that will put down and pick up balls at two different point for both
               robots.
       2. Test both programs on-line.
       3. Plan for a mode of robot operation either one robot can deposit a ball in a center pickup
               point, or at their own private pickup points. (Only a single ball will be used) Each
               robot will have a button connected to it. If the robot button and the other robot has
               the button, the robot will request the ball from other robot (using an I/O line). A
               list of the inputs and outputs is given below. Develop a simple diagram showing
               outputs and inputs to connect two robots and sensors. Develop a state diagram for
               the operation of both robots. Rewrite the robot programs from step 1 so that they
               will use the inputs.
                        input #1 ball in my private point
                        input #2 other robot wants ball
                        input #3 ball request button
                        output #1 request ball from other robot

In-Lab (groups of 4):
page 351


       1. The instructor will discuss interfacing issues.
       2. Each group should do each of the three parts below in turn.
               1a. Test programs on the RV-M1, and add grippers/fixtures as required
               1b. Test programs on the RT-3000, and add grippers/fixtures as required
               1c. Connect and test the wiring for each of the robots and the interface
       2. Integrate all of the equipment for the final task.

Submit:
      1. Individually developed programs for the robots.
      2. Group programs for the robots and PLC.



11.6 LABORATORY - ROBOT WORKCELL INTEGRATION

Purpose: Interfacing robots to workcells using PLCs.

Overview:

Pre-Lab (individual):
       1. Develop a program that will draw a square on both robots, and test them on-line.
       2. Develop a program that will draw a circle on both robots, and test them on-line.
       3. Develop ladder logic for a micrologix that will watch for inputs from both robots. The
               two inputs will indicate when either of the robot is using the drawing paper. The
               PLC will also have outputs connected to both robots. Each robot will have two
               inputs. One input will cause a circle to be drawn, the other will cause the square to
               be drawn. The PLC will use inputs from push-button switches to indicate when a
               circle or square is to be drawn. The ladder logic should share the work between the
               robots.
       4. Combine and modify the robot programs so that they will interface to the PLC program.

In-Lab (groups of 3):
       1. Each group should do one of the tasks below,
              1a. Enter and test the program on the RT-3000 robot. Use a voltage source to test
                 the program.
              1b. Enter and test the program on the RV-M1 robot. Use a voltage source to test the
                 program.
              1c. Enter and test the program on the micrologix.
       2. Rotate between the stations until you have done all three modules.
       3. Connect the PLC and two robots electrically, and enter and test the programs.

Submit:
      1. Individually developed programs for the robots and PLC.
      2. Group programs for the robots and PLC.
page 352



12. SPATIAL KINEMATICS

    • Basically mechanisms that are 3D (not planar).




12.1 BASICS

    • When we deal with geometries in two dimensions we have three position variables (dof) for
each rigid body (two for position, one for orientation).


    • When a problem is expanded to three dimensions we then have six position variables (dof)
for a rigid body (three for position, and three for orientation).


    • These added degrees of freedom expand the complexity of the problem solutions. There are
a few potential approaches,
       - look for regularities that simplify the problem (scalar)
       - vector based approaches (positions)
       - matrix based approaches (positions and orientations)

    • Consider the example of the spherical joint - all of the axes of rotation coincide.
page 353




12.1.1 Degrees of Freedom

    • The scalar and vector approaches are easily extended to 3D problems. One significant dif-
ference is that the polar notations are no longer available for use.


    • We can determine the number of degrees of freedom using a simple relationship that is an
extension of the Kutzbach criteria,
page 354




     m = 6 ( n – 1 ) – 5j 1 – 4j 2 – 3j 3 – 2j 4 – j 5

     where,
          m = mobility of the mechanism (d.o.f.)
          n = number of links
           j 1, j 2, … = the number of joints with 1, 2, ... dof respectively



    • Consider the number of degrees of freedom in the linkage below,



                    y


                                                                          C


                                                                                          3”

                                                                                D


                                                 B                                  40”
                A                   6”                                E                        x

                                                                10”
     z




12.2 HOMOGENEOUS MATRICES

    • This method still uses geometry to determine the position of the robot, but it is put into an
ordered method using matrices.
page 355


• Consider the planar robot below,


                                                                  0.2m
                                                      1m


                                                                               TCP
                                               θ2                               (xT, yT)


                                     (x1,y1)
                 1m



                                θ1
                     (xb, yb)




• The basic approach to this method is,
   1. On the base, each joint, and the tool of the robot, attach a reference frame (most often x-
           y-z). Note that the last point is labels ‘T’ for tool. This will be a convention that I
           will generally follow.

                                θ2
                                                                  y            y FT
                                                             F2
                                 y                           z        xz          x
                           F1
                            z          x
        T 0, 1                                                        T 2, T
                                                    T 1, 2


                 y          θ1
        F0
         z             x



   2. Determine a transformation matrix to map between each frame. It is important to do this
page 356


            by assuming the joints are in their 0 joint positions. Put the joint positions in as
            variables.




T 0, 1 =                     T 1, 2 =                        T 2, T =




                                  1       0   0   ∆x
           trans ( ∆x, ∆y, ∆z ) = 0       1   0   ∆y
                                  0       0   1   ∆z
                                  0       0   0   1

                          1 0         0 0
           rot ( x, θ ) = 0 cos θ sin θ 0
                          0 – sin θ cos θ 0
                          0 0         0 1

                            cos θ   0 – sin θ 0
           rot ( y, θ ) =     0     1 0 0
                            sin θ   0 cos θ 0
                              0     0 0 1

                           cos θ sin θ 0 0
           rot ( z, θ ) = – sin θ cos θ 0 0
                             0      0 1 0
                             0      0 0 1
page 357




    ASIDE: The structure of these matrices describe the position (P) and orientation
of the x (N), y (O), z (A), axes.

                    NX OX AX PX                              y (O)

                    NY OY AY PY
                    NZ OZ AZ PZ                                       P         x (N)
                    0       0    0   1
                                               z (A)




                    cos θ 1 sin θ 1 0 0 1       0   0   1
         T 0, 1   = – sin θ 1 cos θ 1 0 0 0     1   0   0 = rot ( z, θ )trans ( 1, 0, 0 )
                                                                      1
                        0       0 1 0 0         0   1   0
                        0       0 0 1 0         0   0   1


                    cos θ 2 sin θ 2 0 0 1       0   0   1
         T 1, 2   = – sin θ 2 cos θ 2 0 0 0     1   0   0 = rot ( z, θ )trans ( 1, 0, 0 )
                                                                      2
                        0       0 1 0 0         0   1   0
                        0       0 0 1 0         0   0   1

                    1   0   0   0.2
        T 2, T    = 0   1   0    0 = trans ( 0.2, 0, 0 )
                    0   0   1    0
                    0   0   0    1

 3. Multiply the frames to get a complete transformation matrix.
page 358




           T 0, T = T 0, 1 T 1, 2 T 2, T


                       cos θ 1 sin θ 1 0 0 1        0   0    1 cos θ 2 sin θ2 0 0       1   0   0   1     1   0   0   0.2
            T 0, T   = – sin θ 1 cos θ 1 0 0 0      1   0    0 – sin θ 2 cos θ 2 0 0    0   1   0   0     0   1   0    0
                           0       0 1 0 0          0   1    0     0       0 1 0        0   0   1   0     0   0   1    0
                           0       0 0 1 0          0   0    1     0       0 0 1        0   0   0   1     0   0   0    1


                       cos θ 1 sin θ 1 0 0 1       0    0   1 cos θ 2 sin θ 2 0 0      1    0   0   1.2
           T 0, T    = – sin θ 1 cos θ1 0 0 0      1    0   0 – sin θ2 cos θ 2 0 0     0    1   0    0
                           0       0 10 0          0    1   0     0      0 1 0         0    0   1    0
                           0       0 01 0          0    0   1     0      0 0 1         0    0   0    1

                        cos θ 1 sin θ1 0 0 1       0    0   1 cos θ 2 sin θ 2 0 1.2 cos θ 2
           T 0, T    = – sin θ 1 cos θ 1 0 0 0     1    0   0 – sin θ 2 cos θ 2 0 – 1.2 sin θ 2
                           0       0 1 0 0         0    1   0     0       0 1          0
                           0       0 0 1 0         0    0   1     0       0 0          1

                         cos θ 1 sin θ 1 0 0     cos θ 2 sin θ 2 0 1.2 cos θ2 + 1

           T 0, T = – sin θ 1 cos θ1 0 0 – sin θ 2 cos θ 2 0 – 1.2 sin θ 2
                        0       0 10         0       0 1          0
                        0       0 01         0       0 0          1

                                                       complete the multiplication
                                                       and simplify to get......

                     Orientation                                                  Position
                          cos ( θ 1 + θ2 ) sin ( θ 1 + θ 2 ) 0 cos θ 1 + 1.2 cos ( θ 1 + θ 2 )

             T 0, T = – sin ( θ1 + θ 2 ) cos ( θ 1 + θ 2 ) 0 sin θ 1 + 1.2 sin ( θ 1 + θ 2 )
                               0                0          1              0
                               0                0          0              1



    • The position and orientation can be read directly from the homogenous transformation
matrix as indicated above.
page 359


    • To reverse the transform, we only need to invert the transform matrix - this is a direct result
of the loop equation.


       T 0, 1 T 1, 2 T 2, T T T, 0 = I

       where,
              I = Identity matrix
       We can manipulate the equation,
              ∴T 0, T T T, 0 = I
                                         –1
              ∴T T, 0 = ( T 0, T )




12.2.1 Denavit-Hartenberg Transformation (D-H)

    • Designed as more specialized transforms for robots (based on homogenous transforms)


    • Zi-1 axis along motion of ith joint


    • Xi axis normal to Zi-1 axis, and points away from it.


    • Basic transform is,
       1. rotate about Zi-1 by thetai (joint angle)
       2. translate along Zi-1 by di (link offset)
       3. translate along Xi by ai (link length)
       4. rotate about Xi by alphai (link twist)
page 360




           T i – 1, i = rot ( z i – 1, θ i )trans ( 0, 0, d i )trans ( a i, 0, 0 )rot ( x i, α i )


                        cos θ i cos α i sin θ i sin α i sin θ i a i cos θ i
                        sin θ i cos α i cos θ i – sin α i cos θ i a i sin θ i
         T i – 1, i =
                           0         sin αi            cos α i           di
                           0            0                 0              1




                                                                                          zi



                                                                                                                 Robot
                          zi                                                                                     Base
                                     αi + 1                xi

                                              zi + 1
                                                                                     yi
              xi + 1              yi + 1

                                                                                               di + 1



                                                                                                        θi + 1
                                                                           xi
                                                         ai + 1




    • We can see how the D-H representation is applied using the two link manipulator from
before
page 361




                             cos θ 1 – sin θ 1 0 cos θ 1          θi   =   θ1

                T 0, 1 =     sin θ1 cos θ 1 0 sin θ1              di   =   0
                               0            0      1     0        ai   =   1
                               0            0      0     1        αi   =   0


                             cos θ 2 – sin θ 2 0 cos θ 2          θi   =   θ2

                T 1, 2 =     sin θ2 cos θ 2 0 sin θ2              di   =   0
                               0            0      1     0        ai   =   1
                               0            0      0     1        αi   =   0



                             1     0   0   0.2                     θi = 0
                                                                   di = 0
                  T 2, T   = 0     1   0    0
                             0     0   1    0                     a i = 0.2
                             0     0   0    1                     αi = 0

                   T 0, T = T 0, 1 T 1, 2 T 2, T


                               cos θ 1 – sin θ 1 0 cos θ 1 cos θ2 – sin θ 2 0 cos θ2 1         0   0   0.2
                  T 0, T =     sin θ 1 cos θ 1 0 sin θ 1 sin θ 2 cos θ2 0 sin θ 2 0            1   0    0
                                 0         0     1 0         0        0     1 0      0         0   1    0
                                 0         0     0 1         0        0     0 1      0         0   0    1


                               cos ( θ 1 + θ 2 ) sin ( θ 1 + θ 2 ) 0 cos θ 1 + 1.2 cos ( θ 1 + θ2 )

                  T 0, T = – sin ( θ1 + θ 2 ) cos ( θ 1 + θ 2 ) 0 sin θ 1 + 1.2 sin ( θ 1 + θ 2 )
                                    0                0          1              0
                                    0                0          0              1




12.2.2 Orientation

   • The Euler angles are a very common way to represent orientation in 3-space.
page 362




     • The main problem in representing orientation is that the angles of rotation must be applied
one at a time, and by changing the sequence we will change the final orientation. In other words
the three angles will not give a unique solution unless applied in the same sequence every time.


     • By fixing a set of angles by convention we can then use the three angles by themselves to
define an orientation.


     • The convention described here is the Euler angles.


     • The sequence of orientation is,


          In order,
               rot ( θ ), rot ( φ ), rot ( ψ )
          where,
               θ = rotation about z axis
                 φ = rotation about new x axis
                ψ = rotation about new z axi
                                           s


     • Therefore to reorient a point in space we can apply the following matrix, to the position vec-
tors, or axes vectors, (there will be more on these matrices shortly)




   R x'   cos ψ sin ψ 0 1 0         0   cos θ sin θ 0 R x
   R y' = – sin ψ cos ψ 0 0 cos φ sin φ – sin θ cos θ 0 R y
   R z'      0      0 1 0 – sin φ cos φ    0     0 1 Rz


   R x'     ( cos θ cos ψ – sin θ cos φ sin ψ ) ( sin θ cos ψ + cos θ cos φ sin ψ ) ( sin φ sin ψ ) R x
   R y' = ( – cos θ sin ψ – sin θ cos φ cos ψ ) ( – sin θ sin ψ + cos θ cos φ cos ψ ) ( sin φ cos ψ ) R y
   R z'                ( sin θ sin φ )                      ( – cos θ sin φ )             ( cos φ )   Rz
page 363


    • We can find these angles given a set of axis before and after.




              1                  0.71
         x0 = 0            x 1 = 0.71           y0 =               y1 =
              0                   0




12.2.3 Inverse Kinematics

    • Basically we can find the joint angles for the robot based on the position of the end effector.


    • This is not a simple problem, and there are few reliable methods. This is partly caused by
the non-unique nature of the problem. At best there are typically multiple, if not infinite numbers
of equivalent solutions. The 2 dof robot seen before has two possible solutions.


    • We can do simple inverse kinematics with trigonometry.


    • If we have more complicated problems, we may try to solve the problem by examining the
transform matrix,
page 364




                cos ( θ 1 + θ 2 ) sin ( θ 1 + θ 2 ) 0 cos θ 1 + 1.2 cos ( θ 1 + θ 2 )

   T 0, T = – sin ( θ 1 + θ 2 ) cos ( θ 1 + θ 2 ) 0 sin θ 1 + 1.2 sin ( θ1 + θ 2 )
                     0                 0          1              0
                     0                 0          0              1
   Separate positions and simplify,
          x T = cos θ 1 + 1.2 cos ( θ 1 + θ 2 )

           x T – cos θ 1
          ∴------------------------- = cos ( θ 1 + θ 2 )
                    1.2
          y T = sin θ 1 + 1.2 sin ( θ1 + θ 2 )

           y T – sin θ 1
          ∴------------------------ = sin ( θ1 + θ 2 )
                    1.2
   Combine the two to eliminate the compound angles,
                                            2                                 2
           1 = ( cos ( θ1 + θ 2 ) ) + ( sin ( θ 1 + θ 2 ) )


                   x T – cos θ 1 2                y T – sin θ1 2
            ∴1 =  ------------------------- +  ------------------------
                           1.2                          1.2 
                               2                                       2          2       2
            ∴1.44 = x T – 2x T cos θ 1 + ( cos θ 1 ) + y T – 2y T sin θ 1 + ( sin θ 1 )
                              2       2
            ∴( 0.44 – x T – x T ) = – 2x T cos θ 1 – 2y T sin θ 1
                              2       2
              0.44 – x T – x T
            ∴ --------------------------------  = ( x T cos θ 1 + y T sin θ1 )
                                              -
                            –2                 

               ETC.....




12.2.4 The Jacobian
page 365


        • A matrix of partial derivatives that relate the velocity of the joints, to the velocity of the
tool.


                                           ∂x T ∂x T ∂x T
                                   d- x    -------- -------- --------     d-         d-
                                  ----     ∂θ 1 ∂θ 2 ∂θ 3                ---- θ     ---- θ
                                  dt T                                   dt 1       dt 1
                                   d-      ∂y T ∂y T ∂y T                 d-         d-
                                  ---- y = -------- -------- --------    ---- θ = J ---- θ
                                  dt T     ∂θ 1 ∂θ 2 ∂θ 3                dt 2       dt 2
                                   d-
                                  ---- z   ∂z T ∂z T ∂z T                 d-
                                                                         ---- θ      d-
                                                                                    ---- θ
                                  dt T     -------- -------- --------    dt 3       dt 3
                                           ∂θ 1 ∂θ 2 ∂θ 3

        • The inverse Jacobian is used for motion control


                                                              ·    ·
                                                              xT   θ1
                                                         –1
                                                     J        ·    ·
                                                              yT = θ2
                                                              ·    ·
                                                              zT   θ3



        • Find the Jacobian and inverse Jacobian for the 2 dof robot.


                                       θ2
                                                                               y            y FT
                                                                          F2
                                        y                                  z        xz         x
                                  F1
                                   z          x
                 T 0, 1                                                            T 2, T
                                                                T 1, 2


                          y        θ1
                 F0
                  z           x
page 366




               Find the Jacobian matrix for the matrix given below. This will give a
          matrix that relates tool velocity to joint velocities.The joint angles are 30° and
          20° for joints 1 and 2, find the joint velocities if the tool velocity is 0.05 m/s


                      cos ( θ 1 + θ 2 ) sin ( θ 1 + θ2 ) 0 cos θ1 + 1.2 cos ( θ1 + θ 2 )

          T 0, T = – sin ( θ 1 + θ 2 ) cos ( θ 1 + θ 2 ) 0 sin θ1 + 1.2 sin ( θ 1 + θ 2 )
                            0                 0          1             0
                            0                 0          0             1




12.3 SPATIAL DYNAMICS

    • The basic principles of planar dynamics are expanded up for 3D spatial problems. The
added dimension adds some complexity that should be addressed.




12.3.1 Moments of Inertia About Arbitrary Axes

    • Moments of Inertia are normally found for a single axis of rotation. When the object is
page 367


rotating about another axis, we must recalculate the moments of inertia.


    • If we take the moments of inertia for the original axes, and project these values onto new
vectors, we can get new values,


 We start by defining the vector equivalencies for rotated axes,
      R' = R = iR x + jR y + kR z = i'R' x + j'R' y + k'R' k

 We can project this vector to the other set of axes,
      R' x = ( i' ) • ( iR x + jR y + kRk ) = Rx cos θ i'i + Ry cos θ i'j + R z cos θ i'k

       R' y = ( j' ) • ( iR x + jR y + kRk ) = Rx cos θ j'i + Ry cos θ j'j + R z cos θ j'k

       R' z = ( k' ) • ( iR x + jRy + kR k ) = R x cos θ k'i + R y cos θ k'j + R z cos θk'k

 Next we integrate for moment of inertia for the shifted x axis,
       I x'x' =   ∫ ( i' × R'x ) • ( i' × R'x ) dm
                                                                     2
       ∴ =        ∫ ( R x cos θ i'i + R y cos θ i'j + R z cos θ i'k ) dm
                                    2                  2                 2
       ∴ =        ∫ ( Rx cos θi'i ) + ( Ry cos θi'j ) + ( Rz cos θi'k ) + 2 ( Rx cos θi'i Ry cos θi'j ) +
                        2 ( R x cos θi'i ( R z cos θ i'k ) ) + 2 ( Ry cos θ i'j ( R z cos θ i'k ) )dm
                                    2                     2                    2
       ∴I x'x' = I xx ( cos θ i'i ) + I yy ( cos θi'j ) + I zz ( cos θ i'k ) + 2I xy ( cos θ i'i cos θi'j ) +
                       2I xz ( cos θ i'i cos θi'k ) + 2I yz ( cos θ i'j cos θ i'k )
 Similarly for the shifted y and z axes,
                                    2                     2                    2
       ∴I y'y' = I xx ( cos θ j'i ) + I yy ( cos θj'j ) + I zz ( cos θ j'k ) + 2I xy ( cos θ j'i cos θj'j ) +
                       2I xz ( cos θ j'i cos θj'k ) + 2I yz ( cos θ j'j cos θ j'k )
                                   2                     2                     2
      ∴I z'z' = I xx ( cos θk'i ) + I yy ( cos θ k'j ) + I zz ( cos θ k'k ) + 2I xy ( cos θ k'i cos θ k'j ) +
                       2I xz ( cos θ k'i cos θ k'k ) + 2I yz ( cos θ k'j cos θ k'k )

 Next we integrate for the product of inertia for the shifted x and y axis,
       I x'y' =   ∫ ( i' × R'x ) • ( i' × R'y ) dm
page 368




This will lead to,
     I x'y' = I xx ( – cos θ i'i cos θ j'i ) + I yy ( cos θ i'j cos θ j'j ) + I zz ( – cos θ i'k cos θ j'k ) +

               I xy ( cos θ i'i cos θj'j + cos θ i'j cos θ j'i ) + I yz ( cos θ i'j cos θ j'k + cos θ i'k cos θ j'j ) +

               I xz ( cos θ i'k cos θ j'i + cos θi'i cos θ j'k )

     I y'z' = I xx ( – cos θ j'i cos θ k'i ) + I yy ( cos θ j'j cos θ k'j ) + I zz ( – cos θ j'k cos θ k'k ) +

            I xy ( cos θj'i cos θ k'j + cos θ j'j cos θ k'i ) + I yz ( cos θ j'j cos θ k'k + cos θ j'k cos θ k'j ) +

             I xz ( cos θ j'k cos θk'i + cos θ j'i cos θ k'k )

     I x'y' = I xx ( – cos θ k'i cos θ i'i ) + I yy ( cos θ k'j cos θ i'j ) + I zz ( – cos θ k'k cos θ i'k ) +

            I xy ( cos θk'i cos θ i'j + cos θ k'j cos θ i'i ) + I yz ( cos θ k'j cos θi'k + cos θ k'k cos θ i'j ) +

             I xz ( cos θ k'k cos θ i'i + cos θ k'i cos θ i'k )




  We can define the new coordinate system in terms of translated axes,
           R x'' = R x' + d x'                    R y'' = R y' + d y'        R z'' = R z' + d z'

  This can be integrated for the shifted x axis,
                                   2          2                          2                 2
            I x''x'' =   ∫ ( Ry'' + Rz'' ) dm = ∫ ( ( Ry' + dy' ) + ( Rz' + dz' ) ) dm
                                 2                 2     2                  2
             ∴ =         ∫ ( R y' + 2Ry'd y' + d y' + Rz' + 2R z'd z' + d z' ) dm
                                   2         2                                                          2        2
             ∴ =         ∫ ( Ry'       + R z' ) dm + ∫ ( 2R y'd y' ) dm + ∫ ( 2R z'd z' ) dm + ∫ ( d y' + d z' ) dm
                                                                         2       2
             ∴ = I y'z' + 2mRM y' d y' + 2mRM z' d z' + ( d y' + d z' )m
page 369




       This eventually leads to,
                                                                           2                2
               I x''x'' = I x'x' + 2mR M y' dy' + 2mR M z' d z' + m ( d y' ) + m ( d z' )

                                                                           2                2
               I y''y'' = I y'y' + 2mR M x' dx' + 2mR M z' d z' + m ( d x' ) + m ( d z' )
                                                                           2                2
               I z''z'' = I z'z' + 2mRMx' d x' + 2mRMy' d y' + m ( d x' ) + m ( d y' )

               I x''y'' = I x'y' + 2mR M x' dy' + 2mR M y' d x' + md x' d y'

               I y''z'' = I y'z' + 2mR My' d z' + 2mRMz' d y' + md y' d z'

               I x''z'' = I x'z' + 2mR Mx' d z' + 2mRMz' d x' + md x' d z'




12.3.2 Euler’s Equations of Motion

    • We can use Euler’s equations of motion to determine moments produced by angular veloci-
ties and accelerations.


                 ∑ MM     ij x
                                 = I Mxx αx – ( I Myy – I Mzz )ω y ω z


                 ∑ MM     ij y
                                 = I Myy αy – ( I Mxx – I Mzz )ω x ω z


                 ∑ MM     ijz
                                 = I Mzz α z – ( I Mxx – I Myy )ω x ω y



    • These can be used to examine rotating three dimensional masses. Consider the following,
page 370




                                             F
                                                        The disk and shaft shown are rotated at
                                                 2000 rpm, and there is an angular acceleration
           2”     6”                             of 20 rev/(sec.sec.). The steel part is held in a
                                                 cantilevered bearing that can be approximated
                                    1”           with the forces shown.
         8”                    8”        F
                 1”




12.3.3 Impulses and Momentum

   • Momentum is a convenient alternative to energy in analysis of systems.




12.3.3.1 - Linear Momentum

   • momentum is defined as,
page 371




         t2                  t2

         ∫ F ( t ) dt   =     ∫ mA ( t ) dt   = mV ( t 2 ) – mV ( t 1 ) = L ( t )
         t1                  t1

                        Impulse                                    Momentum




    • If no external forces are applied, momentum remains constant (is conserved). In this case L
is a constant.


    • An impulse is a force applied that will change momentum.




12.3.3.2 - Angular Momentum

    • Angular momentum is for rotating objects. The rotation about some center tends to make
these equations a bit more complicated than linear momentum.


    • We can start to find this as a velocity times a distance of rotation, and this will lead to the
eventual relationships,



              ∑ MM      x
                             = I Mxx α x – I Mxy αy – I Mxz α z + ω y H z – ω z H y

              ∑ MM       y
                             = – I Myx α x + I Myy α y – I Myz α z + ω z H x – ω x H z


              ∑ MM      z
                             = – I Mxzx α x – I Mzy α y + I Mzz αz + ω x H y – ω y H x




    • These equations show the angular momentum H, along with other familiar terms.
page 372


12.4 DYNAMICS FOR KINEMATICS CHAINS

   • There are a variety of common methods,
      - Euler-Lagrange - energy based
      - Newton-Euler - D’Alembert’s equations




12.4.1 Euler-Lagrange

   • This method uses a Lagrangian energy operator to calculate torques



              L i ( θ i, ω i ) = K i – P i        L ( θ, ω ) =   ∑ Ki – ∑ Pi
              ----  ∂ L i – ∂ L i = Q i
               d-
              dt  ∂ ω i    ∂ θi 

              where,
                  L = lagrangian
                  K = kinetic energy of link ‘i’
                  P = potential energy of link ‘i’
                  Q = forces and torques



   • For a typical link,
page 373




                     T
               mi V Ci V Ci               T
         K i = ---------------------- + ω i I i ω i
                                    -
                         2
         where,
               m = mass of link i
               V = velocity of center of mass of link i
               omega = angular velocity of link i
               I = mass moment of inertia of link i
                     T
          P i = m i g R Ci

          where,
              g = gravity vector
              R = displacement from base of robot to center of mass of link



• If we have used matrices to formulate the problem, we use the Jacobian to find velocities.



       V Ci
              = J ( θ )ω
        ωi



• Consider the example below,
page 374




                                0.2m
                       1m


                                         TCP
                θ2                        (xT, yT)


1m
                                M links = 5kg        I links = 10

           θ1                   M tool = 0.5kg        I tool = 1
(xb, yb)
page 375




12.4.2 Newton-Euler

    • We can sum forces and moments, and then solve the equations in a given sequence.



           ∑ Fi – mi Ai = 0
           ∑ Mi – Ii ( αi + ωi )
                             2
                                        = 0




    • These equations can be written in vector form,


       f i – 1 – fi + mi g – mi Ai = 0

       where,
               f = forces between link i and i+1
               A = acceleration of center of mass of link i

       n i – 1 – n i + r i, Ci × f i – r i – 1, Ci × f i – 1 – I i α i – ω i × ( I i × ω i ) = 0

       where,
               f = forces between link i and i+1
               A = acceleration of center of mass of link i



    • To do these calculations start at the base, and calculate the kinematics up to the end of the
manipulator (joint positions, velocities and accelerations). Then work back from the end and find
forces and moments.




12.5 REFERENCES

    Erdman, A.G. and Sandor, G.N., Mechanism Design Analysis and Synthesis, Vol. 1, 3rd Edi-
page 376


tion, Prentice Hall, 1997.


    Fu, Gonzalez, and Lee,


    Shigley, J.E., Uicker, J.J., “Theory of Machines and Mechanisms, Second Edition, McGraw-
Hill, 1995.




12.6 PRACTICE PROBLEMS

    1. For the Stanford arm below,

                                              θ1



                                                    TOP VIEW


                                                    FRONT VIEW
                                r
                                             TCP
                                               θ2
              d1


       y

                                (0,0,0)
       z
                   x


       a) list the D-H parameters (Hint: extra “dummy” joints may be required)
       b) Find the forward kinematics using homogenous matrices.
       c) Find the Jacobian matrix for the arm.
       d) If the arm is at θ1 = 45 degrees, θ2 = 45 degrees, r = 0.5m, find the speed of the TCP if
                the joint velocities are θ’1 = 1 degree/sec, θ’2 = 10 degrees/sec, and r’ = 0.01 m/
                sec.
page 377


    3. Robotics and Automated Manipulators (RAM) has consulted you about a new robotic
manipulator. This work will include kinematic analysis, gears, and the tool. The robot is pictured
below. The robot is shown on the next page in the undeformed position. The tool is a gripper (fin-
ger) type mechanism.




                                                                Tool




    The robot is drawn below in the undeformed position. The three positioning joints are shown,
and a frame at the base and tool are also shown.
page 378




                                               θ1
                              x0
                                                       yT
                                          a
                        z0
                                                           zT


                                                θ2
                                                           zT
                                                                                    yT

                                                                    xT
        c                     b            r
                                                       xT

                       y0                                                  y
                              x0                                         z0 0



    The tool is a basic gripper mechanism, and is shown as a planar mechanism below. As the
cylinder moves to the left the fingers close.


                                                       f
                                                                          Finger


                                                                                d
        Pneumatic
        cylinder                                                                e


                                                                g




    a) The first thing you do is determine what sequence of rotations and translations are needed
to find the tool position relative to the base position.
page 379


    b) As normal, you decide to relate a cartesian (x-y) velocity of the gripper to joint velocities.
Set up the calculation steps needed to do this based on the results in question #1.
    c) To drive the revolute joints RAM has already selected two similar motors that have a max-
imum velocity. You decide to use the equations in question #2, with maximum specified tool
velocities to find maximum joint velocities. Assume that helical gears are to be used to drive the
revolute joints, specify the basic dimensions (such as base circle dia.). List the steps to develop
the geometry of the gears, including equations.
    d) The gripper fingers may close quickly, and as a result a dynamic analysis is deemed neces-
sary. List the steps required to do an analysis (including equations) to find the dynamic forces on
the fingers.
    e) The idea of using a cam as an alternate mechanism is being considered. Develop a design
that is equivalent to the previous design. Sketch the mechanism and a detailed displacement graph
of the cam.
    f) The sliding joint ‘r’ has not been designed yet. RAM wants to drive the linear motion,
without using a cylinder. Suggest a reasonable design, and sketch.


    4. For an articulated robot, find the forward, and inverse kinematics using geometry, homog-
enous matrices, and Denavit-Hartenberg transformations.


    5. Assign Denavit-Hartenberg link parameters to an articulated robot.
page 380


    6. For the Stanford arm below,

                                                θ1



                                                      TOP VIEW


                                                      FRONT VIEW
                                  r
                                               TCP
                                                 θ2
              d1


         y

                                  (0,0,0)
         z
                   x


         a) list the D-H parameters (Hint: extra “dummy” joints may be required)
         b) Find the forward kinematics using homogenous matrices.
         c) Find the Jacobian matrix for the arm.
         d) If the arm is at θ1 = 45 degrees, θ2 = 45 degrees, r = 0.5m, find the speed of the TCP if
                  the joint velocities are θ’1 = 1 degree/sec, θ’2 = 10 degrees/sec, and r’ = 0.01 m/
                  sec.

    7. Consider the forward kinematic transformation of the two link manipulator below. Given
the position of the joints, and the lengths of the links, determine the location of the tool centre
point using a) basic geometry, b) homogenous transforms, and c) Denavit-Hartenberg transforma-
tions.
page 381




                                                           Pw(x, y)



                                   L2 = 10”                      theta2 = 45 deg.



                        L1 = 12”                                            y


                                                                                     x
                                              theta1 = 30 deg.




    a) For the robot described in question 1 determine the inverse kinematics for the robot. (i.e.,
given the position of the tool, determine the joint angles of the robot.) Keep in mind that in this
case the solution will have two different cases. Determine two different sets of joint angles
required to position the TCP at x=5”, y=6”.


    b) For the inverse kinematics of question #2, what conditions would indicate the robot posi-
tion is unreachable? Are there any other cases that are indeterminate?


    8 Find the dynamic forces in the system below,
page 382




              y         AB rotates 20rad/s c.c.w. in the
                          xy plane, there are ball joints
                          at B and C, and the collar at D
                          slides along the prismatic             C
                          shaft. What are the positions,
                          velocities and accelerations of
                          the links?                                           3”

                                                                     D


                                        B                                40”
          A                 6”                               E                      x

                                                       10”
 z



9. Examine the robot figure below and,


a) assign frames to the appropriate joints.
page 383




                                           x        z

                                 L4

                                               y

                                               θ1




         y
             l2




                                      l3

L1


                  x
     z
page 384




                                                                                x            z
 ANS.
                                                                                            FT

                                                                                        y
                                                                           y
                                                                 F3
                                                                                    x

                                                                 z
                    y


            F1          y                                             x

                                x                            y

        z                                                        z
                                                                               F2




                             F0
                                            x
            z



  b) list the transformations for the forward kinematics.


ans.
                T 0, 1 = trans ( 0, L 1, 0 )

                T 1, 2 = trans ( l 2, 0, 0 )rot ( z, 90° )

                T 2, 3 = trans ( l 3, 0, 0 )rot ( z, – 90° + θ 1 )

                T 3, T = trans ( L 4, 0, 0 )rot ( z, 90° )rot ( x, 90° )



  c) expand the transformations to matrices (do not multiply).
page 385




ans.
                   10 0 0
                   0 1 0 L1
       T 0, 1 =
                   00 1 0
                   00 0 1

                   1 0 0 l2cos 90° sin 90° 0 0
       T 1, 2   = 0 1 0 0 – sin 90° cos 90° 0 0
                  00 1 0      0        0    1 0
                  00 0 1      0        0    0 1

                   1 0 0 l3      cos ( – 90° + θ 1 ) sin ( – 90° + θ1 ) 0 0

       T 2, 3 = 0 1 0 0 – sin ( – 90° + θ1 ) cos ( – 90° + θ 1 ) 0 0
                0 0 1 0           0                   0          10
                0 0 0 1           0                   0          01

                   1 0 0 L4       cos 90° sin 90° 0 0          1     0        0    0
       T 3, T = 0 1 0 0           – sin 90° cos 90° 0 0        0 cos 90° sin 90° 0
                0 0 1 0               0        0    1 0        0 – sin 90° cos 90° 0
                0 0 0 1               0        0    0 1        0     0        0    1




  10. Given the transformation matrix below for a polar robot,


                                cos ( θ ) sin ( θ )     0 r cos ( θ )
                     T 0, T   = – sin ( θ ) cos ( θ )   0 r sin ( θ )
                                    0         0         1     0
                                    0         0         0     1



  a) find the Jacobian matrix.
page 386




 ans.
                        d-    ∂x ∂x       d-                                   d-
                       ---- x            ---- r                               ---- r
                       dt = ∂ r ∂ θ      dt =         cos ( θ ) – r sin ( θ ) dt
                        d-    ∂y ∂y       d-          sin ( θ ) r cos ( θ ) ---- θ
                                                                               d-
                       ---- y            ---- θ
                       dt     ∂r ∂θ      dt                                   dt


    b) Given the joint positions, find the forward and inverse Jacobian matrices.


         θ = 30°                  r = 3in



 ans.
              J =          cos ( 30° ) – 3 sin ( 30° ) = 0.866 –1.5
                           sin ( 30° ) 3 cos ( 30° )      0.5 2.598

                  –1         0.866 0.5
              J        =
                            – 0.167 0.289

    c) If we are at the position below, and want to move the tool at the given speed, what joint
velocities are required?



        ---- x = – 1 in
         d-
                                         ---- y = 2 in
                     ----
                        -                 d-        ----
                                                       -
        dt            s                  dt          s



 ans.
              d-
             ---- r
             dt = 0.866 0.5 – 1 = 0.134
              d     – 0.167 0.289 2 0.745
             ---- θ
                -
             dt



    11. Examine the robot figure below and,
    a) assign frames to the appropriate joints.
page 387




                                                  θ1
                                x0
                                                          xT
                                              a
                         z0
                                                            zT
                                                                                yT
                                                          yT
                                                   θ2
                                                            zT
                                                                                               xT

       c                        b             r


                        y0                                                                y
                                x0                                                      z0 0

    b) list the transformations for the forward kinematics.
    c) expand the transformations to matrices (do not multiply).


    12. Given the transformation matrix below for a polar robot,


                 cos ( θ 1 + θ2 ) sin ( θ 1 + θ 2 ) 0 cos θ 1 + 1.2 cos ( θ 1 + θ 2 )

     T 0, T = – sin ( θ 1 + θ 2 ) cos ( θ 1 + θ 2 ) 0 sin θ 1 + 1.2 sin ( θ 1 + θ 2 )
                       0                 0          1              0
                       0                 0          0              1

    a) find the Jacobian matrix.
    b) Given the joint positions, find the forward and inverse Jacobian matrices.


           θ 1 = 30°          θ1 = 40°

    c) If we are at the position below, and want to move the tool at the given speed, what joint
velocities are required?
page 388




         ---- x = – 1 in
          d-
                                         ---- y = 2 in
                      ----
                         -                d-        ----
                                                       -
         dt            s                 dt          s



    13. Find the forward kinematics for the robots below using homogeneous and Denavit-
Hartenberg matrices.


     y                                   y                                y



                             x                                        x           x


                       y                                       y




                                              x                               x




    14. Use the equations below to find the inverse Jacobian. Use the inverse Jacobian to find the
joint velocities required at t=0.5s.


         x = 4 cos ( θ 1 ) + 6 cos ( θ1 + θ 2 ) in.
         y = 4 sin ( θ1 ) + 6 sin ( θ 1 + θ 2 ) in.
page 389




ANS.
       First, find tool and joint positions,
                                     3    2
               P ( 0.5 ) = 3 + ( – 2t + 3t ) 5 = 5.5
                           5                 2    6

                                                                   α = atan  ------ 
                                   2         2                                  6-
               r =          5.5 + 6                                          5.5
                                                                                                                           2        2       2
                                                                                                             r – (4 + 6 )
                                                                                         ∴θ 2 = 180 – acos  --------------------------------
                 2            2         2            ·                                    ·
               r = 4 + 6 – 2 ( 4 ) ( 6 ) cos ( 180 – θ 2 )                                                  –2 ( 4 ) ( 6 ) 
                                                                                                                                            -

               sin ( θ 1 – α )               sin ( 180 – θ 2 )                                         6 sin ( 180 – θ 2 )
                                                                                         ∴θ 1 = asin  -----------------------------------  + α
                                                                                          ·
               --------------------------- = --------------------------------
                                         -                                  -                                                            -
                            6                                r                                                         r                  

       Next, the Jacobian,

                           – 4 sin ( θ 1 ) – 6 sin ( θ 1 + θ 2 ) – 6 sin ( θ 1 + θ 2 )
               J =
                            4 cos ( θ 1 ) + 6 cos ( θ1 + θ 2 ) 6 cos ( θ1 + θ 2 )


       Substitute and solve

                d θ      –1
               ---- 1 = J 7.5
                  -
               dt θ         3
                    2
page 390



13. MOTION CONTROL


13.1 KINEMATICS

    • A robot must be able to map between things that it can control, such as joint angles, to the
position of the tool in space.


    • Describing the position of the robot in terms of joint positions/angles is Joint Space.


    • Real space is often described with a number of coordinate systems,
       - cartesian
       - polar
       - spherical

    • Positions can also be specified with respect to the robot base (Robot Coordinates), or glo-
bally (World Coordinates).




13.1.1 Basic Terms



                          link/joint coordinates

                                                                 tool coordinates


       base coordinates




    • Robot base coordinates don’t move and are often used to specify robot tool position and ori-
entation. (centre of the robots world)
page 391




    • Link/Joint Coordinates - specify where joints, endpoints or centers are located.


    • Tool coordinates - determine where the tool is and what orientation it is in.


    • World Coordinates - relates various robots to other robots and devices.


    • Coordinate transformation - Can map from one set of coordinates to another. Most common
method is matrix based. One special case of this is the Denavit-Hartenrberg transformation.




13.1.2 Kinematics

                                                              0.2m
                                                  1m


                                                                       TCP
                                            theta2                      (xT, yT)


                                (x1,y1)
                   1m                                   Note: When defining angles is is more
                                                  convenient to indicate the positive direc-
                                                  tion and origin (as shown with the solid
                             theta1
                     (xb, yb)                     line for ‘theta 2’). With more classical
                                                  sketching we would use the dashed line,




    • Forward kinematics involves finding the endpoint of the robot (xT, yT) given the joint coor-
dinates (theta1, theta2)


    • There a number of simple methods for finding these transformations,
page 392


      - basic geometry
      - transformation matrices
      - Denavit-Hartenberg transformations




13.1.2.1 - Geometry Methods for Forward Kinematics

   • For simple manipulators (especially planar ones) this method is often very fast and efficient.


   • The method uses basic trigonometry, and geometry relationships.


   • To find the location of the robot above, we can see by inspection,
page 393




            x T = x b + l 1 cos θ 1 + ( l 2 + 0.2 ) cos ( θ 1 + θ 2 )
             y T = y b + l 1 sin θ 1 + ( l 2 + 0.2 ) sin ( θ1 + θ 2 )

                       often set to zero


      The general form of the operation is as below,

            ( θ 1, θ 2, … ) → ( x T, y T, z T, θ Tx, θT y, θ Tz )


                            ASIDE: later we will see that the opposite operation
                                    maps from tool coordinates, and is called the
                                    inverse kinematics.
                                     ( θ 1, θ 2, … ) ← ( x T, y T, z T, θT x, θ Ty, θ Tz )


      Also note that the orientation of the tool is included, as well as position, therefore for
      the example,
            θ Tx = 0

           θTy = 0

           θ Tz = θ1 + θ 2



    • The problem with geometrical methods are that they become difficult to manage when more
complex robots are considered. This problem is overcome with systematic methods.




13.1.2.2 - Geometry Methods for Inverse Kinematics

    • To find the location of the robot above, we can see by inspection,
page 394




          Inverse kinematics maps from the tool coordinates to the joint coordinates.




              ( θ 1, θ 2, … ) ← ( x T, y T, z T, θT x, θ T y, θ Tz )




    • Mathematically this calculation is difficult, and there are often multiple solutions.




13.1.3 Modeling the Robot

    • If modeling only one link in motion, the model of the robot can treat all the links as a single
moving rigid body,
page 395




                            θ, ω, α
                                                      CG, M, J




    • If multiple joints move at the same time, the model becomes non-linear, in this case there
are two approaches taken,
       1. Develop a full non-linear controller (can be very complicated).
       2. Develop linear approximations of the model/control system in the middle of the normal
              workspace.




13.2 PATH PLANNING

    • Basic - “While moving the robot arm from point A to B, or along a continuous path, the
choices are infinite, with significant differences between methods used.”




13.2.1 Slew Motion

    • The simplest form of motion. As the robot moves from point A to point B, each axis of the
manipulator travels as quickly as possible from its initial position to its final position. All axis
begin moving at the same time, but each axis ends it motion in a length of time that is proportional
to the product of its distance moved and its top speed (allowing for acceleration and deceleration)


    • Note: slew motion usually results in unnecessary wear on the joints and often leads to unan-
page 396


ticipated results in the path taken by the manipulator.


    • Example - A three axis manipulator with revolute joints starts with joint angles (40, 80, -
40)degrees, and must move to (120, 0, 0)degrees. Assume that the joints have maximum absolute
accelerations/decelerations of (50, 100, 150) degrees/sec/sec, and the maximum velocities of (20,
40, 50) degrees/sec. Using slew motion, what is the travel time for each joint?



             Joint angle (degrees)
      180


        90

                                                                                    time(sec)

                                                     θ3
                                                                 θ2
      -90                                                                 θ1


              Joint velocity (degrees/sec)
    ω max                                                                  αmax



                 t acc                       t max               t dec
page 397




        The area under the velocity curve is the distance (angle in this case) travelled. First we
          can determine the distance covered during acceleration, and deceleration and the
          time during acceleration, and deceleration.

                        ω max
        t acc = t dec = ----------- =  20, -------- , -------- = ( 0.4, 0.4, 0.333 )sec.
                                  -         - 40- 50-
                        αmax           ----- 100 150
                                        50
                          t acc ω max.vel.
         θ acc. = θdec. = --------------------------- =  0.4 ( 20 ), 0.4 ( 40 ), 0.333 ( 50 ) = ( 4, 8, 8.33 )deg.
                                                    -     ----------------- ----------------- -----------------------
                                                                          -                 -                       -
                                       2                 2                         2                    2            

        The next step is to examine the moves specified,
        θ move = θ end – θ start = ( 120 – 40, 0 – 80, 0 – ( – 40 ) ) = ( 80, – 80, 40 )deg.

         Remove the angles covered during accel./deccel., and find the travel time at maximum
         velocity.
                  θ move – 2θ acc                      80 – 2 ( 4 ) 80 – 2 ( 8 - 40 – 2 ( 8.333 )    )
        t max = ---------------------------------- =  ---------------------- , ---------------------- , -------------------------------- 
                                                 -
                                                                           -                                                           -
                            ω max                               20                       40                            50

        t max = ( 3.6, 1.6, 0.46668 )sec.                                           Note: below zero the speeds will
                                                                                      never reach maximum velocity
        t total = t acc + t max + t dec = ( 4.4, 2.4, 1.13 )s                         before starting to decelerate.




13.2.1.1 - Joint Interpolated Motion

    • Similar to slew motion, except all joints start, and stop at the same time. In the last example
for slew motion, all of the joints would have moved until all stopping simultaneously at 4.4 sec-
onds.


    • This method only demands needed speeds to accomplish movements in least times.




13.2.1.2 - Straight-line motion
page 398


    • In this method the tool of the robot travels in a straight line between the start and stop
points. This can be difficult, and lead to rather erratic motions when the boundaries of the work-
space are approached.


    • NOTE: straight-line paths are the only paths that will try to move the tool straight through
space, all others will move the tool in a curved path.




    • The basic method is,
       1. Develop a set of points from the start and stop points that minimize acceleration.
       2. Do the inverse kinematics to find the joint angles of the robot at the specified points.

    • Consider the example below,
page 399




Given,

     P 0 = ( 5, 5, 5 )in.                  P 1 = ( – 5, – 5, 5 )
                                                                              t0 = 0      t1 = 2
     d-                                    d-
    ---- P 0 = ( 0, 0, 0 )                ---- P 1 = ( 0, 0, 0 )
    dt                                    dt

    Model the path with a function that allows acceleration/deceleration, in this case
a third order polynomial will be used. The equation will be parameterized for sim-
plicity (i.e., s = [0,1], where s=0 is the path start, and s=1 is the path end).
    P ( t ) = P0 + ( P1 – P 0 )s ( t )
                                             d-                     d-
    s ( t0 ) = 0       s ( t1 ) = 1         ---- s ( t 0 ) = 0     ---- s ( t 1 ) = 0
                                            dt                     dt

                   3    2             d-
    s ( t ) = At + Bt + Ct + D                         2
                                     ---- s ( t ) = 3At + 2Bt + C
                                     dt
    Next, numerical values will be entered to find equation values


                             3        2
         s(0) = A(0) + B(0 ) + C(0) + D = 0                                      ∴D = 0
                             3        2
         s(2) = A(2) + B(2 ) + C(2) + D = 1                                      ∴8A + 4B = 1
          d-
         ---- s ( 0 ) = 3A ( 0 ) + 2B ( 0 ) + C = 0                              ∴C = 0
         dt

                                                                                 ∴ – -- A = B
          d-                                                                          3
         ---- s ( 2 ) = 3A ( 2 ) + 2B ( 2 ) + C = 0                                2
                                                                                       -
         dt


         8A + 4  – -- A = 1
                    3                                  1                         3
                     -                            ∴A = --
                                                        -                 ∴B = – --
                                                                                  -
                 2                                   2                         4
    This can now be put in the final form,

                                           3
         P ( t ) = P 0 + ( P 1 – P 0 )  --- – 3 t 
                                         t-       2
                                               --
                                                -
                                       2 4 
page 400


13.2.2 Computer Control of Robot Paths (Incremental Interpolation)

    • Path Planning is a simple process where the path planning methods described before (such
as straight line motion) are used before the movement begins, and then a simple real-time lookup
table is used.


    • The path planner puts all of the values in a trajectory table.


    • The on-line path controller will look up values from the trajectory table at predetermined
time, and use these as setpoints for the controller.


    • The effect of the two tier structure is that the robot is always shooting for the next closest
‘knot-point’ along the path.
page 401




       Desired
       configuration                                                               Set point
                          Off-line         Trajectory                              table
    Current                                table                Kinematic
                          path                                  Transforms
    Configuration         planning



                                                 Done before motion begins
                                                 Done during motion, and all other times

                                   Time based interrupt        Servo motor routine runs
                                   routine                     for each axis

       Interrupt                        Choose new
       Clock                            point from
                                        trajectory table
                                                                       Read θ desired


       Set-point
       table                                 θ desired               Compute
                                                                     error



                                                                     Output actuator
                                          Return                     signal




    • The above scheme leads to errors between the planned, and actual path, and lurches occur
when the new setpoints are updated for each servo motor.
page 402




              speed
                                                                       actual position


                                        trajectory table




                                                                                            time
                                      trajectory table time step



               position
                                          required


                                                     actual



                                                                                         time



    • The quantization of the desired position requires a decision of what value to use, and this
value is fixed for a finite time.


    • The result is that the path will tend to look somewhat bumpy,
page 403




   The desired path tends to deviate from the points in the trajectory
   table, and the tool tends to follow a path like                           In this case an
   that pictured below. Moreover this scheme                                 extra step is
   will lead to uneven acceleration over                                     added to
                                                                  knot 5 end compensate for
   the path segments
                                                      knot 4                 the position errors
                 Path segments           knot 3


                           knot 2
                  knot 1
          start                            **Note: this occurs with straight-line motion also




13.3 PRACTICE PROBLEMS

    1.
    a) A stepping motor is to be used to actuate one joint of a robot arm in a light duty pick and
place application. The step angle of the motor is 10 degrees. For each pulse received from the
pulse train source the motor rotates through a distance of one step angle.
       i) What is the resolution of the stepper motor?
       ii) Relate this value to the definitions of control resolution, spatial resolution, and accu-
               racy, as discussed in class.
    b) Solve part a) under the condition that the three joints move at different rotational veloci-
ties. The first joint moves at 10 degrees/sec., the second joint moves at 25 degrees/sec, and the
third joint moves at 30°/sec.




    2. A stepping motor is to be used to drive each of the three linear axes of a cartesian coordi-
nate robot. The motor output shaft will be connected to a screw thread with a screw pitch of
0.125”. It is desired that the control resolution of each of the axes be 0.025”
         a) to achieve this control resolution how many step angles are required on the stepper
                 motor?
page 404


         b) What is the corresponding step angle?
         c) Determine the pulse rate that will be required to drive a given joint at a velocity of 3.0”/
                sec.



    3. For the stepper motor of question 6, a pulse train is to be generated by the robot controller.
         a) How many pulses are required to rotate the motor through three complete revolutions?
         b) If it is desired to rotate the motor at a speed of 25 rev/min, what pulse rate must be gen-
                   erated by the robot controller?



    4. A stepping motor is to be used to actuate one joint of a robot arm in a light duty pick and
place application. The step angle of the motor is 10 degrees. For each pulse received from the
pulse train source the motor rotates through a distance of one step angle.
         a) What is the resolution of the stepper motor?
         b) Relate this value to the definitions of control resolution, spatial resolution, and accu-
                racy, as discussed in class.



    5. Find the forward kinematics for the robots below using geometry methods.


     y                              y                             y



                          x                                x                          x


                     y                              y




                                        x                               x




    6. Consider the forward kinematic transformation of the two link manipulator below.
page 405




                                                           Pw(x, y)



                                   L2 = 10”                      theta2 = 45 deg.



                       L1 = 12”                                             y


                                                                                    x
                                              theta1 = 30 deg.




       a) Given the position of the joints, and the lengths of the links, determine the location of
              the tool centre point using basic geometry.
       b) Determine the inverse kinematics for the robot. (i.e., given the position of the tool,
              determine the joint angles of the robot.) Keep in mind that in this case the solution
              will have two different cases.
       c) Determine two different sets of joint angles required to position the TCP at x=5”, y=6”.
       d) What mathematical conditions would indicate the robot position is unreachable? Are
              there any other cases that are indeterminate?



    7. Find a smooth path for a robot joint that will turn from θ= 75° to θ = -35° in 10 seconds.
Do this by developing an equation then calculating points every 1.0 seconds along the path for a
total motion time of 10 seconds.
page 406




 ans.
                               3      2
                 θ ( t ) = At + Bt + Ct + D                             θ ( 0 ) = 75      θ ( 10 ) = – 35
                  d-               2                                    d-                 d-
                 ---- θ ( t ) = 3At + 2Bt + C                          ---- θ ( 0 ) = 0   ---- θ ( 10 ) = 0
                 dt                                                    dt                 dt
                 Solving
                                       3               2
                       75 = A ( 0 ) + B ( 0 ) + C ( 0 ) + D
                                               3            2
                       – 35 = A ( 10 ) + B ( 10 ) + C ( 10 ) + D
                                       2
                       0 = 3A ( 0 ) + 2B ( 0 ) + C
                                           2
                       0 = 3A ( 10 ) + 2B ( 10 ) + C
                 For A, B, C, D we get

                                                   3            2
                           θ ( t ) = ( 0.22 )t + ( – 3.3 )t + ( 75 )


                 t (sec)        theta(t)

                 0              75
                 1              71.92
                 2              63.56
                 3              51.24
                 4              36.28
                 5              20
                 6              3.72
                 7              -11.24
                 8              -23.56
                 9              -31.92
                 10             -35




    8. A jointed arm robot has three rotary joints, and is required to move all three axes so that the
first joint is rotated through 50 degrees; the second joint is rotated through 90 degrees, and the
third joint is rotated through 25 degrees. Maximum speed of any of these rotational joints is 10
degrees/sec. Ignore effects of acceleration and deceleration and,
        a) determine the time required to move each joint if slew motion (joint motion is indepen-
                dent of all other joints) is used.
page 407


       b) determine the time required to move the arm to a desired position and the rotational
               velocity of each joint, if joint interpolated motion (all joints start and stop simulta-
               neously) is used.
       c) Solve question 4 under the condition that the three joints move at different rotational
               velocities. The first joint moves at 10 degrees/sec., the second joint moves at 25
               degrees/sec, and the third joint moves at 30°/sec.



    9. Consider the following motion planning problem.
       a) A jointed arm robot has three rotary joints, and is required to move all three axes so that
               the first joint is rotated through 50 degrees; the second joint is rotated through 90
               degrees, and the third joint is rotated through 25 degrees. Maximum speed of any
               of these rotational joints is 10 degrees/sec. Ignore effects of acceleration and decel-
               eration and,
       b) determine the time required to move each joint if slew motion (joint motion is indepen-
               dent of all other joints) is used.
       c) determine the time required to move the arm to a desired position and the rotational
               velocity of each joint, if joint interpolated motion (all joints start and stop simulta-
               neously) is used.



    10. We are designing motion algorithms for a 2 degree of freedom robot. To do this we are
developing sample calculations to explore the basic process.


    a) We want to move the tool in a straight line through space from (3”, 5”) to (8”, 7”). Develop
equations that will give a motion that starts and stops smoothly. The motion should be complete in
1 second.


   ANS.                              3    2
                 P ( t ) = 3 + ( – 2t + 3t ) 5
                           5                 2


    b) Find the velocity of the tool at t=0.5 seconds.


   ANS.           d
                 ---- P ( t ) = 7.5
                    -
                 dt              3
page 408




    c) Plot out the tool position, joint positions and velocities as functions of time.




    11. Why do robots not follow exact mathematical paths?


    12. We are designing motion algorithms for a 2 degree of freedom robot. To do this we are
developing sample calculations to explore the basic process. We want to move the tool in a
straight line through space from (8”, 7”) to (3”, 5”). Develop equations that will give a motion that
starts and stops smoothly. The motion should be complete in 2 seconds. Show all derivations.


    13.



13.4 LABORATORY - AXIS AND MOTION CONTROL


Purpose:
       To .

Overview:
       .

Pre-Lab:
       To be determined.

In-Lab:
          1. To be determined.

Submit (individually):
      1. To be determined.
page 409



14. CNC MACHINES

    • Computer Numerical Control machines use a computer to guide a process that might other-
wise be done manually.




14.1 MACHINE AXES



14.2 NUMERICAL CONTROL (NC)

    • The use of numerical data to drive a machine for processes such as,
       - milling
       - turning
       - drilling
       - grinding
       - shot peening
       - tube bending
       - flame cutting
       - automated knitting machines
       - automatic riveting
       - etc.

    • Basic components of NC systems,
       - program
       - controller unit
       - machine tool

    • Most suited to,
       - parts are processed frequently in small lot sizes
       - complex part geometry
       - close tolerances on workpart
       - many operations on part in processing
       - large amounts of metal to be removed
       - engineering design will possibly change
       - parts that are too expensive for mistakes
page 410


    • The methods for developing NC programs include,
       - manual part programming
       - computer-assisted part programming
       - computer generated programs

    • The manual and computer aided methods use various NC programming languages,
       - APT (Automatically Programmed Tools)
       - AUTOSPOT (Automatic System for Positioning Tools)
       - SPLIT (Sundstrand Processing Language Internally Translated)
       - COMPACT II
       - ADAPT (ADaptation of APT)
       - EXAPT (Extended Subset of APT)
       - UNIAPT

    • These languages are used by a parts programmer to define the motion of the cutting tool.


    • The languages may be preprocessed, and then used for a number of various control types,
such as,
       - punched paper tape
       - Computer Numerical Control (CNC)
       - Direct Numerical Control (DNC)

    • The automatic methods work with geometry created in a CAD program.




14.2.1 NC Tapes

    • NC Programs are preprocessed on computers, and punched onto paper or mylar tapes.


    • Simple NC machines can use a tape reader to direct the machine.


    • Problems,
       - required storage, transportation, and manual loading of NC tapes
       - has to reread the tape for each new part
       - tapes tend to wear, and become dirty, thus causing misreadings
page 411


      - the readers are slow, and can cause ‘dwell marks’ on complex pieces
      - the mechanical parts in the readers reduced reliability
      - testing had to be done on the NC machine
      - no program editing abilities (increased lead time)

   • The end of tapes was the result of two competing developments
      - DNC used remote computers to replace tape readers, these were displaced in most cases
            by CNC
      - CNC allowed the use of a local computer to overcome problems with tapes, and the
            problems with distant computers. While CNC was used to enhance tapes for a
            while, they eventually allowed the use of other storage media, and currently pro-
            gram transfer media are not required.



14.2.2 Computer Numerical Control (CNC)

   • A computer controller is used to drive an NC machine directly.


   • Characteristics are,
      - controls a single machine
      - located very close to machine tool
      - allows storage/retrieval/entry of NC programs without preprocessing of NC code

   • Advantages of CNC,
      - program is only entered into memory once, so it is more reliable
      - the programs can be tested and altered at the machine
      - increased flexibility and control options on the local computer
      - easy to integrate into FMS systems

   • The Background,
      - the problems with NC tapes were approached using DNC networks
      - the communication problems with DNC systems became obvious, and local computers
              were added to act as tape readers which would read tapes once, and play them back
              to the NC machine indefinitely
      - CNC controllers began using other storage media like magnetic tapes, and floppy disks
      - CNC now offers features like,
              - local programming,
              - communication over interfaces,
              - hard disk storage,
              - program simulation
page 412


               - etc.

    • ASIDE: Direct Numerical Control is similar to CNC, except a remote computer is used to
control a number of machines. This gives the advantage of more computer power. This approach
is no longer popular, as the dropping cost of computers offsets any advantages.


    • Some companies use proprietary NC Languages, such as the example of DYNA Mill NC
code shown later


    • These machines are often programmed by downloading NC code from a computer, or man-
ually programming the controller computer.


    • Future trends involve,
       - adaptive feed rates to increase speeds as the metal removal rate varies
       - tool wear detection
       -




14.2.3 Direct/Distributed Numerical Control (DNC)

    • Uses a few methods,
       - the oldest methods used modems, and a mainframe which emulated a tape reader, to con-
               trol the NC machine (no storage)
       - a more recent advance used a local computer which acts as a storage buffer. Programs are
               downloaded from the main DNC computer, and then the local controller feeds
               instructions to the hardwired NC machine, as if they have been read from tape.
       - the newer methods use a central computer which communicates with local CNC comput-
               ers (also called Direct Numerical Control)

    • DNC controllers came before CNC machines, but as computer technology improved it
became practical to place a computer beside the NC machine, and DNC changed in form.


    • Characteristics of modern DNC systems are,
       - uses a server (with large storage capacity) to store a large number of part programs
page 413


   - the server will download part programs on demand to local machines
   - may have abilities to,
           - display and edit part programs
           - transmit operator instructions and other data needed at the machines
           - collect and process machine status information for management purposes

• Advantages are,
   - eliminates the need for NC tapes (the advantages are obvious)
   - design changes are immediate
   - NC programs may be edited quickly
   - can be used to support an FMS system
   - increase efficiency of individual machine tools
   - more shop up-time than with stand alone machines
   - simplifies implementation of group technology, computer aided process planning, and
           other CIM concepts
   - reduces peripheral costs with NC tapes

• A Brief History,
   • Mid 60’s
          - concept proved by Cincinnati Milacron and G.E.
          - telephone links used to send instructions from large computers to hard wired NC
                  machines. Basically replaced a tape reader.
   • 1970
          - several commercial DNC systems announced.
   • Mid 70’s
          - Aerospace companies used DNC because of the large number of distributed
                  machines in their facilities.

• Initial resistance to DNC technology was (previously) based on,
   - high cost of computer hardware
   - the number of machines which could be controlled by one computer was limited
   - computer software was limited for maintenance, scheduling, control, and data collection
   - a backup computer was usually required
   - was hard to justify on the basis of downloading parts programs

• when downloading programs there are two popular opinions,
   - a program should only be downloaded in part, this accommodates easy engineering
           changes in a real-time environment.
   - many programs should be downloaded to the local controller to provide protection
           against system failure, and eliminating the cost of real-time response in the DNC
           central computer.
page 414




14.3 EXAMPLES OF EQUIPMENT

   • The number of NC machines available commercially will be well into the thousands.




14.3.1 EMCO PC Turn 50

   • This is a small desktop lathe capable of turning parts in metal.


   • The basic physical specifications are,




            Cutting Volume                    radial travel 48mm rad.
                                              axial travel 228mm
            Max. Holding Vol-                 radial 30-65mm
      ume                                     axial 300mm
                                              12mm by 12mm
            Max. Tool Size                    max 80mm dia.
            Chuck                             130-3000 rpm
            Spindle                           0.001mm
            Resolution                        0-750 mm/min
            Feed                              <=600N below 500mm/min
            Feed Force                        100/110/230VAC, 0-6KVA
            Power                             840 by 695 by 345 mm




   • The basic sequence of operations for this machine are,
      1. Unpack components.
      2. Connect devices to power, air supply, and attach interface cables.
page 415


      3. Install RS-485 card in PC.
      4. Install software.
      5. Test basic system (Done initial setup here).
      6. Start and initialize lathe and PC with software.
      7. Setup tools for new job. Find zero positions/offsets, and enter values for turret.
      8. Load NC code.
      9. Simulate program.
      10. Load stock and close automatic chuck.
      11. Close door.
      12. Run program on Lathe.
      13. Open door and open chuck.
      14. If cutting a similar part go to step 8, if doing a new setup go to step 7.




14.3.2 Light Machines Corp. proLIGHT Mill

   • This is a small desktop lathe capable of turning parts in metal.


   • The basic physical specifications are,
page 416




      Cutting Volume

      Max. Holding Volume

      Max. Tool Size
      Spindle                           200-5000 rpm
      Resolution
      Feed                              50ipm x,y and 40ipm z
      Feed Force
      Power
      Dimensions
      Weight
      Controller                        IBM compatible computer
      Control Interface                 IBM compatible computer
      Programming                       G-Codes and Dos software
      Spindle                           1 H.P.




• The basic sequence of operations for this machine are,
   1. Unpack components.
   2. Connect devices to power, air supply, and attach interface cables.
   3. Install software.
   4. Test basic system (Done initial setup here).
   5. Start and initialize mill and PC with software.
   6. Setup tool for new job. Find zero position/offset.
   7. Load NC code.
   8. Simulate program.
   9. Run program on Mill.
   10. If cutting a similar part go to step 7, if doing a new setup go to step 6.
page 417


14.4 PRACTICE PROBLEMS

    1.




14.5 TUTORIAL - EMCO MAIER PCTURN 50 LATHE (OLD)

• The lathe is shipped with software that is meant to emulate shop floor interfaces. We don’t have
   the standard keyboard, so we need to use special key stroke sequences on the PC keyboard.

• Procedure:
       1. Connect the air supply to the lathe and make sure that the regulator on the lathe is
              between 25 and 75 psi - 50 psi is good. Ensure that the lath is connected to the PC
              with the DNC cable. The computer card must also have a terminator on the second
              connector - this is an empty connector. Turn on the lathe, and the PC.

         2. Once the PC is booted, run the emco control software. The screen may come up with
                warnings. If these warnings don’t disappear when you hit ‘ESC’ call the instructor.

         3. First we must zero the lathe. To do this first hit ‘F1’ and then ‘F7?-ZRN’. A small label
                  ‘ZRN’ should appear near the bottom of the screen. Press ‘4’ on the number pad of
                  the keyboard - the lathe should move in the ‘x’ direction. Next, press ‘8’ on the
                  keyboard, the lathe should move in the ‘z’ direction. After all motion has stopped
                  the lathe is calibrated, and it will be put in jog mode.

         4. You can move the lathe with the keys on the number pad as well as perform other func-
                tion.
                4 - move carriage left
                6 - move carriage right
                2 - cross slide out
                8 - move cross slide in
                <SFT>7 - turn spindle on
                <SFT>6 - turn spindle off
                <SFT>2 - turn on/off chip blower
                <SFT>1 - turn tool turret
                +/- - increase/decrease feed

         5. You can now put the mill in MDI mode by pressing ‘F1’ then ‘F6?-MDI’. Push the
                door open and hold it for a second, it will then stay open. Clear the error on the
                screen with ‘ESC’ and press <SFT>~ the chuck should open and close. Mount a
                work piece and then close the door.
page 418




       6. Put the computer in program mode ----------------



14.6 TUTORIAL - PC TURN 50 LATHE DOCUMENTATION: (By Jonathan
DeBoer)

• SETUP:

       The lathe is controlled by a computer through an RS485 port. RS485 is a serial data bus
               that can be chained from one device to another and must be terminated.
       The controlling computer must be running Windows 3.1 or 3.11 and must have the RS485
               card installed. Windows 95 will not get along with the interface card, and the soft-
               ware refuses to use an RS232 port with an RS485 adapter. The machine should
               have as few peripherals as possible; if one device happens to use any of the IRQs/
               DMAs/IO ports as the RS485 card, there will be problems. So remove sound
               cards, extra interface cards, etc. The RS485 card has two DB9F connectors on the
               back, plug the cable from the lathe in one and a terminator in the other.
       Install WinNC (the control software) under Windows 3.1. There are two disks; the
               installer and a machine data disk.
       The lathe needs to be plugged in to the computer, to a power outlet (of course), and to an
               air supply at 50-75 psi (less than 50 and there isn't enough pressure to open the
               door). A pressure gauge is on the left side of the machine, all plugs/etc are on the
               right.

• POWER ON/OFF:
     To Turn On:
            Turn on the computer and machine. To turn on the machine, turn the key on the
              right side. On the computer, launch Windows if neccisary. Once windows is
              running, launch WinNC. Make sure NumLock is on before launching
              WinNC. WinNC will then establish communication with the machine.
     To Turn Off:
            To just shut off the lathe but not the computer, just turn the key on the lathe. An
              error will come up in WinNC indicating it lost RS485 communication. Not to
              worry; when the lathe is turned back on later, hit ESC and the error will go away.
              To turn off both, exit WinNC by hitting Alt-F4 and then exit Windows. Then
              Simply switch off both the machine and the computer.

• OPERATION:
      Some notes:
            The EMCO software is distinguished by having the most counter-intuitive, unnatu-
              ral, information-withholding, and ornery interface known to man. Most techni-
              cal references available are in German.
            The software periodically pops up error messages for minor and major errors.
page 419


           Errors can be dismissed by pressing ESC. If they don't go away, there is a prob-
           lem that needs to be looked into.
         At the bottom of the screen is a menu of options you can select with the F3-F7
           keys. This is called the "softkey list" by the Emco documentation, and will
           henceforth be referred to as the "menu".

A note on coordinates:
       The X axis is into/out of the material. X = 0 should be the center of rotation. As
         long as X is a positive value, moving along X in the positive is moving the tool
         out of the material and away from center. Moving along X in the negative is
         moving into the material and toward center.
       The Z axis is along the length of the part (along the axis of rotation). Moving
         along Z in the negative direction is moving toward the spindle head (to the left,
         facing the machine). Moving along Z in the positive direction is moving away
         from the spindle head (to the right, facing the machine).

Modes:
         The software is ruled by modes. What mode the software is in determines what it
           can do and what it displays. If something doesn't work or doesn't look right,
           check what mode the software is in. Remember operational modes are set
           independently of display modes. The operational mode can be EDIT but pro-
           grams cannot be edited until the view mode is set to PRGRM, and vice versa.
         Hit F1 to get a menu of operational modes:
                 ZRN mode is used for zeroing the tool position. This should be done the
                   first thing after the machine is turned on.
                 JOG is used for manual control of the lathe.
                 MDI is used for changing tools, opening chuck, etc. (actually, you can do
                   all this with JOG)
                 EDIT is used for editing, loading, and exporting programs.
                 AUTO is used for running programs.
         Hit F12 to get display modes:
                 Note: when you switch view modes, the menu changes.
                 The default is ALARM mode, which displays operator messages and
                   alarms. Hit F3 to display alarms, F5 to display operator messages.
                 POS mode displays positions. Hit F3 to display the current absolute posi-
                   tion, F4 for the current relative position, and F5 for a variety of details.
                 PRGRM mode displays the program. Hit F3 to display the program code,
                   hit F4 for a list of all the programs available. If the operational mode is
                   EDIT, you can also edit the code when you hit F3
                 OFFSET is used for displaying and changing offset values. Hit F3 for wear
                   adjustment and F4 for geometry. These are both parameters for tools.
                   Data for up to 16 tools can be stored at once. Hit F5 for work shift. This
                   is how the working reference point is set. See below.
                 PARAM is used for changing setup parameters and viewing system infor-
                   mation. Hit F3 for setup see below for details. Hit F4 for diagnostics on
                   the RJ485 port and the software version.
page 420


               GRAPH is used to simulate output with a graph
               The fact that all these modes must share the menu can cause confusion.
                 Remember that if you should be seeing a menu and you aren't, the menu
                 you are looking for may be "behind" the one you are seeing. For exam-
                 ple, when you switch to a display mode, you should see the menu for that
                 display mode. If you hit F1, that menu is "covered up" by the menu to
                 select an operational mode. Once you select something from that menu,
                 you will see the view mode's menu again.

Keyboard control:
      Note on keyboard control: Many of the keys outlined in the manual are for Ger-
        man keyboards only and are mapped differently on US keyboards. Use this as
        reference, NOT the manual:
              Alt-F4 - Exit
              ESC - Dismiss error message
              F1 - mode menu
              F3 thru F7 - select item from current menu
              F11 - scroll through menus when they are too wide to fit on the screen (like
                the MORE key on a Ti-85 calculator)
              F12 - function key menu
              Ctrl- - open/close chuck (must not be in EDIT mode, door must be open)
              Ctrl-] - open/close door (spindle must be off)
              Ctrl-1 - change tool (must not be in EDIT or ZRN mode, door must be
                closed)
              Ctrl-2 - Turn on/off blower
              Ctrl-6 - Turn off spindle (JOG mode)
              Ctrl-7 - Turn on spindle (JOG mode, door must be shut)
              arrows - move cursor in the editor
      on the numeric keypad:
              4 - move -Z in JOG mode, or zero Z axis in ZRF mode
              6 - move +Z in JOG mode, or zero Z axis in ZRF mode
              2 - move -X in JOG mode, or zero X axis in ZRF mode
              8 - move +X in JOG mode, or zero X axis in ZRF mode
              5 - zero both axis in ZRF mode

Parameter setup:
      There are several screens of setup parameters, you can scroll through the pages
         with the up and down arrow keys and set these parameters:
      On the first page:
              INCH =: Sets the unit system. Hit 0 for metric (mm), hit 1 for English
                 (inches)
              I/O =: Sets the device for I/O (exporting programs, etc). Hit 1 or 2 for
                 COM port 1 or 2. Hit A for the a: drive (root directory). Hit B for B
                 drive (root directory). Hit C for the hard drive, the c:WinNCfan0.tprg
                 directory, or whatever is specified as the path.
      On the third page:
page 421


                   Baudrate, data bits, stop bits, etc. can be set up for the COM ports
            On the sixth page:
                   GEAR =: Sets the gear for the spindle. See the manual.
                   PATH =: Sets the working path, the default is c:WinNCfan0.tprg. It
                      would be wise not to change this.

• REFERENCE POINTS:

     Setting the working reference point (that is, setting 0,0):
             The working reference point is the point that your programs will consider to be 0,0
               and should be placed at the center of the point where the part enters the jaws of
               the chuck. The working reference point is defined in terms of the machine refer-
               ence point. The machine reference point is the center of the face of the spindle
               head. This is the center of the point where the chuck is fastened to the spindle
               head, NOT the face of the chuck.
             The X zero reference is already at the center of rotation. Don't change it.
             To set the Z zero reference, do this:
                     Hit F12 and select POS view mode.
                     Hit F3 in the POS view mode to select absolute view.
                     Hit F1 and select JOG mode
             Now, move the tool holder so that it's left edge is at the point which should be 0 in
               the Z direction. If you want zero to be the first point of the material that is out of
               the jaws of the chuck, VERY CAREFULLY move the tool holder (NOT the
               tool)so that it is just touching the jaws of the chuck. The manual suggests using
               a piece of paper. Place a sheet of paper between the tool holder and the jaws of
               the chuck. When the sheet of paper is pinched between the two and can't move,
               stop moving the tool holder.
             Look at the value for Z on the screen, it would be wise to write it down on a sheet
               of scrap paper.
             Hit F12 and select OFFSET mode.
             Hit F5 for work shift.
             Type the negative of the value for Z you wrote down as a Z code. That is, type "Z"
               followed by "-" followed by the value you wrote down.
             Your zero reference has been set. however, you still need to calibrate the tools.

     Tool offset setup:
            Tools must be matched with tool properties in programs. You can have as many as
               16 sets of tool properties, and the PC Turn 50 has three tool holders. Thus, a
               command in a program to change tools should be of the form "T0316" where T
               is the command to change tools, the first two numbers are the tool to switch to,
               and the second two numbers are the tool offset description to use.
            To get the Z offset:
                     Hit F1 and select JOG mode.
                     Having gotten the Z zero reference, rotate the tool into position and then
                       move the tool to the zero position just as the tool holder was moved to
                       the zero position when setting the zero reference.
page 422


                      Hit F12 and select OFFSET mode.
                      Hit F4 for Geometry settings.
                      Properties for up to 16 tools can be stored at once, and are listed on this
                        screen. Use the arrow keys to move the cursor to the tool description
                        number 1-16 that the X offset is to be stored in.
                      Hit Z and then hit enter. The Z offset will be saved in that tool description
                        number.
              To get the X offset:
                      Hit F1 and select JOG mode.
                      Measure the radius of any round part and place it in the chuck.
                      CAREFULLY move the tool so the tip is just touching the surface of the
                        material.
                      Hit F12 and select POS mode.
                      Hit F3 for absolute position display. Observe the value for X. Subtract the
                        value of the radius of the sample part and write this value down.
                      Hit F12 and select OFFSET mode.
                      Hit F4 for Geometry settings.
                      Use the arrow keys to move the cursor to the tool description number 1-16
                        that the X offset is to be stored in.
                      Type "X" followed by the value you wrote down, then hit Enter. The X off-
                        set will be saved in that tool description.

• PROGRAMMING:
      Multiple programs (up to 9499) can be stored on the hard drive of the computer itself and
             be used by WinNC. They are treated as subprograms, and addressed with O codes.
             So a program name is O0001 or O4365, etc.
      Creating/opening/exporting programs:
             Hit F1 and select EDIT mode from the menu
             Hit F12 and select PRGRM mode
             Type Oxxxx where xxxx is a number between 1 and 9499 and is the number of the
               program. Then:
             To create a program, hit Enter. If the number specified already exists, nothing will
               happen.
             To open an existing program, hit down arrow. If the number specified does not
               exist, nothing will happen.
             To delete a program, hit Delete. If the number specified does not exist, nothing
               will happen.
             To export a program, hit F9. If the number specified does not exist, nothing will
               happen. The program will be exported to the device specified by the I/O param-
               eter under the settings menu (see above). If the export device is a disk, the file
               name will be oprgxxxx where xxxx is the program number
      Running a program:
             Hit F1 and select AUTO mode.
             Hit F12 and select PRGRM mode.
             Open the program: type Oxxxx where xxxx is the program number and hit down
               arrow.
page 423


              Hit 0 on the numeric keypad (this is RESET)
              Hit Enter on the numeric keypad. (this is RUN)
       Loading a program:
              The interface for this is unusable and completely undocumented. Do this instead:
              Exit WinNC by hitting Alt-F4.
              Open the Windows File Manager, and copy the G-code file from your disk to the
                c:WinNCfan0.tprg directory.
              rename the file o1, o2, o4567, or whatever you want the new program number to
                be.
              Now when you get back into WinNC, the file will be there as if you had created a
                program by that number right in WinNC.
       Notes on the editor:
              The editor is a basic text editor with some restrictions to make sure you enter valid
                codes.
              Type a "word" (that is, a code: N00, G01, X5.395, etc.) and hit enter. Hit enter
                twice to start a new line. You can use the cursor to move about and insert text.
                It's a bit hard to control, but fairly intuitive.
       Notes on G-codes for the PC Turn 50:
              The PC Turn 50 takes a fairly standard set of G codes, which is the only thing cov-
                ered well in the manual. Note that WinNC and the PC Turn 50 use command
                definition set C in the manual. There are several things worth noting.
              O codes are not allowed, as they are used for identifying programs.
              There are only two axis, X and Z, so all the 3d aspect of G codes do not apply.
              Keep in mind most tools are designed to cut only in one direction in the Z axis.
              There are some G codes relatively unique to the PC Turn 50. G20, G21, G24, and
                G33 are new cycles for turning and threading for example.

• STEP BY STEP TUTORIAL:
      assumes you have written a G-code file.
      1. Switch on the lathe with the key.
      2. Switch on the computer, launch Windows File Manager.
      3. Copy the G-code file from your disk to the c:WinNCfan0.tprg directory and rename it
              o---- where ---- is a number that isn't already being used.
      4. Exit the File Manager, launch WinNC.
      6. Close the door if necessary with Ctrl-]
      5. Hit F1 to bring up the operating mode menu, and hit F7 for ZRN mode.
      6. On the numeric keypad, hit 5 to move the tool to the machine's reference point. The
              machine should then go to JOG mode.
      7. Set zero references and tool offsets if they haven't been set already. See above for
              details.
      8. Open the door with Ctrl-], then open the chuck with Ctrl-.
      9. Place a part to turn in the chuck's jaws and close the chuck with Ctrl-. Close the door.
      8. Hit F1 to bring up the operating mode menu, and hit F4 for EDIT mode.
      7. Hit F12 to bring up the view mode menu, and hit F4 for PRGRM mode.
      8. Type what you renamed your file to, ("O0042" for example) and hit the down arrow
              key. Your program should be displayed on screen.
page 424


          9. Hit F1 and hit F3 for AUTO mode.
          10. Hit 0 on the numeric keypad to reset, and then hit Enter on the numeric keypad to run
                  the file.
          11. Once the program is done, hit F1 and hit F5 for MDI mode.
          12. Open the door, then open the chuck and remove the finished part.
          13. Close the door, exit WinNC with Alt-F4, exit Windows, and turn off the computer and
                  lathe.




14.6.1 LABORATORY - CNC MACHINING

Purpose:
       The students will be introduced to the basics of CNC equipment.

Overview:
       A simple tutorial will be used to introduce the students to the CNC equipment in the labo-
             ratory. The students will develop a simple G-code program to cut their initials on
             the mill and a candle stick on the lathe. Both programs can be simulated off-line,
             and then tested in the laboratory. You will also be introduced to automatic part pro-
             gramming software.

Pre-Lab:
       1. Review the course material on CNC machines, and specifics for the PC-turn 50, and
              Pro-light machines.
       2. Use netscape to explore the NC machines in the laboratory.
       3. Develop by hand a program to cut your initials using the Pro-light NC mill. The initials
              will be cut on a 2” square piece of aluminum. Correct speeds and feed should have
              also been determined.
       4. Develop by hand a program to cut a candlestick in brass with a 1” dia on the PC-turn 50
              lathe. Correct speeds and feed should have also been determined.
       5. Simulate both programs before arriving at the laboratory.

In-Lab:
          1. In the lab you will be shown how to set up the NC lathe and mill, fixture parts, and set
                  the origin.
          2. You will then individually enter and manufacture your parts.
          3. Learn how to use MasterCAM, SmartCAM, or ProEngineer to produce NC code. Tuto-
                  rial manuals will be provided in the lab.

Submit:
      1. Part programs for both parts.
      2. Digital photographs of both parts.
      3. A simple part program generated on the software of your choice.
page 425
page 426



15. CNC PROGRAMMING

    • We need to be able to direct the position of the cutting tool. As the tool moves we will cut
metal (or perform other processes).


    • Obviously if we plan to indicate positions we will need to coordinate systems.


    • The coordinates are almost exclusively cartesian and the origin is on the workpiece.


    • For a lathe, the infeed/radial axis is the x-axis, the carriage/length axis is the z-axis. There is
no need for a y-axis because the tool moves in a plane through the rotational center of the work.
Coordinates on the work piece shown below are relative to the work.



         Head                                     Tail Stock

                                                                     WARNING: Be cautious,
                                   z
                                                                the x axis is intuitively the
                                                                radius of the workpiece. But,
                   x        y                                   many systems use the dimen-
                                                                sion as a diameter. Make sure




    • For a tool with a vertical spindle the x-axis is the cross feed, the y-axis is the in-feed, and
the z-axis is parallel to the tool axis (perpendicular to the table). Coordinates on the work piece
shown below relative to the work.
page 427




             z        y



                              x




    • For a tool with a horizontal spindle the x-axis is across the table, the y-axis is down, and the
z-axis is out. Coordinates on the work piece shown below relative to the work.



                                                                             y




                                                              z
                                                                    x




    • Some common programming languages include, (note: standards are indicated with an *)
       ADAPT - (ADaptation of APT) A subset of APT
       *APT - (Automatically Programmed Tool) A geometry based language that is compiled
              into an executable program.
       AUTOSPOT - A 2D language developed by IBM. Later combined with ADAPT.
       COMPACT/COMPACTII - A higher level language designed for geometrical definitions
              of parts, but it doesn’t require compilation.
       EXAPT - A european flavor of APT
       *G-Codes (EIA RS-274 G&M codes)
       MAPT - (Microcomputer APT) - Yet another version of APT
       UNIAPT - APT controller for smaller computer systems
       Other Proprietary languages
page 428


    • These languages have many similarities, but the syntax varies.




15.1 G-CODES

    • This language was originally designed to be read from paper tapes. As a result it is quite
simple.


    • The language directs tool motion with simple commands


    • Note, I show programs with spaces to improve readability, but these are not necessary.


    • A basic list of ‘G’ operation codes is given below. These direct motion of the tool.
          G00 - Rapid move (not cutting)
          G01 - Linear move
          G02 - Clockwise circular motion
          G03 - Counterclockwise circular motion
          G04 - Dwell
          G05 - Pause (for operator intervention)
          G08 - Acceleration
          G09 - Deceleration
          G17 - x-y plane for circular interpolation
          G18 - z-x plane for circular interpolation
          G19 - y-z plane for circular interpolation
          G20 - turning cycle or inch data specification
          G21 - thread cutting cycle or metric data specification
          G24 - face turning cycle
          G25 - wait for input #1 to go low (Prolight Mill)
          G26 - wait for input #1 to go high (Prolight Mill)
          G28 - return to reference point
          G29 - return from reference point
          G31 - Stop on input (INROB1 is high) (Prolight Mill)
          G33-35 - thread cutting functions (Emco Lathe)
          G35 - wait for input #2 to go low (Prolight Mill)
          G36 - wait for input #2 to go high (Prolight Mill)
          G40 - cutter compensation cancel
          G41 - cutter compensation to the left
          G42 - cutter compensation to the right
page 429


  G43 - tool length compensation, positive
  G44 - tool length compensation, negative
  G50 - Preset position
  G70 - set inch based units or finishing cycle
  G71 - set metric units or stock removal
  G72 - indicate finishing cycle (EMCO Lathe)
  G72 - 3D circular interpolation clockwise (Prolight Mill)
  G73 - turning cycle contour (EMCO Lathe)
  G73 - 3D circular interpolation counter clockwise (Prolight Mill)
  G74 - facing cycle contour (Emco Lathe)
  G74.1 - disable 360 deg arcs (Prolight Mill)
  G75 - pattern repeating (Emco Lathe)
  G75.1 - enable 360 degree arcs (Prolight Mill)
  G76 - deep hole drilling, cut cycle in z-axis
  G77 - cut-in cycle in x-axis
  G78 - multiple threading cycle
  G80 - fixed cycle cancel
  G81-89 - fixed cycles specified by machine tool manufacturers
  G81 - drilling cycle (Prolight Mill)
  G82 - straight drilling cycle with dwell (Prolight Mill)
  G83 - drilling cycle (EMCO Lathe)
  G83 - peck drilling cycle (Prolight Mill)
  G84 - taping cycle (EMCO Lathe)
  G85 - reaming cycle (EMCO Lathe)
  G85 - boring cycle (Prolight mill)
  G86 - boring with spindle off and dwell cycle (Prolight Mill)
  G89 - boring cycle with dwell (Prolight Mill)
  G90 - absolute dimension program
  G91 - incremental dimensions
  G92 - Spindle speed limit
  G93 - Coordinate system setting
  G94 - Feed rate in ipm (EMCO Lathe)
  G95 - Feed rate in ipr (EMCO Lathe)
  G96 - Surface cutting speed (EMCO Lathe)
  G97 - Rotational speed rpm (EMCO Lathe)
  G98 - withdraw the tool to the starting point or feed per minute
  G99 - withdraw the tool to a safe plane or feed per revolution
  G101 - Spline interpolation (Prolight Mill)

• M-Codes control machine functions and these include,
  M00 - program stop
  M01 - optional stop using stop button
  M02 - end of program
  M03 - spindle on CW
  M04 - spindle on CCW
page 430


  M05 - spindle off
  M06 - tool change
  M07 - flood with coolant
  M08 - mist with coolant
  M08 - turn on accessory #1 (120VAC outlet) (Prolight Mill)
  M09 - coolant off
  M09 - turn off accessory #1 (120VAC outlet) (Prolight Mill)
  M10 - turn on accessory #2 (120VAC outlet) (Prolight Mill)
  M11 - turn off accessory #2 (120VAC outlet) (Prolight Mill) or tool change
  M17 - subroutine end
  M20 - tailstock back (EMCO Lathe)
  M20 - Chain to next program (Prolight Mill)
  M21 - tailstock forward (EMCO Lathe)
  M22 - Write current position to data file (Prolight Mill)
  M25 - open chuck (EMCO Lathe)
  M25 - set output #1 off (Prolight Mill)
  M26 - close chuck (EMCO Lathe)
  M26 - set output #1 on (Prolight Mill)
  M30 - end of tape (rewind)
  M35 - set output #2 off (Prolight Mill)
  M36 - set output #2 on (Prolight Mill)
  M38 - put stepper motors on low power standby (Prolight Mill)
  M47 - restart a program continuously, or a fixed number of times (Prolight Mill)
  M71 - puff blowing on (EMCO Lathe)
  M72 - puff blowing off (EMCO Lathe)
  M96 - compensate for rounded external curves
  M97 - compensate for sharp external curves
  M98 - subprogram call
  M99 - return from subprogram, jump instruction
  M101 - move x-axis home (Prolight Mill)
  M102 - move y-axis home (Prolight Mill)
  M103 - move z-axis home (Prolight Mill)

• Other codes and keywords include,
  Annn - an orientation, or second x-axis spline control point
  Bnnn - an orientation, or second y-axis spline control point
  Cnnn - an orientation, or second z-axis spline control point, or chamfer
  Fnnn - a feed value (in ipm or m/s, not ipr), or thread pitch
  Innn - x-axis center for circular interpolation, or first x-axis spline control point
  Jnnn - y-axis center for circular interpolation, or first y-axis spline control point
  Knnn - z-axis center for circular interpolation, or first z-axis spline control point
  Lnnn - arc angle, loop counter and program cycle counter
  Nnnn - a sequence/line number
  Onnn - subprogram block number
  Pnnn - subprogram reference number
page 431


   Rnnn - a clearance plane for tool movement, or arc radius, or taper value
   Qnnn - peck depth for pecking cycle
   Snnn - cutting speed (rpm), spindle speed
   Tnnn - a tool number
   Unnn - relative motion in x
   Vnnn - relative motion in y
   Wnnn - relative motion in z
   Xnnn - an x-axis value
   Ynnn - a y-axis value
   Znnn - a z-axis value
   ; - starts a comment (proLight Mill), or end of block (EMCO Lathe)

• The typical sequence of one of these programs is,
   1. Introductory functions such as units, absolute coords. vs. relative coords., etc.
   2. Define coordinates.
   3. Feeds, speeds, etc.
   4. Coolants, doors, etc.
   5. Cutting tool movements and tool changes
   6. Shutdown

• A program is given for the sample part below. Complete the last few lines.
page 432




                7”
    1”                     1”       1”    1”     1”

                                                                               Notes:

         2”                                                      1.5”          1. Drawing not to scale
                                                                               2. NC origin set to bot-
                           3”
                                                                           tom left of both views
                                                                 3”            3. the available tools are,
                                                                               #1 5/8” dia. drill
                                                                               #2 1/2” dia. mill
                     .5”
y
         2”                                                      1.5”

         x                 2 holes 5/8”dia.
                                                           all rounds 1/4” rad.

                                                           .5”
                                                                   1”
                                                                              2”
z


         x
    N10 G70 G90 T01 M06                               ; set to inches & absolute coords and tool #1
    N20 G00 X1.000 Y2.000 Z2.200                      ; move to above first hole
    N30 F12.0 S480 M03                                ; set speeds and feeds
    N40 G81 Z-0.100 R2.200                            ; drill first hole
    N50 G81 Y4.000 Z-0.100 R2.200                     ; drill second hole
    N60 M05 T02 M06 F50 S2400 M03                     ; change to milling cutter and set speeds and
    N70 G00 X3.500 Y-0.600 Z2.200              feeds
    N80 G00 Z1.000                                    ; move toward long slot cut
    N90 G01 Y7.200                                    ; move to right depth
    N100 G00 X4.000                                   ; cut slot length


              Note: The program above will cut the 1” slot too narrow. How can we fix
page 433




    • The following is an example of circular interpolation. This is valid for both milling and
turning. Note that here we move to the start point, the command indicates the direction (clockwise
or counterclockwise). The I, J values indicate the center of rotation, and the X, Y values indicate
the point to stop at. We can also cut circular paths on other planes by resetting the cutting planes
(G17, G18, G19).


                                                                   (2,5)
        N10G01X6Y1; MOVE TO (6, 1)
        N11G03X2Y5I2J1; CUT CIRCULAR PATH




                                                              (2, 1)


                                                                                         (6, 1)


                                                          (0, 0)



    • When cutting, it is useful to change our point of reference. When doing mathematics we
tend to dimension relative to a main origin (absolute). In fact a machine will need to have coordi-
nates specified with reference to a main origin. But when we examine parts we tend to refer to
local origins for features. (Consider how you dimension details on a drawing.) These relative
points refer to as local origins. We can also do moves as distances to the next point.
page 434




                                                                                       (3, 3)
         N0010G90 ; PUT IN ABSOLUTE MODE
         N0011G01X1Y2 ; MOVE TO (1,2)
         N0012G01X2Y2 ; MOVE TO (2,2)                                        (2, 2)
                                                                                                (3, 2)
         N0013G91 ; PUT IN INCREMENTAL
    MODE
         N0014G01X1 ; MOVE TO (3,2)                                                   (1, 2)
                                                           (0, 0)




     • When using the prolight mill we can add program elements to request that an external
device (ie robot) load or unload parts. We will assume that the robot has been connected to the
robotic interface port available. This port has four inputs and two outputs. The example below
assumes that the input #1 indicates a part has been dropped off and the mill can start. Output #1
will be turned on to request that the robot pick up a part and load new stock.



         N20M26 ; SEND OUTPUT TO REQUEST ROBOT LOAD A PART
         N21G26 ; WAIT UNTIL THE INPUT FROM THE ROBOT INDICATES PART HERE
         N22M25 ; TURN OFF REQUEST TO ROBOT
         N23G00.... ; START CUTTING THE PART
         ........
         N89G00..... ; END PART CUTTING




     • In previous examples we calculated the cutter offsets by hand. Modern NC machines keep a
record of the tool geometry. This can then be used to automatically calculate offsets (you don’t
need to put the tool size in the program).


     • The best way to think of tool compensation is when cutting a profile, should we be to the
left or right of the line.
page 435




             G42                                                    G41
             G00 X1.000 Y1.000                                      G00 X1.000 Y1.000
             G01 Y2.000                                             G01 Y2.000
             G01 X2.000                                             G01 X2.000
             G01 Y1.000                                             G01 Y1.000




    • In the previous example we notice how the shape is distorted by how the cutter navigates
the corners. There are additional commands to help with these problems.



       M97 - compensate for corners larger              M96 - compensate for corners
       than step (requires more time)




           G41                                              G41
           G01 X4.000                                       G01 X4.000
           G01 X1 Y1 M97                                    G01 X1 Y1 M96




    • Typical commanded cycles include,
page 436


       - rectangular pocket milling
       - circular pocket milling
       - slot or elongated hole milling
       - peck drilling
       - tapping

    • For practice, develop the part program for the component shown below


           y
       5




                      P4
       4




                L3                        L2
       3




                                                      C1
       2




                                               P1
       1




                                 L1              P3       x
         P2      1     2     3        4    5    6     7




15.2 APT

    • This language allows tools to be programmed using geometrical shapes. This puts less bur-
den on the programmer to do calculations in their heads.
page 437


    • APT programs must be converted into low level programs, such as G-codes.


    • An example of an APT program is given below.


        y
    5




                  P4
    4




             L3                       L2
    3




                                                   C1
    2




                                           P1
    1




                             L1             P3        x
     P2      1     2     3        4    5   6      7
        P0=POINT/0,-1.0,0
        P1=POINT/6.0,1.125,0
        P2=POINT/0,0,0
        P3=POINT/6.0,0,0
        P4=POINT/1.75,4.5,0
        L1=LINE/P2,P3
        C1=CIRCLE/CENTER,P1,RADIUS,1.125
        L2=LINE/P4,LEFT,TANTO,C1
        L3=LINE/P2,P4
        PL1=PLANE/P2,P3,P4
        FROM/P0
        GO/TO,L1,TO,PL1,PAST,L3
        GORGT/L1,TANTO,C1
        GOFWD/C1,PAST,L2
        GOFWDL2,PAST,L3
        GOLFT/L3,PAST,L1
        GOTO/P0




    • Some samples of the geometrical and motion commands follow. These are not complete,
but are a reasonable subset.
page 438


    • GEOMETRY: The simplest geometrical construction in APT is a point
       p=POINT/x,y,z - a cartesian point
       p=POINT/l1,l2 - intersection of two lines
       p=POINT/c - the center of a circle
       p=POINT/YLARGE,INTOF,l,c - the largest y intersection of a line and a circle
       *Note: we can use YSMALL,XLARGE,XSMALL in place of YLARGE

    • GEOMETRY: Lines are one of the next simplest definitions,
       l=LINE/x1,y1,z1,x2,y2,z2 - endpoint cartesian components
       l=LINE/p1,p2 - endpoints
       l=LINE/p,PARLEL,l - a line through a point and parallel to another line
       l=LINE/p,PERPTO,l - a line through a point and perpendicular to a line
       l=LINE/p,LEFT,TANTO,c - a line from a point, to a left tangency point on a circle
       l=LINE/p,RIGHT,TANTO,c - a line from a point, to a right tangency point on a circle
       l=LINE/LEFT,TANTO,c1,LEFT,TANTO,c2 - defined by tangents to two circles
       l=LINE/LEFT,TANTO,c1,RIGHT,TANTO,c2 - defined by tangents to two circles
       l=LINE/RIGHT,TANTO,c1,LEFT,TANTO,c2 - defined by tangents to two circles
       l=LINE/RIGHT,TANTO,c1,RIGHT,TANTO,c2 - defined by tangents to two circles

    • GEOMETRY: Circles are very useful for constructing geometries
       c=CIRCLE/x,y,z,r - a center and radius
       c=CIRCLE/CENTER,p,RADIUS,r - a center point and a radius
       c=CIRCLE/CENTER,p,TANTO,l - a center and a tangency to an outside line
       c=CIRCLE/p1,p2,p3 - defined by three points on the circumference
       c=CIRCLE/YLARGE,l1,YLARGE,l2,RADIUS,r - tangency to two lines and radius
       *Note: we can use YSMALL,XLARGE,XSMALL in place of YLARGE

    • GEOMETRY: More complex geometric constructions are possible
       PLANE/ - defines a plane
       QUADRIC/a,b,c,d,e,f,g,h,i,j - define a polynomial using values
       GCONIC/a,b,c,d,e,f - define a conic by equation coefficients
       LCONIC/p1,p2,... - defines a conic by lofting (splining) points
       RLDSRF/ - a ruled surface made of two splines
       POLCON/ - define a surface using cross sections
       PATERN/ - will repeat a motion in a linear or circular array

    • Once we have constructed points, lines and circles we can then proceed to direct the tool to
follow the path.


    • MOTION: We can use the basic commands to follow the specified geometry
page 439


       FROM/p - specify a start point
       FROM/x,y,z - specify a start point
       GOTO/p - move to a final point
       GOTO/x,y,z - move to a final point
       GOTO/TO,p - move until the tool touches a point
       GOTO/TO,l - move until the tool touches a line
       GOTO/TO,c - move until the tool touches a circle
       GOLFT/l1,TO,l2 - go on the left of l1 until the tool touches l2
       GORGT/l1,TO,l2 - go on the right of l1 until the tool touches l2
       GOBACK/l1,TO,l2 - reverses direction along l1 to l2
       GOBACK/l1,TO,c1 - reverses direction along l1 to c1
       GOUP/l1,TO,l2 - goes up along l1 to l2
       GODOWN/1l,TO,l2 - goes down along l1 to l2
       GODLTA/x,y,z - does a relative move
       Note: TO can be replaced with PAST, ON to change whether the tool goes past the struc-
              ture, or the center stops on the structure.

    • MOTION: The following commands will create complex motion of the tool
       POCKET/ - will cut a pocket
       PSIS/ - will call for the part surface

    • As would be expected, we need to be able to issue commands to control the machine.


    • CONTROL: The following instructions will control the machine outside the expected cut-
ting tool motion.
       CUTTER/n1,n2 - defines diameter n1 and radius n2 of cutter
       MACHIN/n,m - uses a post processor for machine ‘n’, and version ‘m’
       COOL/ANT/n - either MIST, FLOOD or OFF
       TURRET/n - sets tool turret to new position
       TOLER/n - sets a tolerance band for cutting
       FEDRAT/n - sets a feedrate n
       SPINDL/n,CW - specifies n rpm and direction of spindle

    • We can also include some program elements that are only used for programming


    • PROGRAM: The following statements are programming support instructions
       REMARK - starts a comment line that is not interpreted
       $$ - also allows comments, but after other statements
       NOPOST - turns off the post processor that would generate cutter paths
       CLPRNT - prints a sequential history of the cutter center location
page 440


     SQRTF(n) - calculates the floating point square root
     FINI - stop program
     PARTNO/n - allows the user to specify the part name
     LOOPST and LOOPND - loop instructions
     RESERV/n,m - defines an array of size ‘n’ by ‘m’
     JUMPTO/n - jump to line number

  • Note: variables can also be defined and basic mathematical operations can be performed.


  • Note: macro functions are also available.




15.3 PROPRIETARY NC CODES
page 441


  • NC code Example (for the Dyna Milling Machine)
    000 START INS 01                              Start Program in inches
    001 TD = 0.125
                                                  Set Tool Diameter
    002 FRXY = 10
    003 FRZ = 4                                   Set Feed Rates
    004 SETUP > zcxyu                             Set Absolute Zero Position
    005 GOY -.625
    006 GOZ -.125                                 Move to Start Position
    007 GRa -180           A
    008 ZERO AT
    009 X .634
    010 Y .5                B
                                                              2.00”
    011 GOr .125
    012 a 90
    013 GRa -30                                           B
    014 > REF COODS                                                       30°
                                          Y
    015 ZERO AT                                                                          0.50”
    016 X 1.50                                    Z                             C
    017 Y 0                 C                         X
    018 GOr .125                                                                     D
    019 a 60                                                                             0.50”
                                 A
    020 GRa -60
                                                                                     E
    021 > REF COODS
                                                                      F
    022 ZERO AT
    023 X 1.5
    024 Y -0.3                                                              0.20”R
                           D
    025 GOr .125
    026 a 0
    027 GRa -90             E
    028 GRX -1.3            F
    029 END
                                              End Program




15.4 GRAPHICAL PART PROGRAMMING

  • Basically,
page 442


       1. Part geometry is entered in 2D or 3D.
       2. Tool geometry and machine tool type are entered.
       3. Speeds and feeds are entered or calculated based on tool and work material.
       4. Inside/outside of geometry, and initial stock sizes are selected.
       5. Cutter paths are generated.
       6. Cutter paths are converted to a machine specific language (eg, G-codes).

    • These programs are usually built into better CAD systems or are available as stand alone
software


    • Some machine tools have these programmers built into the controller.




15.5 NC CUTTER PATHS

    • When we have simple features, paths are easy to generate. These features include,
       - steps
       - pockets
       - holes
       - etc.

    • Typically paths for these will repeat as shown below,
page 443




    • For complex surfaces we want to contour appropriately. These surfaces will almost always
be represented with spline patches.




    • Recall that a spline patch can be represented parametrically
page 444




                             (u=0,v=1)                             (u=1,v=1)

                                                                                          xp
                                                                             p ( u, v ) = y p
                                                                                          zp



   (u=0,v=0)                             (u=1,v=0)



    • A simple algorithm to cut the surface is shown below.


      dirn_flag = 1; a direction flag
      n=10 ; number of passes to cut the surface
      step=1.0/n ; step sizes for u and v directions
      start=step/2 ; the start offset in the u and v directions
      [xp,yp,zp] = p(start,start) ; calculate the start position
      print(“G00 X”,xp,” Y”,yp,” Z”,zp+0.2) ; move the tool to above the start position
      for i=0 to (n-1) ; will increment in the u direction
            for j=0 to (n-1) ; will increment in the v direction
            ; calculate next point
                      if dirn_flag=-1 then [xp,yp,zp]=p(start+i*step,start+j*step)
                      if dirn_flag=1 then [xp,yp,zp]=p(start+i*step,start+(n-j)*step)
                      print(“G01 X”,xp,” Y”,yp,” Z”,zp) ; instruction to cut to next point
            next j ; make next step in v direction until done
            dirn_flag = -dirn_flag ; reverse direction to cut in opposite direction
      next i ; move to next cut line in the u direction
      print(“G00 Z”,zp+0.2) ; move the tool to above the end position




15.6 NC CONTROLLERS

    • NC control programs are essentially quite simple. The source code for a basic controller is
given below.
page 445


    ********** Add in C-code for AMP project




15.7 PRACTICE PROBLEMS

    1. Examine the part below. It is set up so that the origin is at the bottom left. The cutting tool
has a diameter of 1/2”, and the material is 1/8” thick.


                      T                            R2.000”




                                             2.500”


                                             2.000”


             5.500”            2.000”


    a) Write the equations needed to find the tangency point on the top left of the piece.


 ans.                     2              2         2
               ( x T – 5.5 ) + ( y T – 4.5 ) = 2

                           2    2        2             2      2 2
               L AT =     xT + yT =     2 + ( 5.5 + 4.5 )



    b) Develop an NC program to mill the part. The program should be complete and include all
instructions required. If necessary, assume a location for the tangency point.
page 446




   ans.                   N10 G70 G90 T01 M06
                          N20 F20 S2000 M03
                          N30 G00 X-0.0 Y-0.25
                          N40 G01 Z-0.25
                          N50 G01 X5.75
                          N60 G01 Y1.75
                          N70 G01 X7.75
                          N80 G01 Y4.5




    2. Examine the part below. It is set up so that the origin is at the bottom left corner. The cut-
ting tool has a diameter of 1/2”, and the material is 1/8” thick. Develop an NC program to mill the
part. The program should be complete and include all instructions required.


                      T                       R2.000”




                                          2.500”


                                          2.000”


             5.500”           2.000”


    3.




15.8 LABORATORY - CNC INTEGRATION

Purpose:
page 447


          Integration of CNC equipment.

Overview:
       Students will develop programs to load and unload the NC machines with robots, and then
              produce parts.

Pre-Lab:
       1. Use your NC programming software to generate an NC program to cut the top 1/2” of a
               3” radius ball on the mill. Test the program on-line.
       2. Use the NC generation software to cut a 1/4” deep, 2”long oval into the surface of a 1”
               brass bar. Test the program on-line.
       3. Simulate both programs before arriving at the laboratory.
       4. Develop a robot program to load/unload the NC mill with the RV-M1. Test the program
               on-line
       5. Develop a program for the RT-3000 to load/unload the lathe. Test the program on-line.

In-Lab:
          1. In the lab test the programs on the different devices in groups of 3
          2. One group of (6?) should connect the RV-M1 to the Mill, and the other group should
                  connect the RT-3000 to the lathe.
          3. The groups that did the connection should split into smaller groups and modify the pro-
                  grams on the robots and NC machines.

Submit:
      1. Your individual NC and robot programs.
      2. The final group NC and robot programs.
page 448



16. DATA AQUISITION


16.1 INTRODUCTION

    An analog value is continuous, not discrete, as shown in figure 17.1. In the previous chapters,
techniques were discussed for designing logical control systems that had inputs and outputs that
could only be on or off. These systems are less common than the logical control systems, but they
are very important. In this chapter we will examine analog inputs and outputs so that we may
design continuous control systems in a later chapter.


             Voltage

                                                                                logical
                                                                                continuous

                                                                                          t
                          Figure 17.1 - Logical and Continuous Values

    Typical analog inputs and outputs for PLCs are listed below. Actuators and sensors that can
be used with analog inputs and outputs will be discussed in later chapters.
       Inputs:
              • oven temperature
              • fluid pressure
              • fluid flow rate
       Outputs:
              • fluid valve position
              • motor position
              • motor velocity

    This chapter will focus on the general principles behind digital-to-analog (D/A) and analog-
to-digital (A/D) conversion. The chapter will show how to output and input analog values with a
PLC.
page 449




16.2 ANALOG INPUTS

    To input an analog voltage (into a PLC or any other computer) the continuous voltage value
must be ’sampled’ and then converted to a numerical value by an A/D converter. Figure 17.2
shows a continuous voltage changing over time. There are three samples shown on the figure. The
process of sampling the data is not instantaneous, so each sample has a start and stop time. The
time required to acquire the sample is called the ’sampling time’. A/D converters can only acquire
a limited number of samples per second. The time between samples is called the sampling period
’T’, and the inverse of the sampling period is the sampling frequency (also called sampling rate).
The sampling time is often much smaller than the sampling period. The sampling frequency is
specified when buying hardware, but for a PLC a maximum sampling rate might be 20Hz.


                            Voltage is sampled during these time periods


           voltage




                                                                                         time

                        T = (Sampling Frequency)-1                    Sampling time

                            Figure 17.2 - Sampling an Analog Voltage

    A more realistic drawing of sampled data is shown in Figure 17.3. This data is noisier, and
even between the start and end of the data sample there is a significant change in the voltage
value. The data value sampled will be somewhere between the voltage at the start and end of the
sample. The maximum (Vmax) and minimum (Vmin) voltages are a function of the control hard-
page 450


ware. These are often specified when purchasing hardware, but reasonable ranges are;
           0V to 5V
           0V to 10V
           -5V to 5V
           -10V to 10V

The number of bits of the A/D converter is the number of bits in the result word. If the A/D con-
verter is ’8 bit’ then the result can read up to 256 different voltage levels. Most A/D converters
have 12 bits, 16 bit converters are used for precision measurements.



    V(t)
                                                                     V max



V ( t2 )



V ( t1 )


                                                                     V min

                                                                             t
                                              τ
                                            t1 t2
              where,
                  V ( t ) = the actual voltage over ti e
                                                     m
                  τ = sample interval for A/D converter
                  t = time
                  t 1, t 2 = time at start,end of sample
                  V ( t 1 ), V ( t 2 ) = voltage at start, end of sample
                  V min, V max = input voltage range of A/D co vre
                                                              n etr
                  N = number of bits in the A/D converter

                           Figure 17.3 - Parameters for an A/D Conversion

     The parameters defined in Figure 17.3 can be used to calculate values for A/D converters.
page 451


These equations are summarized in Figure 17.4. Equation 17.1 relates the number of bits of an A/
D converter to the resolution. Equation 17.2 gives the error that can be expected with an A/D con-
verter given the range between the minimum and maximum voltages, and the resolution (this is
commonly called the quantization error). Equation 17.3 relates the voltage range and resolution to
the voltage input to estimate the integer that the A/D converter will record. Finally, equation 17.4
allows a conversion between the integer value from the A/D converter, and a voltage in the com-
puter.



                     N                                        (17.1)
           R = 2

                       V max – V min
           V ERROR =  ----------------------------
                                                              (17.2)
                                                  -
                                 2R

                         V in – V min
           V I = INT  ---------------------------- R
                                                  -           (17.3)
                     V                            
                           max – V min

                    V
            V C =  ----I ( V max – V min ) + V min
                       -                                      (17.4)
                   R

           where,
                R = resolution of A/D co vre
                                        n etr
                   V I = the integer value representing the input voltage
                   V C = the voltage calculated from the integer value
                   V ERROR = the maximum quantization error


                                       Figure 17.4 - A/D Converter Equations

    Consider a simple example, a 10 bit A/D converter can read voltages between -10V and 10V.
This gives a resolution of 1024, where 0 is -10V and 1023 is +10V. Because there are only 1024
steps there is a maximum error of ±9.8mV. If a voltage of 4.564V is input into the PLC, the A/D
converter converts the voltage to an integer value of 746. When we convert this back to a voltage
the result is 4.570V. The resulting quantization error is 4.570V-4.564V=+0.006V. This error can
be reduced by selecting an A/D converter with more bits. Each bit halves the quantization error.
page 452




              Given,
                       N = 10
                       V max = 10V
                       V min = – 10V
                       V in = 4.564V

              Calculate,
                                N
                       R = 2        = 1024

                                   V max – V min
                       V ERROR =  ---------------------------- = 0.0098V
                                                              -
                                             2R

                                     V in – V min
                       V I = INT  ---------------------------- R = 746
                                                              -
                                 V                            
                                       max – V min

                               V
                       V C =  ----I ( V max – Vmin ) + V min = 4.570V
                                   -
                              R

                            Figure 17.5 - Sample Calculation of A/D Values

    If the voltage being sampled is changing too fast we may get false readings, as shown in Fig-
ure 17.6. In the upper graph the waveform completes seven cycles, and 9 samples are taken. The
bottom graph plots out the values read. The sampling frequency was too low, so the signal read
appears to be different that it actually is, this is called aliasing.
page 453




                     Figure 17.6 - Low Sampling Frequencies Cause Aliasing

    The Nyquist criterion specifies that sampling frequencies should be at least twice the fre-
quency of the signal being measured, otherwise aliasing will occur. The example in Figure 17.6
violated this principle, so the signal was aliased. If this happens in real applications the process
will appear to operate erratically. In practice the sample frequency should be 4 or more times
faster than the system frequency.


                 f AD > 2f signal   where,
                                               f AD = sampling frequency
                                             f signal = maximum frequency of the input



    There are other practical details that should be considered when designing applications with
analog inputs;
       • Noise - Since the sampling window for a signal is short, noise will have added effect on
              the signal read. For example, a momentary voltage spike might result in a higher
              than normal reading. Shielded data cables are commonly used to reduce the noise
              levels.
       • Delay - When the sample is requested, a short period of time passes before the final sam-
              ple value is obtained.
       • Multiplexing - Most analog input cards allow multiple inputs. These may share the A/D
              converter using a technique called multiplexing. If there are 4 channels using an A/
page 454


        D converter with a maximum sampling rate of 100Hz, the maximum sampling rate
        per channel is 25Hz.
• Signal Conditioners - Signal conditioners are used to amplify, or filter signals coming
        from transducers, before they are read by the A/D converter.
• Resistance - A/D converters normally have high input impedance (resistance), so they
        affect circuits they are measuring.
• Single Ended Inputs - Voltage inputs to a PLC can use a single common for multiple
        inputs, these types of inputs are called ’single’ ended inputs. These tend to be more
        prone to noise.
• Double Ended Inputs - Each double ended input has its own common. This reduces prob-
        lems with electrical noise, but also tends to reduce the number of inputs by half.
page 455




   ASIDE: This device is an 8 bit A/D converter. The main concept behind this is the succes-
     sive approximation logic. Once the reset is toggled the converter will start by setting
     the most significant bit of the 8 bit number. This will be converted to a voltage ‘Ve’ that
     is a function of the ‘+/-Vref’ values. The value of ‘Ve’ is compared to ‘Vin’ and a sim-
     ple logic check determines which is larger. If the value of ‘Ve’ is larger the bit is turned
     off. The logic then repeats similar steps from the most to least significant bits. Once the
     last bit has been set on/off and checked the conversion will be complete, and a done bit
     can be set to indicate a valid conversion value.

                                     Vin above (+ve) or below (-ve) Ve


   Vin
                                                                                 +
                                                                                 -
     +Vref

                            successive          8
                            approximation                D to A
             clock                                       converter
                            logic                                         Ve

     reset                                                                                 done



     -Vref                                                            8
                                                                                        data out

   Quite often an A/D converter will multiplex between various inputs. As it switches the
     voltage will be sampled by a ‘sample and hold circuit’. This will then be converted to a
     digital value. The sample and hold circuits can be used before the multiplexer to collect
     data values at the same instant in time.


                     Figure 17.7 - A Successive Approximation A/D Converter




16.3 ANALOG OUTPUTS

    Analog outputs are much simpler than analog inputs. To set an analog output an integer is
converted to a voltage. This process is very fast, and does not experience the timing problems
page 456


with analog inputs. But, analog outputs are subject to quantization errors. Figure 17.11 gives a
summary of the important relationships. These relationships are almost identical to those of the A/
D converter.



                     N                                              (17.5)
           R = 2

                       V max – V min
           V ERROR =  ----------------------------
                                                                    (17.6)
                                                  -
                                 2R

                      V desired – V min
           VI = INT  ----------------------------------- R        (17.7)
                     V                                  
                             max – V min

                        V
           V output =  ----I ( V max – V min ) + V min (17.8)
                           -
                       R

           where,
                R = resolution of A/D co vre
                                          n etr
                V ERROR = the maximum quantization error
                V I = the integer value representing the desired voltage
                V output = the voltage output using the integer value

                                    Figure 17.11 - Analog Output Relationships

    Assume we are using an 8 bit D/A converter that outputs values between 0V and 10V. We
have a resolution of 256, where 0 results in an output of 0V and 255 results in 10V. The quantiza-
tion error will be 20mV. If we want to output a voltage of 6.234V, we would specify an output
integer of 160, this would result in an output voltage of 6.250V. The quantization error would be
6.250V-6.234V=0.016V.
page 457




             Given,
                      N = 8
                      V max = 10V
                      V min = 0V
                      V desired = 6.234V

             Calculate,
                               N
                      R = 2        = 256

                                  V max – V min
                      V ERROR =  ---------------------------- = 0.020V
                                                             -
                                            2R

                                    V in – V min
                      V I = INT  ---------------------------- R = 160
                                                             -
                                V                            
                                      max – V min

                              V
                      V C =  ----I ( V max – Vmin ) + V min = 6.250V
                                  -
                             R



    The current output from a D/A converter is normally limited to a small value, typically less
than 20mA. This is enough for instrumentation, but for high current loads, such as motors, a cur-
rent amplifier is needed. This type of interface will be discussed later. If the current limit is
exceeded for 5V output, the voltage will decrease (so don’t exceed the rated voltage). If the cur-
rent limit is exceeded for long periods of time the D/A output may be damaged.
page 458




   ASIDE:
                                                                                                          5KΩ

                                               10KΩ                                          V–                 V ss
                     MSB bit 3                                                                        -

                                                                                             V    +
                                               20KΩ                                                   +                 +
                              bit 2
                                                                                                                 0
       Computer                                                                                                        Vo
                                               40KΩ
                              bit 1
                                                                                                                        -

                                               80KΩ
                  LSB bit 0


   First we write the obvious,
            V    +      = 0 = V–

   Next, sum the currents into the inverting input as a function of the output voltage and the
   input voltages from the computer,
               Vb3              V b2             Vb1              V b0            Vo
           -------------- + -------------- + -------------- + -------------- = -----------
                        -                -                -                -             -
           10KΩ 20KΩ 40KΩ 80KΩ                                                 5KΩ
           ∴V o = 0.5V b3 + 0.25V b2 + 0.125V b1 + 0.0625Vb 0

   Consider an example where the binary output is 1110, with 5V for on,
           ∴V o = 0.5 ( 5V ) + 0.25 ( 5V ) + 0.125 ( 5V ) + 0.625 ( 0V ) = 4.375V

                                     Figure 17.12 - A Digital-To-Analog Converter




16.4 REAL-TIME PROCESSING

    Any computer running a process should use a real-time operating system. The purpose of a
real-time operating system is primarily to ensure that a process runs within a specified time inter-
val, normally a small fraction of a system. This capability is often not a common part of most
page 459


operating systems, but it is relatively easy to add. When it is not a real-time process, it common
for another process to monopolize the processor and cause erratic delays. When this happens the
control program may not respond to a control event for a second or more. This would generally be
a bad thing in a time critical system.


    - need to be able to specify how often a process runs.


    - RTLinux


    - system clock for slower processes.




16.5 DISCRETE IO




16.6 COUNTERS AND TIMERS




16.7 ACCESSING DAQ CARDS FROM LINUX



    Listing 16.1 - DAS08 Driver Header File (das08_io.h)


   #include "../include/global.h"


   #ifndef _DAS08__
   #define _DAS08__
page 460


#define    CARDBASE 0x300

#define ADCHIGH     0          // AD Data Registers
#define ADCLOW      1

/* A/D Status and Control Register */
#define ADCSTATUS2

/* Auxiliary port on analog bus */
#define PORTAUX         2

/* Programmable Gain Register */
#define GAIN       3

/* Counter Load & Read Registers */
#define LOADREAD14
#define LOADREAD25
#define LOADREAD36

#define CCONFIGPORT7// Counter Control Register

/* D/A 0 Control Registers */
#define DAC0LOW    8
#define DAC0HIGH9

/* D/A 1 Control Registers */
#define DAC1LOW    10
#define DAC1HIGH11

/* 82C55 Digital I/O Registers */
#define PORTA      12
#define PORTB      13
#define PORTC      14
#define PORTCL     12345    /* real port is 0x30e bits 0-3 */
#define PORTCH     6789     /* real port is 0x30e bits 4-7 */

/* 82C55 Control Register */
#define DCONFIGPORT15

#define   DIGITALOUT      1
#define   DIGITALIN       2
#define   HIGHONLASTCOUNT 0
#define   ONESHOT    1
#define   RATEGENERATOR2
#define   SQUAREWAVE3
#define   SOFTWARESTROBE4
#define   HARDWARESTROBE5

/* Range Codes */
#define BIP10VOLTS0x08
#define BIP5VOLTS0x00
#define BIP2PT5VOLTS0x02
#define BIP1PT25VOLTS0x04
#define BIPPT625VOLTS0x06
#define UNI10VOLTS0x01
#define UNI5VOLTS0x03
#define UNI2PT5VOLTS0x05
#define UNI1PT25VOLTS0x07




class das08{
         protected:
         public:
                  int                   base;    // card setup information
page 461


                               int        chan0;
                               int        chan1;

                               int        portA;      // port data directions
                               int        portB;
                               int        portCL;
                               int        portCH;

                               int        *data_portA;// hooks to global values
                               int        *data_portB;
                               int        *data_portCL;
                               int        *data_portCH;
                               int        *data_portXI;
                               int        *data_portXO;
                               int        *data_AI0;
                               int        *data_AI1;
                               int        *data_AI2;
                               int        *data_AI3;
                               int        *data_AI4;
                               int        *data_AI5;
                               int        *data_AI6;
                               int        *data_AI7;
                               int        *data_AO0;
                               int        *data_AO1;

                                          das08();
                                          ~das08();

                               int        configure(char*);
                               int        connect();
                               int        scan();
                               int        disconnect();
                               int        DConfigPort(int, int);
                               int        DIn(int, int*);
                               int        DBitIn(int, int, int*);
                               int        DOut(int, int);
                               int        DBitOut(int, int, int);

                               int        C8254Config(int, int);
                               int        CLoad(int, int);
                               int        CIn(int, int*);

                               int        AIn(int, int*);
                               int        AOut(int, int);
         };

#endif




 Listing 16.2 - DAS08 Driver File (das08_io.cpp)




#include      <errno.h>
#include      <signal.h>
#include      <stdio.h>
#include      <sys/types.h>
#include      <sys/socket.h>
#include      <sys/wait.h>
#include      <netinet/in.h>
page 462


   #include   <netdb.h>
   #include   <sys/time.h>
   #include   <fcntl.h>
   #include   <stdlib.h>
   #include   <unistd.h>
   #include   <string.h>
   #include   <unistd.h>
   #include   <sys/io.h>

   #include "das08_io.h"
   #include "../include/process.h"


   int   bits[]={0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};




   das08::das08(){
         base = CARDBASE;// default cardbase
         chan0 = BIP10VOLTS;// default AD ranges
         chan1 = BIP10VOLTS;
         portA = DIGITALIN;
         portB = DIGITALIN;
         portCH = DIGITALIN;
         portCL = DIGITALIN;
   }




   das08::~das08(){
   }


   int das08::configure(char *file_name){
         int       error;
         FILE      *fp_in;
         char      params[200];

         error = NO_ERROR;
         if((fp_in = fopen(file_name, "r")) != NULL){
                   fgets(params, 200, fp_in);
                   while(feof(fp_in) == 0){
                             if((params[0] != ’#’) && (strlen(params) > 3)){
                                      if(params[0] == ’B’){
                                                base = atoi(&(params[1]));
                                      } else if(strncmp("A0", params, 2) == 0){
                                                if(strncmp("BIP10VOLTS", &(params[2]), 10) == 0){
chan0 = BIP10VOLTS;
                                                } else if(strncmp("BIP5VOLTS", &(params[2]), 9) ==
0){ chan0 = BIP5VOLTS;
                                                } else if(strncmp("BIP2PT5VOLTS", &(params[2]), 12)
== 0){ chan0 = BIP2PT5VOLTS;
                                                } else if(strncmp("BIP1PT25VOLTS", &(params[2]),
13) == 0){ chan0 = BIP1PT25VOLTS;
                                                } else if(strncmp("BIPPT625VOLTS", &(params[2]),
13) == 0){ chan0 = BIPPT625VOLTS;
                                                } else if(strncmp("UNI10VOLTS", &(params[2]), 10)
== 0){ chan0 = UNI10VOLTS;
                                                } else if(strncmp("UNI5VOLTS", &(params[2]), 9) ==
0){ chan0 = UNI5VOLTS;
                                                } else if(strncmp("UNI2PT5VOLTS", &(params[2]), 12)
== 0){ chan0 = UNI2PT5VOLTS;
                                                } else if(strncmp("UNI1PT25VOLTS", &(params[2]),
13) == 0){ chan0 = UNI1PT25VOLTS;
page 463


                                                   } else {
                                                              error_log(MINOR, "Unrecognized DAS08
analog A0 output range");
                                                           error = ERROR;
                                                 }
                                        } else if(strncmp("A1", params, 2) == 0){
                                                 if(strncmp("BIP10VOLTS", &(params[2]), 10) == 0){
chan1 = BIP10VOLTS;
                                                   } else if(strncmp("BIP5VOLTS", &(params[2]), 9) ==
0){ chan1 = BIP5VOLTS;
                                                   } else if(strncmp("BIP2PT5VOLTS", &(params[2]), 12)
== 0){ chan1 = BIP2PT5VOLTS;
                                                   } else if(strncmp("BIP1PT25VOLTS", &(params[2]),
13) == 0){ chan1 = BIP1PT25VOLTS;
                                                   } else if(strncmp("BIPPT625VOLTS", &(params[2]),
13) == 0){ chan1 = BIPPT625VOLTS;
                                                   } else if(strncmp("UNI10VOLTS", &(params[2]), 10)
== 0){ chan1 = UNI10VOLTS;
                                                   } else if(strncmp("UNI5VOLTS", &(params[2]), 9) ==
0){ chan1 = UNI5VOLTS;
                                                   } else if(strncmp("UNI2PT5VOLTS", &(params[2]), 12)
== 0){ chan1 = UNI2PT5VOLTS;
                                                   } else if(strncmp("UNI1PT25VOLTS", &(params[2]),
13) == 0){ chan1 = UNI1PT25VOLTS;
                                                   } else {
                                                              error_log(MINOR, "Unrecognized DAS08
analog A1 output range");
                                                           error = ERROR;
                                                 }
                                        } else if(strncmp("PAI", params, 3) == 0){ portA =
DIGITALIN;
                                        } else if(strncmp("PAO", params, 3) == 0){ portA =
DIGITALOUT;
                                        } else if(strncmp("PBI", params, 3) == 0){ portB =
DIGITALIN;
                                        } else if(strncmp("PBO", params, 3) == 0){ portB =
DIGITALOUT;
                                        } else if(strncmp("PCLI", params, 4) == 0){ portCL =
DIGITALIN;
                                        } else if(strncmp("PCLO", params, 4) == 0){ portCL =
DIGITALOUT;
                                        } else if(strncmp("PCHI", params, 4) == 0){ portCH =
DIGITALIN;
                                        } else if(strncmp("PCHO", params, 4) == 0){ portCH =
DIGITALOUT;
                                        } else {
                                                   error_log(MINOR, "DAS08 argument not recognized");
                                                   error = ERROR;
                                        }
                               }
                               fgets(params, 200, fp_in);
                  }
                  fclose(fp_in);
         }

         return error;
   }




   int das08::connect(){
         int       error;

         error = NO_ERROR;
         if(ioperm(base, 16, 1) == 0){
page 464


                    DConfigPort(PORTA, portA);
                    DConfigPort(PORTB, portB);
                    DConfigPort(PORTCL, portCL);
                    DConfigPort(PORTCH, portCH);
         } else {
                    error = ERROR;
                    error_log(MINOR, "Could not connect to DAS08 board - memory is probably in
use");
         }

         return error;
   }




   int das08::scan(){
         int       error;

         error = NO_ERROR;
         // update digital ports
         if(portA == DIGITALIN){DIn(PORTA, data_portA);
         } else {DOut(PORTA, data_portA[0]);}
         if(portB == DIGITALIN){DIn(PORTB, data_portB);
         } else {DOut(PORTB, data_portB[0]);}
         if(portCL == DIGITALIN){DIn(PORTCL, data_portCL);
         } else {DOut(PORTCL, data_portCL[0]);}
         if(portCH == DIGITALIN){DIn(PORTCH, data_portCH);
         } else {DOut(PORTCH, data_portCH[0]);}
         DOut(PORTAUX, data_portXO[0]);
         DIn(PORTAUX, data_portXI);


         // Update analog inputs
         AIn(0, data_AI0);
         AIn(1, data_AI1);
         AIn(2, data_AI2);
         AIn(3, data_AI3);
         AIn(4, data_AI4);
         AIn(5, data_AI5);
         AIn(6, data_AI6);
         AIn(7, data_AI7);
         // Update analog outputs
         AOut(0, data_AO0[0]);
         AOut(1, data_AO1[0]);

         return error;
   }


   int das08::disconnect(){
         int       error;

         error = NO_ERROR;
         if(ioperm(base, 16, 0) != 0){
                  error = ERROR;
                  error_log(MINOR, "Could not release the DAS08 board - memory is probably in
use");
         }

         return error;
   }




   int das08::DConfigPort(int Port, int Direction){
page 465


         //    This command configures a port as an input or output.
         //    The Direction field can be either DIGITALIN or DIGITALOUT
         //    depending on whether the port is to be configured as an
         //    input or output. Valid ports are PORTA, PORTB, PORTCL and
         //    PORTCH. Direction bit can be either DIGITALIN or DIGITALOUT.
         int        error,
                    mask, OldByte, NewByte;

         //printf("Configuring port %d with direction %d n", Port, Direction);
         error = NO_ERROR;
         OldByte = inb(DCONFIGPORT + base); /*read the current register*/
         if(Direction == DIGITALIN){ /* determine mask for DIGITALIN */
                            if(Port == PORTA){ mask = 0x10;
                            } else if(Port == PORTB){ mask = 0x02;
                            } else if(Port == PORTC){ mask = 0x09;
                            } else if(Port == PORTCL){ mask = 0x01; Port = PORTC;
                            } else if(Port == PORTCH){ mask = 0x08; Port = PORTC;
                            } else {
                                      error_log(MINOR, "Digital port must be PORTA, PORTB, PORTC,
PORTCL or PORTCH");
                                      error = ERROR;
                                      mask = 0;
                            }
                            NewByte = OldByte | mask; /* new data for register */
         } else if(Direction == DIGITALOUT){ /* determine mask for DIGITALOUT */
                            if(Port == PORTA){ mask = 0xef;
                            } else if(Port == PORTB){ mask = 0xfd;
                            } else if(Port == PORTC){ mask = 0xf6;
                            } else if(Port == PORTCL){ mask = 0xfe; Port = PORTC;
                            } else if(Port == PORTCH){ mask = 0xf7; Port = PORTC;
                            } else {
                                      error_log(MINOR, "Digital port must be PORTA, PORTB, PORTC,
PORTCL or PORTCH");
                                      error = ERROR;
                            }
                            NewByte = OldByte & mask; /* new value for register */
         } else {
                            error_log(MINOR, "Direction must be set to DIGITALIN or DIGITALOUT");
                            error = ERROR;
         }
         if(error == NO_ERROR){
         //printf("port thingy %d %d n", NewByte, DCONFIGPORT);
                   outb(NewByte, DCONFIGPORT + base); /* write config data to register */
         }

         return error; /* no errors detected */
  }




  int das08::DBitIn(int Port, int BitNum, int *BitData){
        // This function determines whether a bit within the
        // requested port is set. The value (1 or 0) is returned
        // in the variable pointer sent to the function. Port may
        // be PORTA, PORTB, PORTCL or PORTCH. BitNum must be in the
        // range 0-7.
        int       error,
                  mask = 0, data;

         error = NO_ERROR;
         if((Port == PORTCL) || (Port == PORTCH)){ data = inb(PORTC + base);
         } else { data = inb(Port + base);}
         //printf("GOT   %d   %d %d    %d n", Port, data, BitNum, BitData[0]);
page 466


      if((Port == PORTA) || (Port == PORTB) || (Port == PORTC)){
               if((BitNum >= 0) && (BitNum <= 7)){
                         mask = bits[BitNum];
               } else {
                         error_log(MINOR, "Bit numbers should be between 0 and 7");
                         error = ERROR;
               }
      } else if((Port == PORTCL) || (Port == PORTAUX)) {
               if((BitNum >= 0) && (BitNum <= 3)){
                         mask = bits[BitNum];
               } else {
                         error_log(MINOR, "Bit numbers should be between 0 and 3");
                         error = ERROR;
               }
      } else if(Port == PORTCH) {
               if((BitNum >= 4) && (BitNum <= 7)){
                         mask = bits[BitNum];
               } else {
                         error_log(MINOR, "Bit numbers should be between 4 and 7");
                         error = ERROR;
               }
      } else if(Port == DCONFIGPORT) {
               mask = bits[BitNum];
      } else {
               error_log(MINOR, "Input port not recognized");
               error = ERROR;
      }

      if(error == NO_ERROR){
               BitData[0] = 0;
               if((mask & data) != 0) BitData[0] = 1;
      }

      return error;
}




int das08::DBitOut(int Port, int BitNum, int BitValue){
      // This function sets a bit of the requested port to either
      // a zero or a one. Port may be PORTA, PORTB, PORTCL or
      // PORTCH. BitNum must be in the range 0 - 7. BitValue
      // must be 1 or 0.
      int       error,
                mask, NewByte, OldByte;

      error = NO_ERROR;
      if((Port == PORTCL) || (Port == PORTCH)){
               OldByte = inb(PORTC + base);
      } else {
               OldByte = inb(Port + base);
      }

      if((Port == PORTAUX) && (BitValue == 1)){
               mask = bits[BitNum+4];
               NewByte = OldByte | mask;
               //printf("ddo %x     %x n", mask, OldByte);
      } else if((Port == PORTAUX) && (BitValue == 0)) {
               mask = bits[BitNum+4];
               NewByte = OldByte & ~mask;
      } else if(((Port==PORTA) || (Port==PORTB) || (Port == PORTC)) && (BitValue==1)){
               mask = bits[BitNum];
               NewByte = OldByte | mask;
      }else if(((Port==PORTA) || (Port==PORTB) || (Port==PORTC)) && (BitValue == 0)){
               mask = bits[BitNum];
page 467


               NewByte = OldByte & ~mask;
      } else if((Port == PORTCL) && (BitValue == 1)){
               mask = bits[BitNum];
               NewByte = OldByte | mask;
      } else if((Port == PORTCL) && (BitValue == 0)){
               mask = bits[BitNum];
               NewByte = OldByte & ~mask;
      } else if((Port == PORTCH) && (BitValue == 1)){
               mask = bits[BitNum];
               NewByte = OldByte | mask;
      } else if((Port == PORTCH) && (BitValue == 0)){
               mask = bits[BitNum];
               NewByte = OldByte & ~mask;
      } else {
               error = ERROR;
      }
      if((Port == PORTCL) || (Port == PORTCH))
               Port = PORTC;
               //printf("OUT %d %dn", NewByte, Port + base);
      if(error == NO_ERROR) outb(NewByte, Port + base);

      return error;
}




int das08::DIn(int Port, int *Value){
      // This function reads the byte value of the specified port
      // and returns the result in the variable pointer sent to the
      // function. Valid ports are PORTA, PORTB, PORTCL and PORTCH.
      int       error;
//    int       result;
//    int       BitData;
      int       temp;

      error = NO_ERROR;
//    if(Port == PORTA){
//             result = DBitIn(DCONFIGPORT, 4, &BitData);
//    } else if(Port == PORTB){
//             result = DBitIn(DCONFIGPORT, 1, &BitData);
//    } else if(Port == PORTC){
//             result = DBitIn(DCONFIGPORT, 0, &BitData)
//                                + DBitIn(DCONFIGPORT, 3, &BitData);
//    } else if(Port == PORTCL){
//             result = DBitIn(DCONFIGPORT, 0, &BitData);
//    } else if(Port == PORTCH){
//             result = DBitIn(DCONFIGPORT, 3, &BitData);
//    } else if(Port == PORTAUX){
//    } else {
//             error_log(MINOR, "ERROR: Port not recognized");
//             error = ERROR;
//    }

//////////////
//printf("sss %d %d n", Port, result);
//    if((error == NO_ERROR) && (BitData == 0)){
//              error_log("ERROR: Port not configured for read");
//              error = ERROR;
//    }
      if(error == NO_ERROR){
                if(Port == PORTCL){
                         temp = inb(PORTC + base);/* read the port data */
                         Value[0] = (temp & 0x0f);/* mask off the high bits */
                } else if(Port == PORTCH){
page 468


                        temp = inb(PORTC + base);/* read the port data */
                        Value[0] = (temp & 0xf0);/* mask off the low bits */
               } else if(Port == PORTAUX){
                        Value[0] = 0x7 & (int)((inb(Port + base) / 16));
               } else {
                        Value[0] = 0xff & inb(Port + base);/* read the port data */
               }
      }

      return error;
}




int das08::DOut(int Port, int ByteValue){
      // This function writes the byte value to the specified port.
      // Valid ports are PORTA, PORTB, PORTCL and PORTCH.
      int       error;

      error = NO_ERROR;
      if(Port == PORTAUX){
               ByteValue = (0x07 & inb(Port+base)) | (ByteValue * 16);
      }
      if((ByteValue > 255) || (ByteValue < 0)){
               error = ERROR;
      }
      //printf("Writing byte %d to port %dn", ByteValue, Port);
      if(error == NO_ERROR){
               if(Port == PORTCL){
                         outb((ByteValue & 0x0f), PORTC + base);
               } else if(Port == PORTCH){
                         outb((ByteValue & 0xf0), PORTC + base);
               } else {
                         outb(ByteValue, Port + base); /* write the port data */
               }
      }

      return error; /* no errors detected */
}




int das08::C8254Config(int CounterNum, int Config){
      int       error,
                NewByte,
//              TempByte,
                BCD, mask, counter;
//    int       temp;

      error = NO_ERROR;
      /* BCD = 0xfe - 16-bit binary count
         BCD = 0xf1 - 4 decade Binary Coded Decimal */
      BCD = 0xfe;
      switch (Config){
               case HIGHONLASTCOUNT:mask = 0xf1; break;
               case ONESHOT:                mask = 0xf3; break;
               case RATEGENERATOR:mask = 0xf5; break;
               case SQUAREWAVE:   mask = 0xf7; break;
               case SOFTWARESTROBE:mask = 0xf9; break;
               case HARDWARESTROBE:mask = 0xfb; break;
               default: error = ERROR;; break;
      }

      switch (CounterNum){
page 469


               case 1: counter = 0x3f;            break;
               case 2: counter = 0x7f;            break;
               case 3: counter = 0xbf;            break;
               default: error = ERROR;            break;
      }
      if(error == NO_ERROR){
               NewByte = (BCD & mask) & counter;
               //printf("The value of TempByte & mask is --> %x.n", NewByte);
               outb(NewByte, CCONFIGPORT + base);
      }

      return error;
}




int das08::CLoad(int CounterNum, int value)
{
      char      LoadValue[6];
      int       error;
      int TempByte, TempByte1, Register, CounterMask;
      int WriteLowByteMask1 = 0x20;/* RL1 | */
      int WriteLowByteMask2 = 0xef;/* RL0 & */
      int WriteHighByteMask1 = 0xdf;/* RL1 & */
      int WriteHighByteMask2 = 0x10;/* RL0 | */
      char LowByte[5];
      char HighByte[5];
      long HighByteValue, LowByteValue;
      int test;

      error = NO_ERROR;
      switch (CounterNum){
               case 1: Register             = LOADREAD1; CounterMask = 0x3f; break;
               case 2: Register             = LOADREAD2; CounterMask = 0x7f; break;
               case 3: Register             = LOADREAD3; CounterMask = 0xbf; break;
               default: error =             ERROR; break;
      }

      HighByte[0]       =    LoadValue[0];
      HighByte[1]       =    LoadValue[1];
      HighByte[2]       =    LoadValue[2];
      HighByte[3]       =    LoadValue[3];

      LowByte[0]    =       ’0’;
      LowByte[1]    =       ’x’;
      LowByte[2]    =       LoadValue[4];
      LowByte[3]    =       LoadValue[5];

      if(error == NO_ERROR){
               HighByteValue = (int)strtol(HighByte, NULL, 0);
               LowByteValue = (int)strtol(LowByte, NULL, 0);
               TempByte = (CounterMask | WriteLowByteMask1) & WriteLowByteMask2;
               TempByte1 = TempByte & 0xf0;
               //printf("The value in config low is --> %x.n", TempByte1);
               outb(TempByte1, CCONFIGPORT + base);
               outb(LowByteValue, Register + base);
               //printf("The register chosen is --> %x.n", Register);
               test = inb(Register + base);
               //printf("The value read in counter low is --> %x.n", test);
               TempByte = (0x30 & WriteHighByteMask1) | WriteHighByteMask2;
               //printf("The value in config high is --> %x.n", TempByte);
               outb(TempByte, CCONFIGPORT + base);
               outb(HighByteValue, Register + base);
               outb(TempByte, CCONFIGPORT + base);
               test = inb(Register + base);
page 470


               //printf("The value in counter high is --> %x.n", test);
      }

      return error;
}


int das08::CIn(int CounterNum, int *CountValue){
      int       error;
      int TempByte, Register;
      int ReadLowByteMask1 = 0x20;/* RL1 | */
      int ReadLowByteMask2 = 0xef;/* RL0 & */
      int ReadHighByteMask1 = 0xdf;/* RL1 & */
      int ReadHighByteMask2 = 0x10;/* RL0 | */
      int CountValue1, CountValue2;

      error = NO_ERROR;
      switch (CounterNum){
               case 1: Register      = LOADREAD1; break;
               case 2: Register      = LOADREAD2; break;
               case 3: Register      = LOADREAD3; break;
               default: error =      ERROR; break;
      }

      if(error == NO_ERROR){
               TempByte = (0x3f | ReadLowByteMask1) & ReadLowByteMask2;
               outb(TempByte, CCONFIGPORT + base);
               CountValue1 = inb(Register + base);
               //printf("The low value is --> %x.n", CountValue1);
               TempByte = (0x3f & ReadHighByteMask1) | ReadHighByteMask2;
               outb(TempByte, CCONFIGPORT + base);
               CountValue2 = inb(Register + base);
               //printf("The high value is --> %x.n", CountValue2);
      }

      return error;
}




int das08::AIn(int ADChannel, int *Value){
      // This function requires three arguments to perform the
      // analog to digital conversion. ADChannel must be in the
      // range 0-7 and Range must be a valid range code
      // i.e. BIP5VOLTS. The value of the conversion will be
      // returned to the address specificed through the pointer
      // variable. This value will be in the range 0-4095.
      int       error;
      int value1, value2, value3, curr_status, new_status, ADbusy;
      int ADCmask1, ADCmask2;
      int ADValue_low, ADValue_low1, ADValue_low2, ADValue_high;
      int EOC = 1;

      error = NO_ERROR;
      curr_status = inb(ADCSTATUS + base); /* current value in status */

      switch(ADChannel){
               case 0:ADCmask1   =   0xf8;ADCmask2   =   0x00;break;
               case 1:ADCmask1   =   0xf9;ADCmask2   =   0x01;break;
               case 2:ADCmask1   =   0xfa;ADCmask2   =   0x02;break;
               case 3:ADCmask1   =   0xfb;ADCmask2   =   0x03;break;
               case 4:ADCmask1   =   0xfc;ADCmask2   =   0x04;break;
               case 5:ADCmask1   =   0xfd;ADCmask2   =   0x05;break;
page 471


         case 6:ADCmask1 = 0xfe;ADCmask2 = 0x06;break;
         case 7:ADCmask1 = 0xff;ADCmask2 = 0x07;break;
         default:error = ERROR;; break; /* error */
}

if(error == NO_ERROR){
         outb(chan0, GAIN + base); /* set the gain/range value */
         new_status = (curr_status & ADCmask1) | ADCmask2;
         outb(new_status, ADCSTATUS + base); /* set the channel number */
         outb(0x00, ADCLOW + base); /* start a 12 bit A/D conversion */
}

while((error == NO_ERROR) && (EOC == 1)){ /* check for end of conversion */
         ADbusy = inb(ADCSTATUS + base); /* read status register */
         if(ADbusy >= 128){
                   EOC = 1; /* A/D still converting */
         } else {
                   EOC = 0; /* A/D done converting */
         }
}

if(error == NO_ERROR){
         ADValue_low = inb(ADCLOW + base); /* get the lower eight bits */
         ADValue_high = inb(ADCHIGH + base); /* get the upper four bits */

         switch(ADValue_high){
                  case 0x00:value1 = 0;break;
                  case 0x80:value1 = 1;break;
                  case 0x40:value1 = 2;break;
                  case 0xc0:value1 = 3;break;
                  case 0x20:value1 = 4;break;
                  case 0xa0:value1 = 5;break;
                  case 0x60:value1 = 6;break;
                  case 0xe0:value1 = 7;break;
                  case 0x10:value1 = 8;break;
                  case 0x90:value1 = 9;break;
                  case 0x50:value1 = 10;break;
                  case 0xd0:value1 = 11;break;
                  case 0x30:value1 = 12;break;
                  case 0xb0:value1 = 13;break;
                  case 0x70:value1 = 14;break;
                  case 0xf0:value1 = 15;break;
                  default:error = ERROR;break;
         }

         ADValue_low1 = (ADValue_low & 0x0f); /* mask off bits 4-7 */
         switch(ADValue_low1){
                  case 0x00:value2 = 0;break;
                  case 0x01:value2 = 16;break;
                  case 0x02:value2 = 32;break;
                  case 0x03:value2 = 48;break;
                  case 0x04:value2 = 64;break;
                  case 0x05:value2 = 80;break;
                  case 0x06:value2 = 96;break;
                  case 0x07:value2 = 112;break;
                  case 0x08:value2 = 128;break;
                  case 0x09:value2 = 144;break;
                  case 0x0a:value2 = 160;break;
                  case 0x0b:value2 = 176;break;
                  case 0x0c:value2 = 192;break;
                  case 0x0d:value2 = 208;break;
                  case 0x0e:value2 = 224;break;
                  case 0x0f:value2 = 240;break;
                  default:error = ERROR;break;
         }
page 472


               ADValue_low2 = (ADValue_low & 0xf0); /* mask off bits 0-3 */
               switch(ADValue_low2){
                        case 0x00:value3 = 0;break;
                        case 0x10:value3 = 256;break;
                        case 0x20:value3 = 512;break;
                        case 0x30:value3 = 768;break;
                        case 0x40:value3 = 1024;break;
                        case 0x50:value3 = 1280;break;
                        case 0x60:value3 = 1536;break;
                        case 0x70:value3 = 1792;break;
                        case 0x80:value3 = 2048;break;
                        case 0x90:value3 = 2304;break;
                        case 0xa0:value3 = 2560;break;
                        case 0xb0:value3 = 2816;break;
                        case 0xc0:value3 = 3072;break;
                        case 0xd0:value3 = 3328;break;
                        case 0xe0:value3 = 3584;break;
                        case 0xf0:value3 = 3840;break;
                        default: error = ERROR; /* error - unknown conversion result */
               }
               *Value = value1+value2+value3; /* total value for conversion */
      }

      return error; /* no errors detected */
}




int das08::AOut(int DAChannel, int DAValue){
      // This function performs a digital to analog conversion
      // routine. The DAChannel must be either 0 or 1 and the
      // digital value must be in the range 0-4095.
      int       error;
      int low, high, DACLOW, DACHIGH;

      error = NO_ERROR;
      switch(DAChannel){
               case 0:DACLOW = DAC0LOW;DACHIGH = DAC0HIGH;break;
               case 1:DACLOW = DAC1LOW;DACHIGH = DAC1HIGH;break;
               default:error = ERROR;break;
      }

      /* The following table converts the digital value into
         three hex values encompassing two 8-bit registers. The
         layout of the registers follow:

               low - DA7   DA6   DA5   DA4   DA3 DA2 DA1     DA0
               high -  x     x     x     x   DA11 DA10 DA9   DA8 */

      if(DAValue <= 255){
               low = DAValue;
               high = 0x00;
      } else if((DAValue >= 256) && (DAValue <= 511)){
               low = DAValue - 256;
               high = 0x01;
      } else if((DAValue >= 512) && (DAValue <= 767)) {
               low = DAValue - 512;
               high = 0x02;
      } else if((DAValue >= 768) && (DAValue <= 1023)) {
               low = DAValue - 768;
               high = 0x03;
      } else if((DAValue >= 1024) && (DAValue <= 1279)) {
page 473


                    low = DAValue - 1024;
                    high = 0x04;
        } else    if((DAValue >= 1280) &&   (DAValue <= 1535)) {
                    low = DAValue - 1280;
                    high = 0x05;
        } else    if((DAValue >= 1536) &&   (DAValue <= 1791)) {
                    low = DAValue - 1536;
                    high = 0x06;
        } else    if((DAValue >= 1792) &&   (DAValue <= 2047)) {
                    low = DAValue - 1792;
                    high = 0x07;
        } else    if((DAValue >= 2048) &&   (DAValue <= 2303)){
                    low = DAValue - 2048;
                    high = 0x08;
        } else    if((DAValue >= 2304) &&   (DAValue <= 2559)){
                    low = DAValue - 2304;
                    high = 0x09;
        } else    if((DAValue >= 2560) &&   (DAValue <= 2815)){
                    low = DAValue - 2560;
                    high = 0x0a;
        } else    if((DAValue >= 2816) &&   (DAValue <= 3071)){
                    low = DAValue - 2816;
                    high = 0x0b;
        } else    if((DAValue >= 3072) &&   (DAValue <= 3327)){
                    low = DAValue - 3072;
                    high = 0x0c;
        } else    if((DAValue >= 3328) &&   (DAValue <= 3583)){
                    low = DAValue - 3328;
                    high = 0x0d;
        } else    if((DAValue >= 3584) &&   (DAValue <= 3839)){
                    low = DAValue - 3584;
                    high = 0x0e;
        } else    if((DAValue >= 3840) &&   (DAValue <= 4095)){
                    low = DAValue - 3840;
                    high = 0x0f;
        } else{
                 error = ERROR; /* error - D/A value must be 0-4095 */
        }
        if(error == NO_ERROR){
                 outb(low, DACLOW + base); /* write the low byte value */
                 outb(high, DACHIGH + base); /* write the high byte value */
        }

        return error; /* no errors detected */
}




    Listing 16.1 - DAS08 Driver Test File (testdaq.cpp)


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "das08_io.h"




int ChooseCounter();
int ChooseConfig();
int ChooseDir(int DirectNum);
page 474



   #define QUERY            350
   #defineCHOOSE_PORT       351
   #defineCHOOSE_COUNTER352
   #define CHOOSE_CONFIG353
   #defineCHOOSE_DIRECTION 354


   int     query(int, char*, int);




   int main(){
         int        choice;
         das08      *A;
         int        value;

           A = new das08();
           A->configure("das08.conf");
           A->connect();

           do{
                    printf("nn------------ DAS08 Test Harness Menu --------------n");

                    printf("1. Digital Configuren");
                    printf("2. Digital Input     Bitn");
                    printf("3. Digital Input     Wordn");
                    printf("4. Digital Output Bitn");
                    printf("5. Digital Output Wordnn");
                    printf("6. Counter Configuren");
                    printf("7. Counter Load      Valuen");
                    printf("8. Counter Input     Valuenn");
                    printf("9. Analog     Input  Valuen");
                    printf("10. Analog    Output Valuenn");
                    printf("11. Quitnn");
                    printf("Select: ");
                    scanf("%d", &choice);
                    if(choice == 1){
                             A->DConfigPort(query(CHOOSE_PORT, NULL, 0),
                                                                   query(CHOOSE_DIRECTION, NULL,
0));
                    } else if(choice == 2){
                             A->DBitIn(query(CHOOSE_PORT, NULL, 0),
                                                         query(QUERY, "Choose a bit (0-7): ", 0),
&value);
                             printf("The Bit Value is [%d] n", value);
                    } else if(choice == 3){
                             A->DIn(            query(CHOOSE_PORT, NULL, 0), &value);
                             printf("The Value is [%d] or [%d]hexn", value, value);
                    } else if(choice == 4){
                             A->DBitOut(query(CHOOSE_PORT, NULL, 0),
                                                         query(QUERY, "Choose a bit (0-7): ", 0),
                                                         query(QUERY, "Choose a value (0 or 1): ",
0));
                    } else if(choice == 5){
                             A->DOut( query(CHOOSE_PORT, NULL, 0),
                                                         query(QUERY, "Choose a value (-128 to
127): ", 0));
                    } else if(choice == 6){
                             A->C8254Config(query(CHOOSE_COUNTER, NULL, 0),
                                                                   query(CHOOSE_CONFIG, NULL, 0));
                    } else if(choice == 7){
                             A->CLoad( query(CHOOSE_COUNTER, NULL, 0),
page 475


                                                          query(QUERY, "Enter a value in the form
0x____ : ", 0));
                    } else if(choice == 8){
                             A->CIn(            query(CHOOSE_COUNTER, NULL, 0), &value);
                             printf("The Counter value was [%d]n", value);
                    } else if(choice == 9){
                             A->AIn(            query(QUERY, "Enter Channel Number (0-7): ", 0),
&value);
                             printf("The value is [%d]n", value);
                    } else if(choice == 10){
                             A->AOut( query(QUERY, "Enter Channel Number (0-1): ", 0),
                                                         query(QUERY, "Enter Value (0- 4095): ",
0));
                     } else if(choice == 11){
                     } else {
                              printf("ERROR: Choice not recognizedn");
                     }
           } while(choice != 11);
           A->disconnect();
           delete A;
   }




   int     query(int type, char *text, int def){
           char     work[20];
           int      value;

         if(type == QUERY){
                   printf("%s [%d]: ", text, def);
                   scanf("%s", work);
   printf("<%s>n", work);
                   if(strlen(work) == 0){
                            return def;
                   } else {
                            return atoi(work);
                   }
         } else if(type == CHOOSE_PORT){
                   printf("Which port (1=A, 2=B, 3=C, 4=CH, 5=CL, 6=AUX): ");
                   scanf("%d", &value);
                   if(value == 1) return PORTA;
                   if(value == 2) return PORTB;
                   if(value == 3) return PORTC;
                   if(value == 4) return PORTCL;
                   if(value == 5) return PORTCH;
                   if(value == 6) return PORTAUX;
                   return ERROR;
         } else if(type == CHOOSE_COUNTER){
                   printf("Which counter (1, 2, 3): ");
                   scanf("%d", &value);
                   if((value >= 1) || (value <= 3)) return value;
                   return ERROR;
         } else if(type == CHOOSE_CONFIG){
                   printf("Which mode (1=HighOnLastCount, 2=OneShot, 3=RateGenerator,
4=SquareWave, 5=SoftwareStrobe, 6=HardwareStrobe): ");
                   scanf("%d", &value);
                   if(value == 1) return HIGHONLASTCOUNT;
                   if(value == 2) return ONESHOT;
                   if(value == 3) return RATEGENERATOR;
                   if(value == 4) return SQUAREWAVE;
                   if(value == 5) return SOFTWARESTROBE;
                   if(value == 6) return HARDWARESTROBE;
                   return ERROR;
         } else if(type == CHOOSE_DIRECTION){
                   printf("Which direction (1=In, 2=Out): ");
page 476


                      scanf("%d", &value);
                      if(value == 1) return DIGITALIN;
                      if(value == 2) return DIGITALOUT;
                      return ERROR;
           } else {
                      return ERROR;
           }
   }




   void    error_log(int code, char *string){
           printf("ERROR %d: %s n", code, string);
   }




16.8 SUMMARY

          • A/D conversion will convert a continuous value to an integer value.
          • D/A conversion is easier and faster and will convert a digital value to an analog value.
          • Resolution limits the accuracy of A/D and D/A converters.
          • Sampling too slowly will alias the real signal.
          • Analog inputs are sensitive to noise.
          • The analog I/O cards are configured with a few words of memory.
          • BTW and BTR functions are needed to communicate with the analog I/O cards.




16.9 PRACTICE PROBLEMS

1. You need to read an analog voltage that has a range of -10V to 10V to a precision of +/-0.05V.
   What resolution of A/D converter is needed?


 (ans.
                       10V – ( – 10V )                 7 bits = 128
                   R = --------------------------------- = 200
                                                       -
                                  0.1V                 8 bits = 256
                                       The minimum number of bits is 8.

2. We are given a 12 bit analog input with a range of -10V to 10V. If we put in 2.735V, what will
   the integer value be after the A/D conversion? What is the error? What voltage can we calcu-
   late?
page 477




  (ans.
              N = 12        R = 4096                V min = – 10V                    V max = 10V                V in = 2.735V
                            V in – V min
              V I = INT  ---------------------------- R = 2608
                                                     -
                        V             –V 
                                  max       min
                      V
              V C =  ----I ( V max – Vmin ) + V min = 2.734V
                     R-


3. We need to select a digital to analog converter for an application. The output will vary from -5V
   to 10V DC, and we need to be able to specify the voltage to within 50mV. What resolution will
   be required? How many bits will this D/A converter need? What will the accuracy be?

    (ans.
                A card with a voltage range from -10V to +10V will be selected to cover the
                   entire range.
                          10V – ( – 10V )
                      R = --------------------------------- = 400
                                                          -            minimum resolution
                                  0.050V
                                                               8 bits = 256
                                                               9 bits = 512
                                                               10 bits = 1024
              The A/D converter needs a minimum of 9 bits, but this number of bits is not
                commonly available, but 10 bits is, so that will be selected.

                                   V max – V min                   10V – ( – 10V )
                       V ERROR =  ---------------------------- = --------------------------------- = ± 0.00976V
                                                              -                                   -
                                             2R                          2 ( 1024 )


4. Write a program that will input an analog voltage, do the calculation below, and output an ana-
   log voltage.

            V out = ln ( V in )

5. Develop a program to sample analog data values and calculate the average, standard deviation,
   and the control limits. The general steps are listed below.
        1. Read sampled inputs.
        2. Randomly select values and calculate the average and store in memory. Calculate the
                  standard deviation of the stored values.
        3. Compare the inputs to the standard deviation. If it is larger than 3 deviations from the
                  mean, halt the process.
        4. If it is larger than 2 then increase a counter A, or if it is larger than 1 increase a second
                  counter B. If it is less than 1 reset the counters.
        5. If counter A is =3 or B is =5 then shut down.
        6. Goto 1.
page 478




                          m
                                                           UCL = X + 3σ
                   X =   ∑ Xj                                              X

                         j=1
                                                           LCL = X – 3σ
                                                                           X




16.10 LABORATORY - INTERFACING TO A DAQ CARD

Purpose:
       To use a data aquisition card to aquire data.

Overview:
       The daq card will be placed into a Linux computer and then controlled with the drive pro-
             grams listed in this chapter.

Pre-Lab:
       1. Visit the computer boards web site (www.computerboards.com) and review the manual
               for the DAS-08 ISA board.

In-Lab:
          1. Complete the tutorial for the DAS-08 DAQ card.
          2. Modify the tutorial program so that the analog input value from the board is read once a
                 second and written to a database.

Submit (individually):
      1. The program developed during the laboratory.
page 479



17. VISIONS SYSTEMS

  • Vision systems are suited to applications where simpler sensors do not work.




17.1 OVERVIEW



  • Typical components in a modern vision system.
page 480




                             Lighting




      Scene
                                                                 Camera

                                                lens      iris

                                                                          CCD     control
                                                                                  electronics




                  Computer


                Action or Reporting             Image Processing                Frame Grabber
                Software (Robot,                Software (Filtering,            Hardware
                Network, PLC, etc)              Segmentation and                (A/D converter
                                                Recognition)                    and memory)




17.2 APPLICATIONS

    • An example of a common vision system application is given below. The basic operation
involves a belt that carries pop (soda) bottles along. As these bottles pass an optical sensor, it trig-
gers a vision system to do a comparison. The system compares the captured image to stored
images of acceptable bottles (with no foreign objects or cracks). If the bottle differs from the
acceptable images beyond an acceptable margin, then a piston is fired to eject the bottle. (Note:
page 481


without a separate sensor, timing for the piston firing is required). Here a PLC is used as a com-
mon industrial solution controller. - All of this equipment is available off-the-shelf ($10K-$20K).
In this case the object lighting, backgrounds and contrast would be very important.


                                         Light                                              Light
                                         Emitter                        Stuff!              Detector
              Light Source

                                                               Stuff!              Camera


                                                   Stuff!



                                                               Pneumatic Piston
                                       Stuff!



                             Stuff!


                                                            Pneumatic Solenoid



                                                                                  Vision Module


                                                               Programmable Logic Controller
                                                               (aka PLC)
                           Air Exhaust
                                         Air Supply




17.3 LIGHTING AND SCENE

    • There are certain features that are considered important in images,
       - boundary edges
       - surface texture/pattern
       - colors
       - etc
page 482


    • Boundary edges are used when trying to determine object identity/location/orientation. This
requires a high contrast between object and background so that the edges are obvious.


    • Surface texture/pattern can be used to verify various features, for example - are numbered
buttons in a telephone keypad in the correct positions? Some visually significant features must be
present.


    • Lighting,
       - multiple light sources can reduce shadows (structured lighting).
       - back lighting with luminescent screens can provide good contrast.
       - lighting positions can reduce specular reflections (light diffusers help).
       - artificial light sources provide repeatability required by vision systems that is not possi-
                ble without natural light sources.



17.4 CAMERAS

    • Cameras use available light from a scene.


    • The light passes through a lens that focuses the beams on a plane inside the camera. The
focal distance of the lens can be moved toward/away from the plane in the camera as the scene is
moved towards/away.


    • An iris may also be used to mechanically reduce the amount of light when the intensity is
too high.


    • The plane inside the camera that the light is focussed on can read the light a number of
ways, but basically the camera scans the plane in a raster pattern.


    • An electron gun video camera is shown below. - The tube works like a standard CRT, the
electron beam is generated by heating a cathode to eject electrons, and applying a potential
between the anode and cathode to accelerate the electrons off of the cathode. The focussing/
deflecting coils can focus the beam using a similar potential change, or deflect the beam using a
page 483


differential potential. The significant effect occurs at the front of the tube. The beam is scanned
over the front. Where the beam is incident it will cause electrons to jump between the plates pro-
portional to the light intensity at that point. The scanning occurs in a raster pattern, scanning many
lines left to right, top to bottom. The pattern is repeated some number of times a second - the typ-
ical refresh rate is on the order of 30Hz


                                                                             electron
                                                                             accelerator



      photon
                                                                                heated cathode
                                            scanning
                                            electron beam
                                                                       anode



                                                          focus and
                            signal                        deflection coils


    • Charge Coupled Device (CCD) - This is a newer solid state video capture technique. An
array of cells are laid out on a semiconductor chip. A grid like array of conductors and insulators
is used to move a collection of charge through the device. As the charge moves, it sweeps across
the picture. As photons strike the semiconductor they knock an electron out of orbit, creating a
negative and positive charge. The positive charges are then accumulated to determine light inten-
sity. The mechanism for a single scan line is seen below.
page 484




         Li-1                       Li                    Li+1




                                                                   control electrodes
  -V                    +V                      -V
                                                                      oxide insulator
                                      -
                  e-           -   -e
                    e- e- - e e
                          e
                e- - e-          e-                                  p-type semiconductor
                  e         e- - e-
                        e- e
                  e- p+


                                 The charge is trapped in this location by voltages on
                           the control electrodes. This location corresponds to a
                           pixel. An incident photon causes an electron to be liber-
                           ated.
photon




         Li-1             Li                Li+1          Li+2




   -V             0V                +V               -V

                       e- - - e-                                     The charges can be
                        ee ee-  -
                              e- - -                             moved to the next pixel
                        e- - e e-
                       e- e e- e-
                            -
                                                                 location by changing the
                          e e
                                                                 electrode voltages
page 485




           The description of moving the charge is for a single scan line, this can be expanded
      to consider the entire CCD.

                                                            charge moves this way


                                                                                   L11

                                                                                   L10

                                                                                   L9

                                                                                   L8

                                                                                   L7

                                                                                   L6

                                                                                   L5

                                                                                   L4

                                                                                   L3

                                                                                   L2

                                                                       e- -e-      L1
                                                                        e
                                                                       e- -
                                                                        e
                                                                                   L0




                       n-type barriers to control charge (on bottom)




    • Color video cameras simply use colored filters to screen light before it strikes a pixel. For
an RGB scan, each color is scanned 3 times.
page 486


17.5 FRAME GRABBER

    • A simple frame grabber is pictured below,


                             pixel                            digital
  video
                             intensities                      values
  signal
                 signal
                                                  fast A/D                   RAM
                 splitter                                                                Computer
                                                                                         bus

                            line start
                                               address
                             picture start     generator




    • These items can be purchased for reasonable prices, and will become standard computer
components in the near future.




17.6 IMAGE PREPROCESSING

    • Images are basically a set of pixels that are often less than a perfect image representation.
By preprocessing, some unwanted variations/noise can be reduced, and desired features
enhanced.


    • Some sources of image variation/noise,
       - electronic noise - this can be reduced by designing for a higher Signal to Noise Ratio
                (SNR).
       - lighting variations cause inconsistent lighting across an image.
       - equipment defects - these cause artifacts that are always present, such as stripes, or pixels
                stuck off or on.
page 487


17.7 FILTERING

     • Filtering techniques can be applied,
          - thresholding
          - laplace filtering
          - fourier filters
          - convolution
          - histograms
          - neighborhood averaging




17.7.1 Thresholding

     • Thresholding basically sets a transition value. If a pixel is above the threshold, it is switched
fully on, if it is below, it is turned fully off.


     Original Image                                            e.g. Threshold = 2
     1     2    3   4                                          1   7   7   7
     5     6    7   5                                          7   7   7   7
     3     7    7   4                                          7   7   7   7
     2     3    1   2                                          7   7   1   7
           an array of pixel brightness

                                                               e.g. Threshold = 5

               It can be difficult to set a good               1   1   1   1
         threshold value, and the results are prone            7   7   7   7
                                                               1   7   7   1
         to noise/imperfections in the image.
                                                               1   1   1   1




17.8 EDGE DETECTION
page 488


     • An image (already filtered) can be checked to find a sharp edge between the foreground and
background intensities.


     • Let’s assume that the image below has been prefiltered into foreground (1) and background
(0). An edge detection step is then performed.


   Actual Scene                     Thresholded Image                  Edge Detected Image
                                    0   0   0    0   0     0   0   0   0   0   0   0   0   0    0   0
                                    0   0   0    1   0     0   0   0   0   0   0   1   0   0    0   0
                                    0   0   1    1   1     0   0   0   0   0   1   0   1   0    0   0
                                    0   0   1    1   1     1   0   0   0   0   1   0   0   1    0   0
                                    0   1   1    1   1     1   0   0   0   1   0   0   0   1    0   0
                                    0   0   1    1   1     1   0   0   0   0   1   1   0   1    0   0
                                    0   0   0    0   1     0   0   0   0   0   0   0   1   0    0   0
                                    0   0   0    0   0     0   0   0   0   0   0   0   0   0    0   0

        A simple algorithm might create a new image (array) filled with zeros, then look at
   the original image. If any pixel has a vertical or horizontal neighbor that is 0, then the




17.9 SEGMENTATION

     • An image can be broken into regions that can then be used for later calculations. In effect
this method looks for different self contained regions, and uses region numbers instead of pixel
intensities.
page 489




                                                           Actual Scene




         0   0   0   0   0   0   0   0   0   0   0   0
         0   0   0   0   0   0   0   0   0   0   0   0
         0   0   1   1   1   0   0   0   0   0   0   0
         0   0   1   1   1   0   0   0   0   0   0   0
         0   0   0   0   0   0   0   0   1   1   1   0     Thresholded
         0   0   0   0   0   0   0   1   1   0   1   0
         0   0   0   0   0   0   0   0   1   1   1   0
         0   0   0   0   0   0   0   0   0   0   0   0

         1   1   1   1   1   1   1   1   1   1   1   1
         1   1   1   1   1   1   1   1   1   1   1   1
         1   1   2   2   2   1   1   1   1   1   1   1
         1   1   2   2   2   1   1   1   1   1   1   1
         1   1   1   1   1   1   1   1   3   3   3   1     Segmented
         1   1   1   1   1   1   1   3   3   4   3   1
         1   1   1   1   1   1   1   1   3   3   3   1
         1   1   1   1   1   1   1   1   1   1   1   1



• A simple segmentation algorithm might be,
  1. Threshold image to have values of 1 and 0.
  2. Create a segmented image and fill it with zeros (set segment number variable to one).
  3. Scanning the old image left to right, top to bottom.
  4. If a pixel value of 1 is found, and the pixel is 0 in the segmented image, do a flood fill
           for the pixel onto the new image using segment number variable.
  5. Increment segment # and go back to step 3.
  6. Scan the segmented image left to right, top to bottom.
  7. If a pixel is found to be fully contained in any segment, flood fill it with a new segment
           as in steps 4 and 5.
page 490


17.9.1 Segment Mass Properties

     • When objects are rotated in the vision plane it may become difficult to use simple measures
to tell them apart. At this point global attributes, such as perimeter lengths, length/width ratios, or
areas can be used.


     • The centroid of a mass can be determined with the expression for the x direction (y is iden-
tical)



                  ˜ = ∑ M i x- = 1
                                    ˜      n
                                        -- ∑ x i
                                      i      ˜
                  x   -----------------  -
                        ∑ Mi n          i=1




                  where,
                        ˜
                       x = the x centroid from the left of the screen
                        ˜
                       n = the number of elements inthesegment
                         ˜
                        x i = the distance from the left of the screen to the pixel centre



     • Area is simply the sum of all pixels in the segment,


                  A =   ∑ pi
                  where,
                        A = Area of image (in pixels)
                         p i = 1 if the pixel is in the segment


     • Perimeter is the number of pixels that can be counted around the outside of an object.
page 491




      e.g.              0                                         8   Area = 21
                                                                      Perimeter = 16
                                                                      x Centroid = 3.5
                   0         1      1   1    1    1    1    1     0   y Centroid = 1.5
                             1      1   1    1    1    1    1     0
                             1      1   1    1    1    1    1     0
                             0      0   0    0    0    0    0     0
                   4


   • Compactness can be a measure of mass distribution,


                       2
                  P
              C = -----
                      -
                   A

              where,
                       C = compactness
                       P = perimeter
                       A = area


   • Another measure of mass distribution is thickness,



                      D min                         Dmax
              T min = -----------           T max = -----------
                                                              -
                          A                             A
               where,
                           T = thickness
                           Dmin/Dmax = smallest/largest diameters
                           A = Area




17.10 RECOGNITION



17.10.1 Form Fitting
page 492


    • It can sometimes help to relate a shape to some other geometric primitive using compact-
ness, perimeter, area, etc.
        - ellipse
        - square
        - circle
        - rectangle




17.10.2 Decision Trees

    • In the event that a very limited number of parts is considered, a decision tree can be used.
The tree should start with the most significant features first, then eventually make decisions on the
least significant. Typical factors considered are,
        - area
        - hole area
        - perimeter
        - maximum, minimum and average radius
        - compactness

    • An example of a decision tree is given below. (Note: this can be easily implemented with if-
then rules or Boolean equations)


                                                                        Part A
                                 C<10         Dmin<0.1

                                                                        Part B
                                              Dmin>=0.1

                                                                        Part C
                                 C>=10

                                                                        Part D
                                               C>=20        A>=20
                                                                        Part E
                                                            A<20
page 493




    Bar Codes

    • Bar codes are a common way to encode numbers, and sometimes letters.


    • The code is sequential left to right, and is characterized by bars and spaces of varied widths.
The bar widths corresponds to a numerical digits. These are then encoded into ASCII characters.


    • To remain noise resistant there are unused codes in the numerical sequence. If any value
scanned is one of the unused values the scan is determined to be invalid.


    • There are different encoding schemes.
       Code 39/Codabar - these use bars of two different widths for binary encoding
       Code 128 - these use different bar widths uses proportional widths to encode a range of
             values
       UPC (Universal Product Code) -
       EAN (European Article Numbering) -

    • The example below shows how a number is encoded with a bar code.
page 494




17.11 PRACTICE PROBLEMS

    1. Consider a circle and an ellipse that might be viewed by a vision system. The circle has a
4” radius, whereas the ellipse has a minor and major radius of 2” and 4”. Compare the two defini-
tions using form factors (compactness and thickness) and show how they differ.
page 495




 ans.
             circle                                        circle
             R = 4                                         R1 = 2            R2 = 4

             D min = 8        D max = 8                    D min = 4         D max = 8
                          2
             A = πR = 50.3                                 A = πR 1 R 2 = 25.1
                                                                        2     2
             P = π ( 2R ) = 25.1                                  R1 + R2
                                                           P ≈ 2π ----------------- = 19.9
                                                                                  -
                                                                          2

                                  Compactness values differ
                      2                                             2
                 P                                             P
             C = ----- = 12.5
                     -                                     C = ----- = 15.8
                                                                   -
                  A                                             A

                                    the min/max values are the same for the circle
                                D min                            D min
             T min = T max    = ----------- = 0.16      T min = ----------- = 0.16
                                    A                               A
                                                               D max
                                                       T max = ----------- = 0.32
                                                                         -
                                                                   A



    2. Describe image resolution in vision systems.


    ans. Resolution of a video image describes the number of rows and columns of pixels in a
video image. A higher resolution means that there are more rows of pixels in the images, and
therefore we can distinguish smaller details.


    3. An image has been captured from a video camera, and stored in the matrix below.
page 496




                      64    87    54    64     12      35    22    36

                      36    57    76    24     84      26    63    74

                      84    187   201   234    195     222   198   25

                      54    78    197   198    34      75    218   74

                      25    9     84    202    194     213   192   79

                      37    25    57    98     93      95    91    89




a) Use a threshold of 100 to filter the image.


ANS.
                      0     0     0     0      0       0     0     0

                      0     0     0     0      0       0     0     0

                      0     1     1     1      1       1     1     0

                      0     0     1     1      0       0     1     0

                      0     0     0     1      1       1     1     0

                      0     0     0     0      0       0     0     0




b) Perform an edge detection on the thresholded image.
page 497




   ANS.
                           0        0   0     0      0       0   0   0

                           0        0   0     0      0       0   0   0

                           0        1   1     1      1       1   1   0

                           0        0   1     1      0       0   1   0

                           0        0   0     1      1       1   1   0

                           0        0   0     0      0       0   0   0




   c) Segment the image into distinct regions.


   ANS.
                           0        0   0     0      0       0   0   0

                           0        0   0     0      0       0   0   0

                           0        1   1     1      1       1   1   0

                           0        0   1     1      2       2   1   0

                           0        0   0     1      1       1   1   0

                           0        0   0     0      0       0   0   0




   d) Calculate the compactness and thickness for the region above the threshold.


      ANS.                     2                  3-      6-
                     ( 22 ) -               T = ----- OR -----
                 C = ------------               13       13
                         13



   e) Calculate form factors including perimeter, area, centroid, compactness and minimum and
maximum thickness.
page 498


    4. We have four part shapes (as listed below) that will be arriving on a conveyor. We want to
develop a decision tree for the vision system to tell them apart. We also need to find their cen-
troids relative to the top left of the image so that a robot may pick them up.
        Isosceles triangle 6” per side
        Rectangle 2” by 8”
        Triangle with side lengths 8”, 5” and 4”
        Circle 5” Radius


 ans.
        First, calculate the form factors

          Form                    Area             Perim           Com-          Tmin
                                            eter            pact
          isosceles tri-          15.5                                           0.333
     angle                   9                     18              20.78   3
          rectangle               16               20              25            0.125



             A > 40
                                                               circle
             A < 40        Tmin < 0.18
                                                               rectangle
                           Tmin > 0.18             C > 28
                                                               odd triangle
                                                   C < 28
                                                               isosceles triangle
page 499




17.12 TUTORIAL - LABVIEW BASED IMAQ VISION

1. Locate the appropriate hardware and software for the laboratory. This includes a video camera
   with an appropriate lens attached. A BNC cable to connect to the computer. A computer with
   the National Instruments IMAQ PCI-1408 vision card and IMAQ software installed.

2. We will start by verifying that the vision system is working properly. To do this run the “IMAQ
   Configuration Utility”. You should see a screen that shows the computer and PCI-1408 card.
   Click on the ‘+’ to the left of the card and you should see four input channels appear. The first
   of these is ‘channel 0’, click on it. Next, select “Aquire”, “Grab”, a window should appear that
   shows a video feed. Adjust/focus the lens until a clear image appears. Note that the lens
   attached is a TV lens. For small distances (less than 2-3 feet) the lens will be very sensitive to
   focus, when a longer focus is used it will be much less sensitive. Explore the software settings
   for the camera. Feel free to change values, but record the original value so that it may be
   changed back. When you feel comfortable that the video images are being captured properly,
   continue to the next step.

3. Run Labview, and open a “New vi”. Construct the vi below to capture an image and display it
   on the screen.


       Panel                                         Diagram




                                                         test      IMAQ      snap




(From left to right) First create a string, and enter ‘test’ or something else. Next create the
   ‘IMAQ’ icon using “IMAQ Vision”, “Management”, “IMAQ”. This will create a generic place
   to store images. At this point the image size, etc is not important. Now that we have a place to
   store the image, we can grab images from the camera with the ‘snap’ icon found at “Image
   Aquisition”, “Snap”. Finally we can display the images using the last icon found at “IMAQ
page 500


   Vision”, “Display (basics)”, “IMAQ WindDraw”. Connect these together and run the vi. You
   should see an image from the camera. Notice that these icons are doing a lot that is not on the
   screen. The vision add-on to Labview does not fully follow the philosophy of graphical pro-
   gramming. Things like the display window are not shown in the panel where they should be.
   These ‘cheats’ are necessary because of the huge amount of data required for vision tasks.
   Take some time to explore the other vision tools, and try modifying the vision program.

4. Close the vi and do not save changes to any other vi (this could save some settings per-
   manantly). Next, use “Open vi” and open “examples”, “vision”, “barcodedemo.vi”. Run the vi.
   An image of a barcode should appear. Use the mouse to put a rectangle over the bar code. Then
   accept the Region of Interest “ROI”. After this the program will use images saved on disk to
   test the routine. The codes should match the displayed images. Stop the vi and look at the dia-
   gram to see the general operation - it is set up to use a sequence. Notice that the first frame in
   the sequence pulls an image from a file, and displays it on the screen. The next couple of
   frames deal with getting the region of interest. The fourth sequence (3 of 0 to 4) captures
   images and decodes the barcodes. The last sequence is used to release the vision memory, etc.
   Notice that the images are being supplied by a function called “simu GRAB”, replace this with
   the normal snap routine and run the program (put a vi in front of the camera). You should now
   see the images, but they are not decoded properly. Notice that the barcode icon has an integer
   digit input of ‘3’, you will need to change this value to get the barcodes to decode properly.

5. Close the vi (don’t save any changes). Open the example vi “caliperdemo.vi”, and run the vi.
   This vi can be used to check the presence of objects. Draw lines across the image. Each point
   where the line goes from light/dark or dark/light an edge will be detected. If the line is
   accepted you will see it appear on the list, you will want to change the number of edges. You
   can have more than one test line. When done run the test and see how it behaves. Look at the
   diagram for the vi and modify it to use the camera (as you did for the barcode reader).



17.13 LABORATORY - VISION SYSTEMS FOR INSPECTION

Purpose:
       A vision system will be explored and implemented in the laboratory setting.

Overview:
       The vision system is based on Labview. A dedicate PC will be used in the cell to process
              the vision commands. Using labview the PC can then be connected to the Soft PLC
              controller.

Pre-Lab:
       1. Review labview programming using tutorials found at the national instruments site
              (www.natinst.com).

In-Lab:
page 501


       1. Complete the Labview vision tutorial.
       2. Modify the appropriate test program to read bar codes, and save them to a file
       3. Modify the appropriate test program to read a dimension of arbitrary parts and write the
              dimension to a serial port.

Submit:
      1. Printouts of the modified test programs.
page 502



18. INTEGRATION ISSUES



18.1 CORPORATE STRUCTURES

    • First consider the major functions within a company,
        - Production
        - Materials
        - Process Planning
        - Design
        - Customer Orders / Service
        - Marketing
        - Accounting
        - Management

    • All of these functions generate and use common information which must be communicated
between departments.


    • Since computers handle information, we must be aware of what we get, and what we pro-
duce.




18.2 CORPORATE COMMUNICATIONS

    • Previous paper based systems provided support for data transfer between departments, and
provided a good basis for the introduction of computers


    • ASIDE: Computers can make a good system better, but they will always make a bad system
worse. This is because a system which is not well defined and poorly understood cannot be pro-
grammed, or optimized.


    • Characteristics of paper based manufacturing systems,
page 503


       - Multiple copies of same information.
       - Revising information is hard when multiple copies exist.
       - Delays for the transfer of paper.
       - Easy to lose paper.
       - Paper is not interactive.
       - Paper requires bulky storage.

    • Computers overcome and reduce the problems above, but introduce some technological
challenges,
       - Creating programs to support corporate functions.
       - Software to support interdepartmental communication and data sharing.
       - Hardware to support the software.
C u sto m er                                                                                              M arketin g
                                                                                                                                                                 an d S ales                                                            A cco untin g
                                                                                                                                                                                                                             M FG                                                                                            Transit
                                                                                                                                                                                                                         R M & E n erg y                                                                                    C o m pan y




                                                                                                                C onfirm
                                                                                                                                           S ales
                                                                                                                                                                                                                             C o sts




                                                                                                                                          A nnual
                                                                                                                                                                   S ales




                                                                                      O rder
                                                                                                                                                                 F orecast
S up plier /                                                                                                                                                                                           P ro d uc tio n
                              A ccoun ting                                                                                                                                                                 C o st
  Ven do r                                                                                                      P ro cess                                                                                                M anage




                                                                                                                                                                                   C redit L im it
                                                                                                                                                                                                                                                                                       R elease Invoice




                                                                                                                                                                                 and O ther P o licy
                                                                                                                                                                                                                                                                                                               O rder
                                                                                                                                                                                                                                                                                                                                 Invoice




                                                                                                                O rd ers                                                                                                 P rod uct
                                                                                                                                                                                                                                                                                                            T ran sp o rt



                                                                                                                    1                                                                                                     C o sts
                                                                                                                                                                                                                                                       S h ip p in g C o st                               M anag e
                                                      P ay m en t
                                                                                                                                                                                                                             9
                            O rd er                                                                                                                                                                                                                                                                        P ro du ct
                                                      R elea se




                                                                                                    O rder
         In vo ic e                                                                                                                                                                                                                                                                                       S h ippin g




                                                                                                 P rodu ction
                                                                                                                                Availability
                                                                                                                                                                                                                                         A ccep ted                                                            8
         S u pp lier                              M anage                                                                                                                                                                                  O rd er
      P e rfo rm an ce                         P ro cu rem en t                                                             S ch edu le                                                                                            R e serv atio n
                                                                                                                                                                                                                                                                                   R elease
                                                                                                                                                                                                                                                                                   To S h ip




                                                       5                                                                   P ro ductio n
                                                                                                                                                                                                                                                                                                                                                                                                                                                  page 504




                                                                                                                                                                                                                                                                                                                S hip




                                                                                                                                 2                                                                                         P ack O ut S c he du le
                                                                                                                                                                                                                                                                                                                                            S h ipp ing




                                                                                                                                                                                                                                                                                                              C onfirm
                                                                                                                                                                                                                                                                                                                                           D ocum en ts
                                                                                                                                                                                                                                                                                                                                           Invoice and




                                                                                                                                                                                                                                                             Inventory B alance




P urchasing              S u p plier
                            D ata




                                                                                               P urchase
                                                                                               O rder R eq
                                                                                                                                                                                                                              In v en to ry                     M an age
                                                                                L o n g Te rm                                                                                C o st O B J                                                                       P rodu ct




                                                                                                                             S ched ule




                                                             O rder R eq
                                                                           M aterial an d E n erg y                                                                                                           W aiv ers
                                                                              R eq u irem en ts                                                                                                                                                                                                                                C u sto m er


                                                                                                                                                    C ap acity
                                                                                                                                                                                P erfo rm an ce                                         Q A R esu lt           In vento ry




                                     Incom ing
                                                                                                                                                                                   & C o sts
                                               M an ag e                               P a rts                                                                                                                                                                      7




                                 C o m m un ication
                                                                                   R M & E n erg y                                                                                                     STDS          A ssum e
                                            R aw M aterial                           Inc om ing                                                  M anage
                                             an d E n erg y                                       M a terial an d                              P rodu ction                                                          Q u ality
                                                                                                  E n erg y R eq d                                                                                       QA              6
                                                   4                                                                                                3                                                  R esults                                  R e qm ts                                     R eq m ts
                                                                                   M a terial an d
                                                                                E n ergy Inv en to ry                                                                                             O rde r
                                                                                                                                                                                                 R eq u est
                                                                                                                      A pp ro v als                                           D ata                                                                                               M ark eting
      E xternal E ntities                                                                                                                                                                                                 M eth o d s
                                                                                                                                                                    K now                                                                                                         and S ales
                                  M ark etin g                                                                                O rd er                               H ow
                                                                                                                              S tatu s                                                          C orporate
                                                                                                                                                                                                                                                                                                                                                          • This figure below shows various departments, and the information flow [source - ???




    P lant F un ctional E ntities and S ales                                                                                                                                                      R& D
page 505




    • Requirements for interfacing corporate management and staff functional entities to the fac-
tory [source - find]




                                                                      R equire-
                                                                      m ents
                                                        ACCT




                                                                      factuing
                                                                      policies
                                                                      M anu-
                                                                       M anpow er
                                              H um an

                                                                RES




                                                                                    FA C TO RY L E V E L 0.0
                                                                      R equire-
                       Policies




                                                                      m ents
             MGMT




                                              SALES
                                              M KTG
             CORP




                                               and




                                                                      K now -
                                                                      H ow
                                                        RD&E




                                                                      C ontracts
                                                                      Vendor
                                                        PURCH
                                  E xternal
                                  E ntities




    • Assumed functional hierarchy computer system structure for a large manufacturing com-
page 506


plex [source - find]




                                                                            Orders
                       Management                             Plant




                                                                             Sales
                           Data                           Management
                       Presentation                       Information




                                                                            Communications
                                                                            with other areas
    Level4
                   Operational and                      Plant Production
                     Production                          Scheduling and
                    Supervision                            Operational
                                                          Management




                                                                            supervisory systems
                                                                              Communications
                                                         Inter-area




                                                                                 with other
                       Supervisor’s                    Coordination
    Level3               Console                    (Shop coordination)



                       Supervisor’s                         Work Cell
                                                        (Direct Numerical




                                                                            Communications
                                                                             control systems
    Level2               Console                             Control)




                                                                               with other
                        Operator’s                     Work Station
                         Console                      (Computerized
                                                    numerical Control)

    Level 1
                                         Dedicated
                                       Programmable
                                      Logic Controllers



                                          PROCESS
CORP




[source - find]
                                                                MGMT


                                                                  Corporate
                                                                  Performance reporting
                  External                                                                 operational
                  Entities                                                                performance
                                                                                              Policies


                                                                MKTG            Human
                    PURCH                      RD&E              and                                     ACCT
                                                                                                                                                                                                                     page 507




                                                                SALES           RES



                        raw material, energy     Requests for      Status of      Manpower                 Cost
                        and spare parts          information,      Production     performance              reporting
                         orders                  plant tests       orders        data and reqmts


                                                        FACTORY LEVEL 0.0
                                                                                                                       • Report interfacing to corporate management and staff functional entities from the factory
page 508




   • The Shop Floor Production Model (SFPM):
    [ source - find]



                 Level                    Sub-Activity                Responsibility
                                          Supervise shop              Supervising and coordinating
      4          Section/            floor production process     the production and supporting the
             Area                                                 jobs and obtaining and allocating
                                                                  resources to the jobs.
                                          Coordinate shop             Sequencing and supervising
      3          Cell                     floor production        the jobs at the shop floor produc-
                                     process                      tion process
                                          Command shop                Directing and coordinating the
      2          Station             floor production process     shop floor production process
                                          Execute shop floor          Executing the job of shop
      1          Equipment           production process           floor production according to com-
                                                                  mands



   The ISO Reference Model for Factory Automation adds a couple of layers
    [ source - find]


    Level/                 Area of Con-         Responsibility          Basic Functions
Hierarchy           trol
    6/                     Managing the         Achieving the           Corporate management
    Enterprise      corporation            enterprise’s mission         Finance
                                           and managing the             Marketing and sales
                                           corporation                  Research and Development
page 509




       Level/               Area of Con-          Responsibility           Basic Functions
Hierarchy            trol
       5/                   Planning Pro-         Implementing             Product design and production
       Facility or   duction                 the enterprise func-     engineering
plant                                        tions and planning            Production management (upper
                                             and scheduling pro-      level)
                                             duction                       Resource management (upper
                                                                      level)
                                                                           Procurement (upper level)
                                                                           Maintenance management
                                                                      (upper level)
       4/                   Allocating and        Coordinating             Production management (lower
       Section or    supervising materi-     production and           level)
area                 als and resources       obtaining and allocat-        Procurement (lower level)
                                             ing resources to jobs         Resource management (lower
                                                                      level)
                                                                           Maintenance management
                                                                      (lower level)
                                                                           Shipping
                                                                           Waste material treatment
       3 / Cell             Coordinating          Sequencing and           Shop floor production (cell level)
                     multiple machines       supervising shop
                     and operations          floor jobs and super-
                                             vising various sup-
                                             porting services
       2 / Station          commanding            Directing and            Shop floor production (station
                     machine sequences       coordinating the         level)
                     and motion              activity of the shop
                                             floor equipment
page 510




    Level/              Area of Con-       Responsibility         Basic Functions
Hierarchy        trol
    1 / Equip-          Activating         Taking action on       Shop floor production (equip-
ment             sequences and         commands to the        ment level)
                 motion                shop floor equipment
page 511


   • A LAN (Computer Network) Hierarchy for Shop Floor Control [source - find]
                                          E n te rp rise L A N
L ev e l 6 :
E n terp rise


                                 F ac to ry B ac k b o n e L A N
L ev e l 5 :
F ac ility o r P lan t


                                    S ec tio n                          S e ctio n                        S ec tio n
                                 C o n tro lle r A                   C o n tro lle r B                 C o n tro ller C


                                                                        sim ila r to A                   sim ila r to A
                                                S ec tio n A L A N
L ev e l 4 :
S ec tio n o r A re a

                                                  C ell                                             C ell
                                            C o n tro ller A                                  C o n tro lle r B


                         C e ll A L A N                                       C ell B L A N
L ev e l 3 :
C e ll



                               D e v ic e               D e v ic e                  D e v ice               D e v ice
L ev e l 2 :               C o n tro ller A          C o n tro ller B           C o n tro lle r A        C o n tro ller B
S tatio n




L ev e l 1 :
E q u ip m en t
                              D ev ic e                  D e v ice                    D ev ice                   D e v ic e
                           D ev ice                    D e v ic e                  D e v ice                   D ev ic e
                          D e v ice                   D ev ice                    D e v ic e                  D ev ice
page 512


   • Typical Architecture for Manufacturing Components [ update]



     Item              Equipment                Workstation             Cell
     EXAM-             Lathe, Mill, T-10        Robot tended            Variable Mission
PLES              Bridgeport Series I      Machine Center, Car-     System, Several Inte-
                  IBM 7545 Robot           trac Material Handling   grated workstations
     Hardware                              System
                       Mark Century             Allen-Bradley           Windows NT,
     Controller   2000, Accuramatic        PLC-5, IBM-PC, etc.      SUN workstation, etc.
Hardware          9000, Custom-single-
                  board system.
     Type Con-         Single-board pro-        PLC, PC, Mini-          PC, Microcom-
troller           cessors, Machine tool    computer                 puter, Super-MiniCom-
                  controller, Servo-Con-                            puter
                  troller, etc
     Language          Assembler, Part          C, Ladder logic,        C, LISP, FOR-
Application       programming, Robot       Pascal and other         TRAN, and other high
                  programming, etc.        sequential languages     level languages
     Memory/           8k-128k RAM              32M RAM, >1M            128M RAM,
Size Require-     plus custom ROM,         Hard Drive               >1Gigabyte Hard drive
ments             EPROM, etc.
     Response          < 10-3 sec               < 1 sec                 < 20 sec
Time
     Machines/         1-1 connect              1-many                  1-many
Interconnects                                   1-[1,8] Machine         1-[1-15] worksta-
                                           tools,                   tions
                                                1-[1-50] Material
                                           handling
page 513


    • Functional Breakdown of Control Architecture




                       Equipment                          Workstation                     Cell
       Planning        Tool selection, parame-            •Resource allocation            Batching, Workload
                  ter specification, tool path     jobs                           balancing between worksta-
                  refinement, GMT code, tool              •Batch splitting and    tions, Requirements planning
                  assignment to slots, job setup   equipment load balancing               Task allocation to
                  planning                                                        workstations

       Planning        Milliseconds - Minutes             Minutes - Hours/Days            Hours - Days/weeks
 Horizon

       Schedul-        •Operation sequencing              •Sequence equipment             •Assignment of due
 ing              at individual equipment          level subsystems               dates to individual worksta-
                                                          •Deadlock detection     tions
                                                   and avoidance                          •Look ahead ES/simu-
                                                          •Gantt chart or E.S.    lation based scheduling
                                                   based scheduling                       •Optimization based
                                                          •Buffer management      tech
                                                                                          •Batch sequencing

       Control         •Interface to worksta-             •Monitor equipment              Organizational control
                  tion controller                  states and execute part and    of workstations, Interface
                       •Physical control           information flow actions       with MPS, generation of
                  (motion control at NC and        based on states                reports, etc.
                  robot pick and place level)             •Synchronize actions
                       •Execution of control       between equipment (eg.
                  programs (APT, AML, etc.)        robot & machine while load-
                                                   ing/unloading parts)
                                                          • Ladder logic execu-
                                                   tion




    • In all of these models we must consider the value of the information being passed. At the
low level control stages, information that is more than a few seconds old may be completely
page 514


worthless, while the same information at the higher level may be valuable for quality tracking
months later.


    • We can draw part of a simple flow chart that illustrates a simple CIM system. The elements
shown include a PLC, NC machine, and stand alone sensors. These are all integrated by a single
computer running cell control software.




 Operation             Cell status and
 plans                 quality reports



                Cell
                Controller
                (IBM PC)




   NC                  NC                                             Quality
   Programs            Status                                         Measurements



       CNC                   Actuators,      CNC               Actuators,       Gauges
       Controller            Structure,      Controller        Sensors          and Meters
                             Sensors




18.3 COMPUTER CONTROLLED BATCH PROCESSES

    • The nature of Batch processes,
       - Batch processes deal with discrete quantities of raw materials or products.
       - batch processes allow the tracking of these discrete quantities of materials or products
       - batch processes allow more than one type of product to be processed simultaneously, as
page 515


           long as the products are separated by the equipment layout.
    - Batch processes entail movement of discrete product from processing area to processing
           area
    - Batch processes have recipes (or processing instructions) associated with each load of
           raw material to be processed into product.
    - Batch processes have more complex logic associated with processing than is found in
           continuous processes
    - Batch processes often include normal steps that can fail, and thus also include special
           steps to be taken in the event of a failure.

 • The nature of steps in a batch process,
    - Each step can be simple or complex in nature, consisting of one or more operations
    - Generally, once a step is started it must be completed to be successful.
    - It is not uncommon to require some operator approval before leaving one step and start-
             ing the next.
    - There is frequently provision for non-normal exits to be taken because of operator inter-
             vention, equipment failure or the detection of hazardous conditions.
    - Depending on the recipe for the product being processed, a step may be bypassed for
             some products.
    - The processing operations for each step are generally under recipe control, but may be
             modified by operator override action.
 • A typical process step
                                                                     Operator or
            Operator or                  Operator                    Recipe Hold at
            Recipe Bypass                Abort                       Completion
            Command                      Command                     Command




                    Yes

                         No Perform Step                              Hold
Previous     Bypass Step                                             at step      No Next
Step                        Operation                              completion        Step

                                                                        Yes
                                               Fault Detected
                                               or Operator Abort

                                                Fault Exit to
                                                pre-defined step
page 516




18.4 PRACTICE PROBLEMS

    1. List 5 industries that are well suited to integration, and 5 that are not. Indicate why you
think so.


    2. In an automated factory there as many as six levels of control. Discuss the equipment
available in the lab and how this relates to the 6 level model of factor floor control.

   ans.
            The lab equipment (right now) only satisfies the first couple of levels. You can




    3. Information drives an automated factory from the initial entry of geometry in CAD, to the
final production of parts with CAM. Discuss how data networks support this and the impact of
open network standards.


    4.




18.5 LABORATORY - WORKCELL INTEGRATION


Purpose:
       All of the components explored in the laboratories of previous weeks will be integrated
               into a final working cell.

Overview:


Pre-Lab:
page 517


          To be determined.

In-Lab:
          1. To be determined.

Submit (individually):
      1. To be determined.
page 518



19. MATERIAL HANDLING

    • Basic purpose is to provide automatic transfer of workparts between automated machines,
and interface with individual work stations.




19.1 INTRODUCTION

    • Basic layouts for material handling include,
       - lines - stations arranged along a fixed part transfer path.
       - batch - stations are grouped by function and batches of raw materials/WIP are brought in
                batches
       - job shop - individual parts are carried through one or more stages by one worker
       - job site - equipment is brought to the work

    • These transfer systems can also be categorized by their timing approach,
       - synchronous - the entire line moves parts with a fixed period cycle. This is well suited to
               mass production of similar products.
       - asynchronous - parts are moved as completed or needed. Often buffers are required, but
               this is more tolerant of problems than synchronous systems.
       - continuous - the product flows by without stopping

    • Basic Requirements,


       • Random, independent movement of palletized workparts between workstations in the
               FMS
               - pallets can flow from any station to any other
               - parts are mounted in pallet fixtures
               - pallets can move independently to avoid interference
       • Temporary storage or banking of workparts
               - queues allow parts to wait for machines, thus increasing efficiency
       • Convenient access for loading and unloading workparts
               - easy to do manual load/unload.
               - automatic loading/unloading of parts at workstations
               - can load/unload from either side of system
       • Compatible with computer control
       • Provision for future expansion
page 519


         - modular extensions to system are desirable

  • Adherence to all applicable industrial codes
         - safety, noise, etc.
  • Access to machine tools
         - allow unobstructed floor level access to each workstation
  • Operation in shop environment
         - must be reliable when exposed to metal chips, cutting fluids, oil, dirt, etc.

• Common type of Material handling systems
  - power roller conveyors




  - power and free overhead conveyors




  - shuttle conveyors
  - floor “towline” systems
page 520




     - robots (in a limited sense)
     - indexing (geneva mechanism)
     - walking beam




19.2 VIBRATORY FEEDERS

  • When small parts are hard to orient we can dump them in a vibratory feeder.


  • The vibrations cause parts to ‘hop’ forward.


  • Various cutouts, tracks, etc are added to sort parts.
page 521


19.3 PRACTICE QUESTIONS

    1. What are pallets used for?
    (ans. to acts as holders for work that is being transported)




    2. List possible methods for guiding an AGV.
    (ans. guide wire, vision, painted lines, chain)




19.4 LABORATORY - MATERIAL HANDLING SYSTEM

• For this lab the class will be divided into two halves. One group will do part A, the other group
   will do part B. Both groupswill have to work together for a successful lab.

• System Objective: When done the system should be able to pass a shuttle in a continuous loop.



19.4.1 System Assembly and Simple Controls

Purpose:
       The SoftPLC and devicenet will be used to control the material handling system Lock and
             go stations.

Overview:
       The material handling system is designed in a modular format. Each of the track sections
             can be disassembled and reassembled in other configurations. In total there are,
             4 turnstations
             6 straight track sections (2 have stands for suspending overhead gear)
             2 90 degree track sections
             1 conveyor system for a straight track section
             12 shuttles
       The material handling system will be outfitted with the devicenet based controls system to
             move the shuttles around the system. This system will be added to in later labs.
             The shuttles are actuated using solenoid valves for an air supply. By actuating the
             “lock and go” stations the cart can be stopped, or ejected.
page 522


Pre-Lab:
       Examine the system components and determine (as a group) how the system will work.
             Implement ladder logic to control the system.

In-Lab:
          1. Connect the track sections.
          2. Connect solenoid valves to the “lock an go” stations - except on the turnstations. Add
                 sensors to detect the presence of a shuttle
          3. Wire the solenoid valves to the softPLC and write the ladder logic required to control
                 the stations.

Submit:
      1. All design work.
page 523


19.5 AN EXAMPLE OF AN FMS CELL



19.5.1 Overview
    • A workcell has been constructed using one light industrial robot, and one NC milling
machine. Some automated fixtures are also used.
    • All of the devices in the workcell are controlled from a single Sun computer. This is an
engineering workstation with UNIX. Thus, it is capable of multitasking (running more than one
program at once).
    • Software drivers, interfaces, and applications have been developed, to aid in teaching and
demonstration.
    • The following pages will describe the interfacing in the workcell, as an example of the con-
nection between process control computers and a plant floor computer. A project in development
will be discussed for networking Plant Floor (and higher) computers.
page 524




                                          FMS Cell Connection Diagram
                                       Plant Floor Control & Up (Network Based Level)




                                     Ethernet                                     Ethernet



                                                   Sun Computer (“Sunbane”)
      Sun Computer (“RA”)
                                                                         RS 232
                              Interface Level




                                RS 232                     RS 232
           RS 232

                                                                          IBM PC Compatible
                                                                          (Running CAM/CAM
                                                                          Software)



Process Controllers

              CRS Robot Controller        Dyna Controller           Microbot Controller

                                Sensors and Actuator Level


rocesses


                               Conveyor Belt


                                                         DYNA NC
CRS Plus Robot           Pneumatic Vice               Milling Machine     Microbot Teach Mover
page 525




19.5.2 Workcell Specifications

   • Workcell Layout


                                                                NC Milling
     Conveyor                                NC Milling Machine Machine
                    Robot                                       Controller

                                                Pneumatic Vice
                                  gripper       Pneumatic Vice       Robot Controller
                                                Controller




                                             Sun 3/60 Computer



   • Devices:
      1 Sun Computer
      2. CRS-Plus robot
             • A five axis, articulated robot arm
             • Communicates over an RS232 serial data line
             • Interprets a language called RAPL
             • Has 16 Digital I/O lines
             • Uses a pneumatically controlled gripper
             • The robot controller is 8088 based
      3. DYNA-Mite Milling Machine
             • A 3-axis 2.5D milling machine
             • Uses a proprietary NC code
             • Can be run locally, or remotely (over RS232 serial communication lines)
             • Programs may be executed as they are entered, or when they are completely
                     ordered
             • Can handle objects of dimensions 6” by 5” by 4”
page 526


             • Can machine plexiglass, wax, aluminum, steel (at low feed rates)
     4. Pneumatic Vice
             • Has a maximum opening of 4 inches
             • Has a maximum travel of 1 inches
             • Controlled by a pneumatic solenoid
             • Pneumatic solenoid controlled from CRS-Plus robot controller
     5. Conveyor
             • A former undergraduate student project
             • Activated electronically by the CRS-Plus robot controller
     6. Fixtures (for making customized keytags)
             • These are highly specific to the task being performed
             • Parts Feeder - Provides a structured environment so that the robot may easily
                     pick up the parts.
             • Robot Gripper - Designed to provide a reasonable reach into the vice (and parts
                     feeder), and to firmly grasp the workpiece.
             • Vice Fixture - Designed to hold the workpiece at a level fixed height, and has a
                     location for drill through of the keytag. This part does not effect the travel
                     of the vice.



19.5.3 Operation of The Cell
page 527


• Developed/Proprietary software in the workcell

 User
 Interface                         User Interface                     Programming
 Routines      (written with the Sunview Window Interface Library)       Module
 on Sun




 Device          Robot        Vice      Conveyor    DynaMill
 Specific        Control     Control     Control     Control
 Routines      Subroutines Subroutines Subroutines Subroutines
 on Sun



 Serial                                                                  Software
 Interface                                                               Written
 Routines                  Serial Communication Subroutines
 on Sun



 Controllers
 and
 proprietary                                             DynaMill        Hardware
                       CRS-Plus Robot Controller         Controller
 Operating                                                               Purchased
 Systems                                                                 or Built




               CRS-Plus     Pneumatic      Conveyor     DynaMill
 Hardware                                                Milling
                Robot         Vice           Belt
                                                        Machine


         High Level User Interface ( or application program)

         Low Level Device Drives and Communication Routines

         Hardware and Controllers Supplied by Manufacturers (except Conveyor)
page 528


    2.1.4 - Example of Robot and Vice Software Driver Use
void demo()
{
      static double a1, a2, a3, a4, a5;
                                                            Set up Robot
      crs_init();
                                                            Set speed to 40% of Maximum
      crs_speed(40.0);

      crs_open();                                           Open the Gripper
      crs_close();
                                                            Close the Gripper
      conv_on();
                                                            Turn on Conveyor
      crs_xy_r_move(-5.0, -5.0, 0.0);
      crs_xy_status(&a1, &a2, &a3, &a4, &a5);
                                                            Move Robot with relative
      conv_off();                                           Cartesian Coordinates
      crs_xy_a_move(a1+3.0, a2+2.0, a3);
                                                            Return Cartesian Position of
      crs_depart(-2.0);                                     End Effector
      crs_depart(2.0);
                                                            Turn off Conveyor
      crs_home();
      crs_r_move(0.0, 10.0, 0.0, 0.0, 0.0);
      crs_speed(100.0)
                                                            Move Robot to absolute
                                                            Cartesian Position
      vice_closed();
                                                            Move robot gripper 2” forward
      crs_a_move(-90.0, 0.0,0.0,0.0,0.0);

      vice_open();
                                                            Move robot gripper 2” backward
}
                                                            Move robot to home position
                                                            Move robot in relative joint
                                                            coordinates
                                                            Close the Vice
                                                            Move the Robot in
                                                            Absolute Joint Coordinates
                                                            Open the Vice
page 529


• NC code Example (for the Dyna Milling Machine)
  000 START INS 01                              Start Program in inches
  001 TD = 0.125
                                                Set Tool Diameter
  002 FRXY = 10
  003 FRZ = 4                                   Set Feed Rates
  004 SETUP > zcxyu                             Set Absolute Zero Position
  005 GOY -.625
  006 GOZ -.125                                 Move to Start Position
  007 GRa -180           A
  008 ZERO AT
  009 X .634
  010 Y .5                B
                                                            2.00”
  011 GOr .125
  012 a 90
  013 GRa -30                                           B
  014 > REF COODS                                                       30°
                                        Y
  015 ZERO AT                                                                          0.50”
  016 X 1.50                                    Z                             C
  017 Y 0                 C                         X
  018 GOr .125                                                                     D
  019 a 60                                                                             0.50”
                               A
  020 GRa -60
                                                                                   E
  021 > REF COODS
                                                                    F
  022 ZERO AT
  023 X 1.5
  024 Y -0.3                                                              0.20”R
                         D
  025 GOr .125
  026 a 0
  027 GRa -90             E
  028 GRX -1.3            F
  029 END
                                            End Program
page 530


• An Example of the Dyna Mill Software Drivers
void demo()
{
     char ret[100];
     /* Initialize Dyna Mill and check for failure */
     if(dyna_init() == NO_ERROR){
                       /* Send NC Program to Dyna Mill */
                       dyna_load(“/usr/people/cim/nc.code/test1.nc”);
                       /* Download program from NC Mill */
                       dyna_download(“/usr/people/cim/nc.code/test”);
                       /* Send program to mill 1 step at a time */
                       dyna_step(“/usr/people/cim/nc.code/test2.nc”);
     }
     /* Deinitialize mill */
     dyna_kill();
}
page 531


• A User interface for Workcell Control




                                                            Robot Control
                                                              Subwindow




                                                       Vice and Conveyor
                                                                 Controls


                                                        Dyna Mill Control
                                                             Subwindow



                                                        Key Tag Programs
                                                     (Also uses Dyna Mill)


                                                            Programming
                                                           Master Control
page 532


• Actual Communication with devices, via a report window
page 533


• Workcell Programming window




• Advantages:
  • UNIX Based system allows easy control of cell in modes which are both parallel and/or
          concurrent
  • A blend of high level computers with low level devices allows for a very modular sys-
          tem, with a variety of computing resources.
  • Synchronization of processes is very simple.
  • Allows rapid reconfiguration of the workcell.
  • This workcell will perform all of the basic CAD/CAM/CIM functions.
  • The hierarchical design of software tools has simplified the development of new applica-
          tions.

• Disadvantages:
page 534


       • Many Equipment manufacturers have not considered this type of control (they prefer
              stand alone modes), and thus their machines lack self calibration features, and soft-
              ware is made to be user interactive, and batch, but is not very friendly for software
              applications.
       • Requires technical people to operate the equipments.


19.6 THE NEED FOR CONCURRENT PROCESSING

    • An individual computer is not powerful enough to control an entire factory. And, a single
program would be too complex. Therefore, there is a need for many computers and programs
which interact.
    • The example below involves two programs. The first program will control the robot, and the
second will cut key tags with the NC machine.
    • While the keytags are being cut, the robot program will move pegs around in the cell. This
requires that the control software be very complex, or that two programs be used.
    • if two programs are used, then some communication is required for sequencing tasks in the
work cell.
    • Concurrent tasks in the workcell use message passing between programs,
page 535




          Program #1                                              Program #2

               Start                                                     Start


                                                                       Call for
                                                                      New Part

                 Is                        messages                   Wait for
            Dyna Mill        Yes           passed through           Part Loaded
                                           file #1
            Waiting for
              Part ?                                                  Move to
                                                                   Milling Position
                                   Load
                                   Part                                Mill out
                  No
                                                                       Keytag

                                                                      Move to
                                                                   Unload Position

                                                                      Call for
                                                                 Unloading Keytag
                Is           Yes
            Dyna Mill                      messages
            Done with                      passed through              Wait for
              Part ?                       file #2                 Part Unloaded


                                Unload
                    No           Part                                     Is
                                                                       Another        Yes
                                                                        Name
                                                                        Left ?

             Swap a
              Peg                                                                No
                                                                         Stop




    • Strategies for Concurrent processing, involve how the processes are split apart, and how
they communicate,
       - Have a number of processes which communicate directly to one another (point to point).
               This is synchronous and well suited to real-time control.
       - Use a buffered message passing system. This allows asynchronous communication
               between processes running at different speeds, which do not do real-time control.
       - Remote Procedure Calls allows one program to run other programs remotely. This is
               suited to well defined problems, but every program must have knowledge of the
               other computers in the network.
page 536




19.7 PRACTICE PROBLEMS



  1. What is concurrent (parallel) processing and why is it important for workcell control?
  (ans. to allow equipment to do other tasks while one machine is processing)




  2. What is meant by the term “Device Driver”?
  (ans. a piece of hardware that allows a connections to a specific piece of hardware)
page 537



20. PETRI NETS



20.1 INTRODUCTION

    Petri nets are useful tools for modelling systems with control flow. In particular they aid in
modelling systems with concurrency, and parallelism. A set of routines have been developed at
UWO to serve as the basis for a manufacturing simulation. The routines will support a number of
various Petri net functions. The basic operation of the Petri net may be simulated. As well the
EOR transitions will also be modelled. An attempt has been made to add ‘colors’ to the tokens,
but at the present there is insufficient information (i.e., no references) to verify the implementa-
tion.


    The routines have been written in a user friendly way to allow simple application interface.
Places and Transitions are specified with textual names. A brief theory of petri nets follows.




    • These are like state diagrams, except multiple states can be active at the same time.


    • Other techniques, such as GRAFCET, are based on Petri nets.




20.2 A BRIEF OUTLINE OF PETRI NET THEORY

    There are four basic elements in a petri net; places, transitions, arcs, and tokens. If we are to
think in terms of a factory, tokens are equivalent to work parts. Arcs are the paths the work will
follow through the factory. Places are buffers where parts are stored temporarily, and transitions
are equivalent to machines where the parts are used to make new parts.
page 538




                     Token            Place                  Arc            Transition



  stock from    stock from           stock from
   inventory      supplier              cutter

            feeder                     hopper


         Bolt Maker                  Nut Maker

                                                    Petri Net Model
        Bolt Hopper                  Nut Hopper


                Screwing Machine


                     Finished Part



    The basic operation is that tokens are introduced to the network, and then transitions are fired
in different orders, and thus tokens are created and destroyed at the transitions. The example
below follows the petri net for a few cycles. The first figure shows the Petri Net with the initial
markings.
page 539




                                       this transition was fired




this transition was fired
page 540




                                                                       this transition was fired



    The reader should note that there are a few interesting properties found in Petri nets.


    • Transitions are fired when all of their inputs are satisfied, and the user specifies that transi-
tion.
    • Most analysis of petri nets uses random firings of the transitions to obtain statistical perfor-
mance.


    Other basic references to the petri net theory are available in Peterson [1981] and Reisig
[1985].




20.3 MORE REVIEW

    • Ideal for parallel control problems
page 541




                                   Token - Indicates place active (control)


        Place - Indicates part of a system state (as before). If there is a token
               here, the place is valid, or active.




              Transition - This will wait until all inputs have a token. Those tokens
                          are destroyed and new tokens are put into all the outputs




e.g. An example of basic operation


                                     The Petri Net (with no tokens)
page 542




     Initial State : The tokens are added below, based upon the system




     Step 1 : One of the states gives up a token (this is arbitrary and depends on the state)




transition
condition
fires




     Step 2 : Another state gives up a token (again arbitrary)

                                        In this case the transition can fire because both
                                           input places now have tokens, we are only wait-
                                           ing for the condition to occur.
page 543




   Step 3: Here the conditions of the transition are met. The two input tokens are con-
      sumed and a new token is created for the output place.




        Step 4: We see the condition for the transition met.




     This continues on indefinitely.........




• Basic logic functions are shown below,
page 544




                                          and
    exclusive or
                                                                   regulator




                                     or                                        action

      loop/repeat




if/wait
(state transition)
                       synchronize


                                           state machines (only 1 input/output on transitions)




  • We can model various logic functions with Petri nets,
page 545




                                       And - Both inputs must be present to fire




      Recirculator - keeps only one action at a time

                               Or - one or the other input will start the process

              If - this state can chose to send the token on either arc


                                  Parallel - both processes will run in parallel at the same time



    • Reachability allows us to determine if a state (set of places) is possible given an initial con-
dition.


    • Boundedness determines whether the number of states will be controlled, or grow/shrink.




    • Deadlock and liveliness - will the controller find itself unable to continue.
page 546




    • The procedure for producing ladder logic and other programs from the Petri Nets, is identi-
cal to producing Ladder Logic for SFC diagrams.
page 547




e.g. Petri Net for a single cup coffee maker


                   money                                         start
                   added                                         cleaning

                                                        cleaning done

                                                          cleaning
                                                          off




                                          start water                       start
                                          heater                            grinder

             drop cup
                                    temp. sensor                     3 sec delay


                                          heater off                        stop
                                                                            grinder



                                                                        cup removed
                                                        filter
                                                        coffee

                                  10 sec delay

                                        pour
                                        coffee


             Try:
                1. Add a coffee strength selection to the Petri Net.
                2. Draw the petri net above using a Parallel Process Flowchart
                3. Develop some ladder logic for the petri net diagram
page 548


    • Petri nets have been used for the modeling, control and validation of the control model
[Teng and Black, 1988]




20.4 USING THE SUBROUTINES



20.4.1 Basic Petri Net Simulation

    The subroutines are applied in a methodical manner. Before the user can integrate the subrou-
tines into their program, they must draw out the petri net, and label all places and transitions. The
example given above is illustrated below.


                                                           p3



             p1        t1        p2        t2                     t4    p5




                                                                       t3
                                                           p4


    After these labels are determined, they are defined using the petri net subroutines. The arcs in
the petri net are also defined in the program. There are defined with respect to the transitions. That
is to say that an arc is an input to, or output from a transition. After the petri net structure has been
defined, tokens may be placed in the places of the net. The tokens are as given in the previous
example.
page 549




                                                               p3



              p1         t1       p2         t2                     t4    p5




                                                                         t3
                                                               p4


    The transitions are then selectively fired in the net, by function calls in the program. This pro-
gram also has calls to functions which print the petri net structure after each transition. The code
is show below for the example above.




   #include <stdio.h>
   #include <stdlib.h>
   #include <string.h>

   #include “global.h”
   #include “petri.h”


   int test1()
   /*
    * BASIC TEST NET (Peterson book, 1981, pg. 19)
    */
   {
         static int error;
         static struct petri_net net;
         static int p1, p2, p3, p4, p5;
         static int t1, t2, t3, t4;

         error = petri_init(&net);
         p1 = petri_place(&net, “p1”);
         p2 = petri_place(&net, “p2”);
         p3 = petri_place(&net, “p3”);
         p4 = petri_place(&net, “p4”);
         p5 = petri_place(&net, “p5”);

         t1   =   petri_transition(&net,   “t1”);
         t2   =   petri_transition(&net,   “t2”);
         t3   =   petri_transition(&net,   “t3”);
         t4   =   petri_transition(&net,   “t4”);

         petri_input(&net, p1, t1, 1);
         petri_input(&net, p2, t2, 1);
         petri_input(&net, p3, t2, 1);
page 550


            petri_input(&net,    p4,    t2,    1);
            petri_input(&net,    p4,    t3,    1);
            petri_input(&net,    p4,    t3,    1);
            petri_input(&net,    p5,    t4,    1);

            petri_output(&net,    p2,    t1,    1);
            petri_output(&net,    p3,    t1,    1);
            petri_output(&net,    p4,    t1,    1);
            petri_output(&net,    p4,    t1,    1);
            petri_output(&net,    p2,    t2,    1);
            petri_output(&net,    p5,    t3,    1);
            petri_output(&net,    p3,    t4,    1);
            petri_output(&net,    p4,    t4,    1);

            petri_add_tokens(&net, p1, 1);
            petri_add_tokens(&net, p4, 2);
            petri_add_tokens(&net, p5, 1);

            petri_print(&net);

            petri_event(&net, t4);
            petri_print(&net);

            petri_event(&net, t1);
            petri_print(&net);

            petri_event(&net, t3);
            petri_print(&net);

            return error;
   }




       As can be seen this method of implementation is very simple. The user is able to define a
number of nets, and refer to transitions and places by name.




20.4.2 Transitions With Inhibiting Inputs

       In some cases we want to prevent a transition from firing. To do this, the idea of inhibiting
inputs has been proposed. If a transition has an inhibiting input from a place, that has any tokens
in it, then the transition cannot fire. Otherwise the transition may fire normally. A sample net has
been devised for this case, it is seen below.
page 551




                        p1                                                p2

                                                      p3
                              t1                                               t2



                                                                Inhibiting input
                                                        p4
                        p5                                                p6


                             t3
                                                                     t4



 The program below shows that the inhibiting input is simply defined when the arc is defined.




int test2()
/*
 * INHIBITED    TEST NET (Peterson book, 1981, pg. 196)
 */
{
      static     int error;
      static     struct petri_net net;
      static     int p1, p2, p3, p4, p5, p6;
      static     int t1, t2, t3, t4;

      error = petri_init(&net);
      p1 = petri_place(&net, “p1”);
      p2 = petri_place(&net, “p2”);
      p3 = petri_place(&net, “p3”);
      p4 = petri_place(&net, “p4”);
      p5 = petri_place(&net, “p5”);
      p6 = petri_place(&net, “p6”);

      t1   =   petri_transition(&net,      “t1”);
      t2   =   petri_transition(&net,      “t2”);
      t3   =   petri_transition(&net,      “t3”);
      t4   =   petri_transition(&net,      “t4”);

      petri_input(&net,      p1,   t1,   1);
      petri_input(&net,      p2,   t2,   1);
      petri_input(&net,      p3,   t2,   1);
      petri_input(&net,      p5,   t3,   1);
      petri_input(&net,      p3,   t4,   INHIBIT);
      petri_input(&net,      p4,   t4,   1);
      petri_input(&net,      p6,   t4,   1);
page 552



           petri_output(&net,   p1,   t1,   1);
           petri_output(&net,   p3,   t1,   1);
           petri_output(&net,   p2,   t2,   1);
           petri_output(&net,   p4,   t3,   1);
           petri_output(&net,   p5,   t3,   1);
           petri_output(&net,   p6,   t4,   1);

           petri_add_tokens(&net,     p1,   1);
           petri_add_tokens(&net,     p2,   1);
           petri_add_tokens(&net,     p5,   1);
           petri_add_tokens(&net,     p6,   1);

           petri_print(&net);

           petri_event(&net, t1);
           petri_print(&net);
           petri_event(&net, t3);
           petri_print(&net);
           petri_event(&net, t4);
           petri_print(&net);
           petri_event(&net, t2);
           petri_print(&net);
           petri_event(&net, t4);
           petri_print(&net);

           return error;
   }




20.4.3 An Exclusive OR Transition:

       The inhibitory inputs are complimentary to the exclusive or function. Thus another research
proposed an Exclusive or transition which will fire when one (and only one) input is from a place
with tokens. An example of a problem using this, a ring shift register was modelled. This net is
modelled as shown below.
page 553




                                                    p7



                                t1                  t2                t3

                                     p1             p3                 p5

                                     t4             t5                 t6

                                          p2               p4               p6

                                                                p10
                             p8                p9


                           EOR transition                 t7




    In this example the EOR transition is marked with a plus in a circle (at ‘t7’). When run, a
token will appear in p1, p3, and p5 in a repeating cycle. The program to set this up is seen below.




   int test3()
   /*
    * EOR TEST NET (Peterson book, 1981, discussed pg. 190)
    * This is for a single bit shifter
    */
   {
         static int error;
         static struct petri_net net;
         static int p1, p2, p3, p4, p5, p6, p7, p8, p9, p10;
         static int t1, t2, t3, t4, t5, t6, t7;

         error = petri_init(&net);
         p1 = petri_place(&net, “p1”);
         p2 = petri_place(&net, “p2”);
         p3 = petri_place(&net, “p3”);
         p4 = petri_place(&net, “p4”);
         p5 = petri_place(&net, “p5”);
         p6 = petri_place(&net, “p6”);
         p7 = petri_place(&net, “p7”);
         p8 = petri_place(&net, “p8”);
         p9 = petri_place(&net, “p9”);
page 554


    p10 = petri_place(&net, “p10”);

    t1   =   petri_transition(&net,   “t1”);
    t2   =   petri_transition(&net,   “t2”);
    t3   =   petri_transition(&net,   “t3”);
    t4   =   petri_transition(&net,   “t4”);
    t5   =   petri_transition(&net,   “t5”);
    t6   =   petri_transition(&net,   “t6”);
    t7   =   petri_transition(&net,   “t7”);

    petri_input(&net,    p6, t1, 1);
    petri_input(&net,    p7, t1, 1);
    petri_input(&net,    p2, t2, 1);
    petri_input(&net,    p7, t2, 1);
    petri_input(&net,    p4, t3, 1);
    petri_input(&net,    p7, t3, 1);
    petri_input(&net,    p1, t4, 1);
    petri_input(&net,    p3, t5, 1);
    petri_input(&net,    p5, t6, 1);
    petri_input(&net,    p8, t7, 1);
    petri_input(&net,    p9, t7, 1);
    petri_input(&net,    p10, t7, 1);

    petri_output(&net,    p1, t1, 1);
    petri_output(&net,    p3, t2, 1);
    petri_output(&net,    p5, t3, 1);
    petri_output(&net,    p2, t4, 1);
    petri_output(&net,    p8, t4, 1);
    petri_output(&net,    p4, t5, 1);
    petri_output(&net,    p9, t5, 1);
    petri_output(&net,    p6, t6, 1);
    petri_output(&net,    p10, t6, 1);
    petri_output(&net,    p7, t7, 1);

    petri_type_transition(&net, t7, EOR);

    petri_add_tokens(&net, p1, 1);

    petri_print(&net);

    petri_event(&net, t4);
    petri_print(&net);
    petri_event(&net, t7);
    petri_print(&net);
    petri_event(&net, t2);
    petri_print(&net);
    petri_event(&net, t5);
    petri_print(&net);
    petri_event(&net, t7);
    petri_print(&net);
    petri_event(&net, t3);
    petri_print(&net);
    petri_event(&net, t6);
    petri_print(&net);
    petri_event(&net, t7);
    petri_print(&net);

    return error;
}
page 555




20.4.4 Colored Tokens

     This section should be considered incorrect. The theory has not been found, although the
approach should adhere to the concept. The concept is that each token may now have a color, and
a second bit of private information. If a transition is specified to be colored, it will only fire if
tokens of the specified color are available at the inputs. The subroutines will then require that the
user supply a new set of instance information so that new tokens may be issued.


     The net used has tokens of mixed colors in it, an is seen below.


                                          p3




               p1                                                          p2




                             t1                                   t2



     The code is shown below. The reader should note that a second subroutine is used. This is
done because there is a bit of code which would be repeated for each update of tokens at the tran-
sition.




   int test4()
   /*
    * COLOR TEST NET (Assumed for now)
    * Two consumers of different colors and one input. The instances of tokens
    * are kept track of.
    */
page 556


{
      static   int error, i;
      static   struct petri_net net;
      static   int p1, p2, p3;
      static   int t1, t2;
      static   int color1 = 1, color2 = 2;
      static   int instance[20], instance_pnt;

      error = petri_init(&net);
      p1 = petri_place(&net, “p1”);
      p2 = petri_place(&net, “p2”);
      p3 = petri_place(&net, “p3”);

      t1 = petri_transition(&net, “t1”);
      t2 = petri_transition(&net, “t2”);

      petri_input(&net,    p1,   t1,   1);
      petri_input(&net,    p3,   t1,   1);
      petri_input(&net,    p2,   t2,   1);
      petri_input(&net,    p3,   t2,   1);

      petri_output(&net, p1, t1, 1);
      petri_output(&net, p2, t2, 1);

      petri_type_transition(&net, t1, COLORED);
      petri_type_transition(&net, t2, COLORED);

      for(i = 0; i < 20; i++) instance[i] = i;
      instance_pnt = 0;

      petri_add_color_token(&net,        p1, color1, instance[instance_pnt]);
      instance_pnt++;
      petri_add_color_token(&net,        p2, color2, instance[instance_pnt]);
      instance_pnt++;
      petri_add_color_token(&net,        p3, color1, instance[instance_pnt]);
      instance_pnt++;
      petri_add_color_token(&net,        p3, color2, instance[instance_pnt]);
      instance_pnt++;

      petri_print(&net);
      sub4(&net, t2, color1,      instance, &instance_pnt);
      petri_print(&net);
      sub4(&net, t1, color1,      instance, &instance_pnt);
      petri_print(&net);
      sub4(&net, t1, color1,      instance, &instance_pnt);
      petri_print(&net);
      sub4(&net, t2, color2,      instance, &instance_pnt);

      petri_print(&net);

      return error;
}




int sub4(net, transition, color, instance, instance_pnt)
struct petri_net *net;
int transition, color, *instance, *instance_pnt;
page 557


   {
            static int error, i, list[20], n, outputs;

         error = ERROR;
         if(petri_in_event(net, transition, color) == NO_ERROR){
                   if(petri_get_consumed(net, transition, &color, list, &n, &outputs) ==
NO_ERROR){
                            for(i = 0; i <= n; i++) instance[list[i]] = -1000;
                            if(petri_set_produced(net, transition,
&(instance[*instance_pnt]),outputs) == NO_ERROR){
                                      *instance_pnt += outputs;
                                      error = petri_out_event(net, transition);
                            }
                   }
         }

            return error;
   }




20.4.5 RELATIONAL NETS

       Relational nets will use various firing rules for each transition. This is by far the most useful
for varied manufacturing conditions. An example is seen below.
page 558




                                  p1                              p3
                                                  t1
                                      a b                              a
                                      ba



                                  p2                              p4
                                   abb                                 b
                                   a b



                  fired with rule 1                                        fired with rule 2




   p1                            p3                      p1                                    p3
        b          t1                                                        t1
                                       a                                                        abb
                                      b                       a                                 a ab



   p2                             p4                    p2                                     p4
    abb                           bab                     b                                    ab a
                                   ab                                                          b b




    This may be seen in the fifth test subroutine in the program.




20.5 C++ SOFTWARE

    At present there is one data structure used which holds structures for Places and for Transi-
tions. Arc information is stored (redundantly) in both. These are defined when a Place or Transi-
tion number is requested for one that does not exist. Each place and transition have reference
numbers, which are used by all other net functions.
page 559




    The software is still undergoing development, and testing, thus a list of functions would be
premature.




20.6 IMPLEMENTATION FOR A PLC

    • Consider the example of a parts buffer. Parts enter the buffer and are added to the top of the
stack. The part at the bottom of the stack is checked and sorted (ejected differently) based on a
quality check.
page 560




  keep
  alive
                                T1   part enters
   P1                                sorter
                                                                            no part at
                                                         waiting for        bottom of        part ejected
                                                         for next           sorter
                                                                                                     P8
        T6                 P7
                part not                                 P6
                entering                                                        T5
                                         P2
                sorter
                                                                        part at
                                                    T2                  bottom
                            part waiting                                of sorter

                                                                                     eject   P5
                                                                       part good     good
                                       part check
                                               P3
                                                                              T4

                                 part not good
                                                   T3


                                                   P4
                                           eject bad




    • This can be implemented in ladder logic, but unlike the sequential techniques, there may be
multiple tokens in the places, so counters are used to keep track of token counts.
page 561




first scan
                                 MOV
                                 source 1
                                 dest. CNT C5:1.ACC



                                 RES   C5:2


                                 RES   C5:3


                                 RES   C5:4


                                 RES   C5:5


                                 RES   C5:6


                                 RES   C5:7


                                 RES   C5:8



  GRT                                  eject bad
  source A C5:4.ACC
  source B 0


  GRT                                  eject good
  source A C5:4.ACC
  source B 0
page 562




                        part entering
   GRT                                     CTD
   source A C5:1.ACC                       C5:1
   source B 0

                                           CTU
                                           C5:2


                                           CTU
                                           C5:7


GRT                    GRT                        CTD
source A C5:2.ACC      source A C5:6.ACC          C5:2
source B 0             source B 0

                                                  CTD
                                                  C5:6


                                                  CTU
                                                  C5:3
                        part good
   GRT                                     CTU
   source A C5:3.ACC                       C5:4
   source B 0

                                           CTD
                                           C5:3
                        part good
   GRT                                     CTU
   source A C5:3.ACC                       C5:5
   source B 0

                                           CTD
                                           C5:3
page 563




           GRT                                         CTU
           source A C5:5.ACC                           C5:8
           source B 0

                                                       CTD
                                                       C5:5


           GRT                                         CTU
           source A C5:4.ACC                           C5:8
           source B 0

                                                       CTD
                                                       C5:4
                               part entering
           GRT                                         CTU
           source A C5:7.ACC                           C5:1
           source B 0

                                                       CTD
                                                       C5:7
                               part at sorter bottom
           GRT                                         CTU
           source A C5:8.ACC                           C5:6
           source B 0

                                                       CTD
                                                       C5:8




• For practice,
page 564




          turn the coffee machine petri net diagram into ladder logic




20.7 PRACTICE PROBLEMS

    1. Develop a Petri net to control a part sorting station. Parts enter on a conveyor belt and are
detected by a proximity sensor. The part can then be checked with a vision system that will signal
to the PLC that the part is good/bad. There are then two cylinders that can eject the part into a
good or bad bin.
page 565


20.8 REFERENCES

    Peterson, J.L., “Petri Net Theory and the Modelling of Systems”, Prentice-Hall, Inc., N.J.,
U.S.A., 1981.


    Reisig, W., “Petri Nets; An Introduction”, Springer-Verlag, 1985.
page 566



21. PRODUCTION PLANNING AND CONTROL


21.1 OVERVIEW

    • A design must be converted to a process plan before it may be produced.


    • But, if we have thousands of process plans, and hundreds of customer orders, with dozens
of parts in each, which machines do we use when to make the products? What parts do we need?


    • Traditionally jobs have been scheduled on a first come, first served basis. This resulted in a
lineup of various jobs waiting to be done at each work center.


    • When jobs are not scheduled efficiently, we often will get jobs sitting half completed, while
we wait for simple parts to be processed. This costs money, wastes time, takes up floor space,
makes the customer unhappy, etc.


    • Eventually computers were used to figure out how to schedule jobs so that parts were made
before they were needed, and so that work was done on time.


    • As computers were used more it also became obvious that strict schedules were a nice idea,
but they don’t work. A schedule is only valid until the first breakdown.


    • Newer control programs called Production Planning and Control (PPC) systems were used
to generate schedules, and fix problems that came up.


    • Most systems, manual, and automatic either push, or pull the work through the factory. If
the work is pushed, then customer orders tend to drive the production. If the work is pulled, the
factory often tries to satisfy some continuous demand, and when things are about to run out, more
is produced.
page 567


    • Regardless of which system is used, Scheduling is not exact, and never optimal, but you can
get a near optimal schedule with the right tools and methods.


    • Some of the traditional Production, Planning and Control subject include,
       1. Forecasting - Estimating the production demands using a horizon of a few month to a
              few years for long range planning.
       2. Production Planning - Matching needed production to available resources.

    • Note: This is more of a CIM topic.




21.2 SCHEDULING

    • We often know well in advance what has to be produced


    • We can use computer programs to come up with a ‘near perfect’ schedule for all jobs, ahead
of time.


    • These methods at the present time are not well enough developed to handle sudden disrup-
tions on the shop floor (See next section on Shop Floor Control).


    • Schedules are often made up weekly




    *************** ADD DETAILS FOR MRP I and MRP II




21.2.1 Material Requirements Planning (MRP)
page 568


    • This is one very popular approach to planning


    • Uses Master Production Schedules to determine how much of each product should be pro-
duced within given periods. Master Production Schedules are based on customer, or projected
demand.


    • The elements used by MRP to plan are,
        - Master Production Plan (Schedule)
        - On-hand inventories
        - Bill of Materials
        - Current of Purchased and Manufactured Orders
        - Rules for each part produced (including WIP)

    • The rules about each step in production include,
        - Lead time
        - Order quantity per final part
        - Scrap rate
        - Buffer stock quantity
        - etc.

    • MRP then tries to determine quantities required using the data input from the users, and a
set of rules, such as,
        - Fixed Order Quantity - Product are produced as required using a prespecified lot size.
        - Economic Order Quantity - The cost of carrying inventory is weighed off against the cost
                of setup for one production run.
        - Lot for lot - Lots are produced as required, any batch size.
        - Fixed-period Order Quantity - Produce parts to cover more than a single order.



    • Lot sizes required are subtracted from available stocks.


    • The required production quantities are used to order from suppliers, etc, while considering
lead times, and delays.


    • You should note that this approach is concerned more with inventory minimization than
with utilization of machines.
page 569




    • While this system can lead to easy production scheduling, it is susceptible to errors in
BOMs, routings, etc.


    • Advantages,
       - improved Customer Service
       - better Scheduling
       - reduced inventory
       - reduced component shortages
       - reduced manufacturing costs
       - reduced lead times
       - higher production quality
       - less scrap, and rework
       - higher morale in production
       - improved communication
       - improved plant efficiency
       - improved competitive position
       - improved coordination of marketing and finance

    • MRP II (Manufacturing Resources Planning) - A closed-loop MRP system that, at a mini-
mum, includes detailed capacity analysis (see next section). Some MRP II systems include the
business plan in the closed-loop system.




21.2.2 Capacity Planning

    • While MRP is concerned with determining how much should be produced, it is not con-
cerned with how to produce it.


    • Capacity planners attempt to determine how to assign jobs to machines, people, etc.


    • Information used by capacity planners includes,
       - Planned orders (from MRP)
       - Orders in process (order status)
       - Routings, including setup and run time (from process plans)
page 570


        - Available facilities
        - Workforce availability
        - Subcontracting potential

    • There are some strategies used by the Capacity Planner to Assign jobs to machines,
        - Splitting of lots (batches) across identical machines
        - Splitting of lots to expedite a smaller quantity
        - Sequencing of lots to minimize setup times
        - Alternative routings that require different resources
        - Loading a facility by weight, volume, etc. (eg. heat treating)

    • After jobs have been assigned to machines, the capacity of the machines must be consid-
ered.




21.3 SHOP FLOOR CONTROL

    • No factory is perfect, and a schedule can become invalid at any time because of,
        - Machine breakdown
        - Sudden material shortage
        - Workforce vacancy
        - Tool breakage
        - etc.

    • What to do about it,
        - Wait and See
        - Try to find alternative production plans/parts
        - Ask engineering for replan
        - Bump other jobs
        - ?????




21.3.1 Shop Floor Scheduling - Priority Scheduling

    • Instead of scheduling before production (MRP and Capacity planning), a manufacturer may
page 571


opt to do scheduling on the fly.


    • Some of these methods include,
       - Earliest operation due date - soonest date. This gives time until due, but ignores process-
               ing time.
       - Order Slack - soonest date minus processing time. This gives the amount of time to play
               with.
       - Shortest operation first - Do the quickest jobs first. This just clears out WIP faster.




21.3.2 Shop Floor Monitoring

    • It is important to know what is happening on the factory floor.


    • To do this we must pay attention to obvious problems like machine operation, and hidden
problems such as quality, and production quantities.


    • Inspection covers a number of areas,
       - Inspection of raw materials
       - Inspection of manufactured product
               - preprocess
               - in-process
               - post process
       - Inspection of production process parameters
               - tools
               - fixtures
               - production machinery
       - Verification/calibration
               - inspection fixtures
               - Inspection gauges
               - Inspection machinery
page 572



22. SIMULATION

    • Some complex systems can’t be modeled because of,
       - random events
       - changing operating conditions
       - too many interactions
       - exact solutions don’t exist

    • Simulation is used to determine how these systems will behave


    • Simulation typically involves developing a model that includes discrete stations and events
that occur with some probable distribution.


    • We can then examine the simulation results to evaluate the modeled system. Examples
include,
       - machine utilization
       - lead time
       - down time
       - etc.

    • This is a very effective tool when considering the effect of a change, comparing decision
options, or refining a design.


    • Some simulation terms include,
       System - the real collection of components
       Model - a reasonable mathematically (simpler) representation of the system
       State - the model undergoes discrete changes. A state is a ‘snapshot’ of the system
       Entity - a part of the system (eg machine tool)
       Attributes - the behavior of an entity
       Event - something that changes the state of a machine
       Activity - when an entity is going through some activity. (eg, press cycling)
       Delay - a period of time with no activity

    • Good approach to simulation,
       1. Determine what the problem is
       2. Set objectives for the simulation
page 573


       3. Build a model and collect data
       4. Enter the model into a simulation package
       5. Verify the model then check for validity
       6. Design experiments to achieve goals
       7. Run simulations and collect results
       8. Analyze and make decisions




22.1 MODEL BUILDING

    • If we are building a model for a plant floor layout, we will tend to have certain elements,
       - material handling paths (transfer)
       - buffers/waiting areas (delays)
       - stock rooms (source)
       - shipping rooms (destination)
       - machine tools (activities)

    • Some of these actions can be stated as exact. For example, a transfer time can be approxi-
mated and random (manual labor), or exact (synchronous line), or proportional to a distance.


    • Some events will occur based on availability. For example, if there are parts in a buffer, a
machine tool can be loaded and activity occurs.


    • Some activities and events will be subject to probabilities. Consider that the operation time
in a press may vary, and there is probability of scrapping a part.


    • The random variations can be modeled as,
       - discrete - for individual units
       - continuous for variations

    • Well known distributions include,
page 574




Normal/Gaussian




                                                   1


                                                        0.5


                                                   0
                mean                                   mean

      Probability Density                  Cumulative Probability


Poisson/Exponential




                                       1




                                       0


      Probability Density                  Cumulative Probability
page 575




       Uniform




                                                                        1


                                                                             0.5


                                                                        0
                         mean                                               mean

              Probability Density                               Cumulative Probability


       Normal/Gaussian




                                                                        1




                                                                        0
                         mean                                               mean

              Probability Density                               Cumulative Probability


    • This data may be found using data provided by the manufacturer, sampled in-house, etc.




22.2 ANALYSIS

    • To meet goals, simple tests may be devised. These tests should be formulated as hypotheses.
We can then relate these to the simulation results using correlation.
page 576




               ∑ ( xi – µx ) ( yi – µy ) – µx µy
       cov =                                                          cov-
                                                              corr = -----------
                                                                     σx σy


       where,
            cov = covariance of data sets x and y
            corr = correllation of sets x and y
                                        corr = 1 completely related
                                        corr = 0 no relationship
                                        corr = -1 inversely related




    • Simulation software will provide information such as,
       - production rates
       - machine usage
       - buffer size
       - work in process




22.3 DESIGN OF EXPERIMENTS

    • WHAT? combinations of individual parameters for process control are varied, and their
effect on the output quality are measured. From this we determine the sensitivity of the process to
each parameter.


    • WHY? Because randomly varying individual parameters takes too long.


    • e.g. A One-Factor-At-A-Time-Experiment
page 577




      Effect: We are finding the causes of cracks in steel springs.
      Causes:
               1. Steel temperature before quenching 1450F or 1600F
               2. Carbon Content .5% or .7%
               3. Oil quench temperature 70F or 50F
      Experiments 1 and 2:
               Run 1:
                        1. 1450F
                        2. 0.5%        yield(%) 72 70 75 77, X=73.5%
                        3. 70F

               Run 2:
                        1. **1600F
                        2. 0.5%       yield(%) 78 77 78 81, X=78.5%
                        3. 70F
      Observation: 1600F before quench gives higher yield.
               Run 3:
                      1. 1600F
                      2. **0.7%     yield(%) 77 78 75 80, X=77.5%
                      3. 70F
      Observation: Adding more carbon has a small negative effect on yield.
               Run 4:
                      1. 1600F
                      2. 0.5%        yield(%) 79 78 78 83, X=79.5%
                      3. **50F
      Observation: We have improved the quality by 6%, but it has required 4 runs,
                   and we could continue.


• The example shows how the number of samples grows quickly.


• A better approach is designed experiments


• e.g. DESIGNED EXPERIMENT for springs in last section
page 578




  - set up orthogonal array

  Run                1.               2.            3.               Yield%                        Ri = X
  1                  1450             0.5           50
  2                  1600             0.5           50               79 78 78 83                   79.5
  3                  1450             0.7           50
  4                  1600             0.7           50
  5                  1450             0.5           70               72 70 75 77                   73.5
  6                  1600             0.5           70               78 77 78 81                   78.5
  7                  1450             0.7           70
  8                  1600             0.7           70               77 78 75 80                   77.5

              Note the binary sequence


- Find effects of each factor


  Main Effect = ( Average at High ) – ( Average at Low )

                     ( R 2 + R 4 + R 6 + R8 ) ( R 1 + R 3 + R 5 + R7 )
  Main Effect of A = ----------------------------------------------- – -----------------------------------------------
                                                                   -                                                 -
                                            4                                                 4
                     ( R 1 + R2 + R 5 + R 6 ) ( R 3 + R4 + R 7 + R 8 )
  Main Effect of B = ----------------------------------------------- – -----------------------------------------------
                                                                   -                                                 -
                                            4                                                 4
                     ( R 1 + R2 + R 3 + R 4 ) ( R 5 + R6 + R 7 + R 8 )
  Main Effect of C = ----------------------------------------------- – -----------------------------------------------
                                                                   -                                                 -
                                            4                                                 4




 - these can be drawn on an effect graph


Yield
%




                                  A-               A+                  B-               B+                 C-            C+
page 579




22.4 RUNNING THE SIMULATION

    • When a simulation is first run it will be empty. If it is allowed to run for a while it will settle
down to a steady state. We will typically want to,
       - run the simulation for a long time
       - or, delay the start of data collection
       - or, preload the system will parts




                                   Problem area




22.5 DECISION MAKING STRATEGY

    • The general sequence of thought when making decisions is,
       - purpose
       - direction
       - plans
       - action
       - results

    • General properties of strategy include,
       - time horizon
       - impact
       - concentration of effort
       - patterns of decisions
page 580


   - pervasiveness

• The levels of strategies include,
   - corporate
   - business
   - departmental/functional

• Decisions can be categorized,
   hardware/fixed
          - capacity
          - facilities
          - technology
          - vertical integration
   software/flexible
          - workforce
          - quality
          - production planning/material control
          - organization

• Typical criteria for making decisions might include,
   - consistency
   - harmony
   - contribution
page 581



23. PLANNING AND ANALYSIS



23.1 FACTORS TO CONSIDER

    • There are a number of factors in a company which must be considered when evaluating the
need for CAD/CAM/CAE/CIM/etc systems. Some of these are listed below,


       external
               - company crisis
               - markets Niche/Global/Home/ etc.
               - competition
               - customer requirements
       internal
               - corporate objectives, mission and culture
       technological
               - available technology
               - research & development
       success factors
               - the role of management
               - worker security
               - corporate organization
               - unions
               - middle management
               - worker motivation
               - training / worker abilities
               - cash
               - purchasing
               - design engineering
               - etc.

    • Current popular planning strategies include,
       Cost management
               - direct costing
               - effective capital investments
               - space utilization
       Cycle time reduction
               - continuous flow manufacturing and vendor supply
               - pull manufacturing
page 582


         - business and process reengineering
   Market driven quality
         - defining market needs
         - first to market
         - agile manufacturing
         - 6 sigma quality
   Automation
         - process
         - warehouse
         - information
   CIM
         - simplifying and automated processes
         - increased information access

• We can draw a chart that illustrates the issues that might be encountered,




                Structure                                Infrastructure

                 fiscal/tax                          culture
                 monetary                            tradition
                 trade                               religion
 Macro           industrial                          values
                 capital market                      social behavior
                 political structure
                 labor organization

                 business market                     measure and control work-
                 plant/equipment                 force
                    - capacity                       vendors
                    - location
 Micro                                               management
                    - process technology
                 vertical integration                capital budget
                                                     organization
page 583




23.2 PROJECT COST ACCOUNTING

  • When considering the economic value of a decision, one method is the payback period.


              CI
          N = -----
              SA
          where,
                  C I = initial investment ($)
                  S A = savings per year ($/yr )
                  N = payback period (years)



  • Simple estimates for the initial investment and yearly savings are,


       CI = CE – IS
       where,

                C E = cost of new equipment
                I S = revenue from sale of old equipment (salvage)

       SA = ( L0 H0 – L1 H1 ) + ( M0 – M1 )
       where,

                L 0, L 1 = labor rate before and afte
                                                    r
                H 0, H 1 = labor hours before and after
                M 0, M 1 = maintenance costs before and after



  • There are clearly more factors than can be considered, including,
     - changes in material use
     - opportunity cost
     - setup times
     - change in inventory size
     - material handling change
page 584


    • The simple models ignore the conversion between present value and future value. (ie,
money now is worth more than the same amount of money later)



         PW = C 0 + ∑ [ ( R A j – C A j ) ( P ⁄ F, i, j ) ]

                                                                                                              n
                                  1 -                                                      (1 + i) – 1
         ( P ⁄ F, i, j ) = ----------------j
                           (1 + i)
                                                   ( P ⁄ A, i, n ) =   ∑ ( P ⁄ F, i, j ) = ---------------------------
                                                                                              i(1 + i)
                                                                                                                 n



         where,

                  PW = present worth of the money (in todays dollars)
                  R Aj = Annual revenues (income) for year j
                  C A j = Annual costs (expenses) for year j
                  j = j years in the future
                  i = interest rate (fractional)
                  n = number of years for consideration



    • Quite often a Rate of Return (ROR) will be specified by management. This is used in place
of interest rates, and can include a companies value for the money. This will always be higher
than the typical prime interest rate.


    • So far we haven’t considered the effects of taxes. Basically corporate taxes are applied to
profits. Therefore we attempt to distribute expenses evenly across the life of a project (even
though the majority of the money has been spent in the first year). This distribution is known as
depreciation.
page 585




        A = B – T = B – ( tax rate C ) = B ( 1 – tax rate ) + Dtax rate

        where,
              A = after tax cash ($/yr)
              B = before tax cash ($/yr)
              D = depreciation of equipment ($/yr)
              tax rate = the corporate tax rate



    • Methods for depreciation are specified in the tax laws. One method is straight line deprecia-
tion.


                     CE – IS
                 D = ----------------
                                    -
                            n



    • Consider an assembly line that is currently in use, and the system proposed to replace it.
The product line is expected to last 5 years, and then be sold off. The corporate tax rate is 50%
and the company policy is to require a 17% rate of return. Should we keep the old line, or install
the new one?
page 586




Current Manual Line:
       - used 2000 hrs/yr with 10 workers at $20/hr each
       - maintenance is $20,000/yr
       - the current equipment is worth $20,000 used

Proposed Line:
       - the equipment will cost $100,000 and the expected salvage value at the
               end of the project is $10,000
       - 2 workers are required for 1000 hours year at $40/hr each
       - yearly maintenance will be $40,000
page 587



24. REFERENCES

Bollinger, J.G. and Duffie, N.A., Computer Control of Machines and Processes, Addison-Wesley,
      1989.
Chang, T.-C., Wysk, R.A. and Wang, H.-P., “Computer-Aided Manufacturing second edition”,
      Prentice Hall, 1991.
Kalpakjian, S., Manufacturing Engineering and Technology, Addison-Wesley (3rd. ed.), 1995.
page 588



25. APPENDIX A - PROJECTS

    Objective: Students will learn how to design an integrated manufacturing system by selecting
and building a complete integrated system from beginning to end.


    Method: The basic steps are outlined below,
       1. Course begins
       2. Students (individuals or groups) will submit a proposal for a project within the first
               three weeks.
       3. The instructor will review the proposal, and suggest changes as necessary.
       4. During the term students will design, build and test their proposed projects.
       5. In the last week of classes the final project will be demonstrated and formally presented.




25.1 TOPIC SELECTION

    • The following topics are some possible topics, in priority,
       1. Projects for the workcell
               a) Develop a computer program for scheduling.
               b) Design and build a material handling station for the lab.
               c) Develop a product information database
               d) Develop a quality monitoring systems
               e) Write a workcell control program (either C or Java)
       2. Select a problem from a local company
       3. Select a project based on your interests
               a) Build a CMM that uses an arm with measured joint angles.
               b) Design and build a robot.
               c) Develop an idea of your own.
               d) Design and build an NC machine.




25.1.1 Previous Project Topics



       “GVSU Workcell” (Jenny Agnello, Tom Johnson, Colin Moore, Lisa Nahin, Jeremy
page 589


       Scott) The material handling system at GVSU was designed to produce puzzles.
       The heart of the system was an Allen Bradley SoftPLC and Devicenet. It con-
       trolled a material handling system supplid by Worksmart Systems. The system
       included a robot for loading/unloading the mill. A CNC mill for cutting the parts.
       A vision system for inspecting the final parts. Various feeder and fixtures were
       designed and build by students in EGR450.
“Hole in Sphere Project” (Alex Wong, Robert Krygier, Andre Cargnelli, Ahmed Nensey)
       A mechanism will be designed and built for orienting spherical balls with small
       through holes. This will be done with a mechanism that uses three rollers for orien-
       tation, and an optical pair to detect the hole. An electromechanical control system
       will be used.
“Automated Robot Arm” (Lev Mordichaev, Karl Fung, Dennis Ngo, Nikko Chan, Edwin
       Wen, Elaine Rodrigues) A robot arm will be designed and built that can move up/
       down, left/right, and has a gripper that will open/close. The robot will be con-
       trolled via a computer program, and electrical connections to the robot.
“A Manually Controlled Robot” (Keith Lou, Sue Lee, Richard Dankworth, Phat N.
       Huynh, Howie Lam, Tarius Makmur) To build a manually controlled robot to per-
       form a certain task using a joystick for control. This small scale robot will be capa-
       ble of picking up an object, and positioning it in another location. And, for proof of
       concept, a set of fixtures, jigs or feeders will be constructed for a simple robotic
       task. Note: This project has too many people for construction of a robot only.
“A Box Sorting System” (Joey Aprile, Don Christie, Gabe Fusco, Mike Poczo) A con-
       veyor based system will be designed and built for sorting boxes by a switched con-
       veyor path. This will include construction of the conveyor, sensors, actuators, and
       control system.
“Automated Drink Dispenser” (Keith German, Dave Van Den Beld, Jeff Kempson, Brent
       Rubeli, Michael Staples) Glasses on a conveyor belt will be transported to/from a
       dispensing station where they will be filled by an automated mechanism. The sys-
       tem will be designed and built, possibly using a PLC, or a PC for control.
“Self Leveling Platform” (Gerard Biasutto, Mario Borsella, Dino Farronato, Marco Gaet-
       ano, John Yuem) An actuated system will be designed and built to level a platform
       under tilting conditions. This will involve actuators positioned at four corners. A
       control system will be constructed to drive the actuating cylinders.
“Raytracing and Animation” (Greg Squires, Ed Hoskins, Marie Malyj, Allan Zander, Tara
       Hillebrandt) POVray was used to animate a sequence of images to illustrate a pipe
       layout
“NC Machining with SmartCAM” (Neil Babcock) A fishing reel was designed. The reel
       was cut on an NC machine using Smartcam software for programming.
“A graphical computer program for flow analysis on PC’s” (James Barr) A computer pro-
       gram was written to do an analysis of a sphere moving through a fluid.
“Manufacturing Database” (K. Beute, M. Mead) A manufacturing database will be devel-
       oped that allows operators to call up machine configurations based on part num-
       bers. This system uses an HMI to allow easy operator access.
“Construction and control of Stiquito Robot” (T. Cowan and J. Cummings) A kit for a
       stiquito robot will be purchased and assembled. The appropriate interface electron-
       ics and software will be written to control the robot.
page 590


     “Virtual Reality Modeling” (N. Dunklin) VRML will be explored and used to implement a
            3D model of a complex part. This will allow a user to explore the 3D world using a
            simple internet browser.
     “Automatic Generation of CNC Programs” (K. Gehrke) A computer program will be writ-
            ten in C/C++ to automatically generate computer programs in C or C++ to cut ini-
            tials in keytags.
     “Java Programming” (N. Kaye) The Java language will be learned, and a program will be
            written to cover some aspect of integration or automation.
     “Computer Based Analysis of Battery Discharge Data” (R. Sietsema) A computer applica-
            tion will be developed using Excel, and a scripting language, to allow a user to do
            an analysis of battery discharge data.
     “Force Feedback Joystick” (R. Serebryakov) A force feedback joystick will be designed
            and built. It will be interfaced to a PC and controlled with Labview.
     “Design and Construction of Robot” (S. Williams) A robot will be designed and built. The
            robot will be interfaced to a computer for control.




25.2 CURRENT PROJECT DESCRIPTIONS

  Name:
  Title:
  Description:
  Deliverables:
page 591



26. APPENDIX B - COMMON REFERENCES



26.1 JIC ELECTRICAL SYMBOLS

• The Joint International Committee (JIC) developed a standard set of symbols for representing
electrical circuit elements. These are given below:




      disconnect                     circuit interrupter
      (3 phase AC)                   (3 phase AC)


                                    normally closed
        normally open               limit switch
        limit switch                                                        breaker (3 phase AC)




    normally open        normally closed
    push-button          push-button                 double pole            mushroom head
                                                     push-button            push-button
                         F




    thermal
    overload relay      Fuse             motor (3 phase AC)




      liquid level           liquid level                 vacuum pressure        vacuum pressure
      normally open          normally closed              normally open          normally closed
page 592




    temperature                                                               flow
    normally open         temperature                  flow                   normally closed
                          normally closed              normally open


                                                                                    R


    relay contact     relay contact             relay coil                  indicator lamp
    normally open     normally closed




                          relay time delay on                               relay time delay off
    relay time delay on   normally closed         relay time delay off      normally closed
    normally open                                 normally open


                                                                       H1 H3 H2 H4



         horn             buzzer                bell                   X1            X2
                                                                       control transformer
                                   2-H

       solenoid                2-position
                               hydraulic solenoid




26.2 NEMA ENCLOSURES

• NEMA has provided a set of ratings for cabinets housing voltages less than 1000V AC. The
basic classifications are outlined below,
page 593




    Type 1 - General purpose - indoors
    Type 2 - Dirt and water resistant - indoors
    Type 3 - Dust-tight, rain-tight and sleet(ice) resistant - outdoors
    Type 3R- Rainproof and sleet(ice) resistant - outdoors
    Type 3S- Rainproof and sleet(ice) resistant - outdoors
    Type 4 - Water-tight and dust-tight - indoors and outdoors
    Type 4X - Water-tight and dust-tight - indoors and outdoors
    Type 5 - Dust-tight and dirt resistant - indoors
    Type 6 - Waterproof - indoors and outdoors
    Type 6P - Waterproof submersible - indoors and outdoors
    Type 7 - Hazardous locations - class I
    Type 8 - Hazardous locations - class I
    Type 9 - Hazardous locations - class II
    Type 10 - Hazardous locations - class II
    Type 11 - Gas-tight, water-tight, oiltight - indoors
    Type 12 - Dust-tight and drip-tight - indoors
    Type 13 - Oil-tight and dust-tight - indoors

FACTOR                       1   2   3    3R 3S 4    4X   5   6   6P   11   12   12K 13
prevent human contact        x   x   x    x x x      x    x   x   x    x    x    x x
falling dirt                 x   x              x    x    x   x   x    x    x    x x
liquid drop/light splash         x              x    x        x   x    x    x    x x
airborne dust/particles                         x    x    x   x   x         x    x x
wind blown dust                      x       x x     x        x   x
liquid heavy stream/splash                      x    x        x   x
oil/coolant seepage                                                         x    x   x
oil/coolant spray/splash                                                             x
corrosive environment                                x            x    x
temporarily submerged                                         x   x
prolonged submersion                                              x

         *source Omron catalogs - check

More Related Content

PDF
Oracle EBS Release content document
PDF
Master Teset Specification SRCP
PDF
Micazxpl - Intelligent Sensors Network project report
PDF
thesis_SaurabhPanda
PDF
jc_thesis_final
PDF
iPDC User Manual
PDF
iPDC Report Nitesh
PDF
Oracle EBS Release content document
Master Teset Specification SRCP
Micazxpl - Intelligent Sensors Network project report
thesis_SaurabhPanda
jc_thesis_final
iPDC User Manual
iPDC Report Nitesh

Viewers also liked (8)

PPT
DOC
PráCtica Del MóDulo De EduacióN A Distancia
PPT
Hardware
PPT
Software
PPTX
Patronesde anomalías
PPTX
Patronesde anomalías
PPTX
Dispositivos perifericos de entrada y salida
PPT
Educacion A Distancia
PráCtica Del MóDulo De EduacióN A Distancia
Hardware
Software
Patronesde anomalías
Patronesde anomalías
Dispositivos perifericos de entrada y salida
Educacion A Distancia
Ad

Similar to Integratedbook (20)

PDF
Cad_cam_cim___3rd_edition
PDF
FYP%3A+P2P+Bluetooth+Communication+Framework+on+Android%0A
PDF
Final report
PDF
User manual Scrivener 2.3 for Mac
PDF
Scrivener windows
PDF
student mangement
PDF
2010 frc-control system
PDF
Software proposal sample_project_3-_complex_saa_s_application_by_swproposal_com
DOC
Crap shit head
PDF
First pages
PDF
Guide to Videoconferencing
PDF
Guide to Videoconferencing
DOCX
Chani index
PDF
Sap on suse linux
PDF
Sprint 144
PDF
User manual Scrivener 2.1 for Mac
PDF
Openobject bi
PDF
Thesis - LLVM toolchain support as a plug-in for Eclipse CDT
PDF
Manual
PDF
Scheduling of large scale virtualized infrastructures toward cooperative mana...
Cad_cam_cim___3rd_edition
FYP%3A+P2P+Bluetooth+Communication+Framework+on+Android%0A
Final report
User manual Scrivener 2.3 for Mac
Scrivener windows
student mangement
2010 frc-control system
Software proposal sample_project_3-_complex_saa_s_application_by_swproposal_com
Crap shit head
First pages
Guide to Videoconferencing
Guide to Videoconferencing
Chani index
Sap on suse linux
Sprint 144
User manual Scrivener 2.1 for Mac
Openobject bi
Thesis - LLVM toolchain support as a plug-in for Eclipse CDT
Manual
Scheduling of large scale virtualized infrastructures toward cooperative mana...
Ad

Integratedbook

  • 1. page 1 Integration and Automation of Manufacturing Systems by: Hugh Jack © Copyright 1993-2001, Hugh Jack
  • 2. page 2 PREFACE 1. INTEGRATED AND AUTOMATED MANUFACTURING . . . .13 1.1 INTRODUCTION 13 1.1.1 Why Integrate? 13 1.1.2 Why Automate? 14 1.2 THE BIG PICTURE 16 1.2.1 CAD/CAM? 17 1.2.2 The Architecture of Integration 17 1.2.3 General Concepts 19 1.3 PRACTICE PROBLEMS 22 2. AN INTRODUCTION TO LINUX/UNIX . . . . . . . . . . . . . . . . . . .23 2.1 OVERVIEW 23 2.1.1 What is it? 23 2.1.2 A (Brief) History 24 2.1.3 Hardware required and supported 25 2.1.4 Applications and uses 25 2.1.5 Advantages and Disadvantages 26 2.1.6 Getting It 26 2.1.7 Distributions 27 2.1.8 Installing 27 2.2 USING LINUX 28 2.2.1 Some Terminology 28 2.2.2 File and directories 29 2.2.3 User accounts and root 31 2.2.4 Processes 33 2.3 NETWORKING 34 2.3.1 Security 35 2.4 INTERMEDIATE CONCEPTS 35 2.4.1 Shells 35 2.4.2 X-Windows 36 2.4.3 Configuring 36 2.4.4 Desktop Tools 37 2.5 LABORATORY - A LINUX SERVER 37 2.6 TUTORIAL - INSTALLING LINUX 38 2.7 TUTORIAL - USING LINUX 40 2.8 REFERENCES 41 3. AN INTRODUCTION TO C/C++ PROGRAMMING . . . . . . . . .43 3.1 INTRODUCTION 43 3.2 PROGRAM PARTS 44 3.3 CLASSES AND OVERLOADING 50 3.4 HOW A ‘C’ COMPILER WORKS 52
  • 3. page 3 3.5 STRUCTURED ‘C’ CODE 53 3.6 COMPILING C PROGRAMS IN LINUX 54 3.6.1 Makefiles 55 3.7 ARCHITECTURE OF ‘C’ PROGRAMS (TOP-DOWN) 56 3.7.1 How? 56 3.7.2 Why? 57 3.8 CREATING TOP DOWN PROGRAMS 58 3.9 CASE STUDY - THE BEAMCAD PROGRAM 59 3.9.1 Objectives: 59 3.9.2 Problem Definition: 59 3.9.3 User Interface: 59 Screen Layout (also see figure): 59 Input: 60 Output: 60 Help: 60 Error Checking: 61 Miscellaneous: 61 3.9.4 Flow Program: 62 3.9.5 Expand Program: 62 3.9.6 Testing and Debugging: 64 3.9.7 Documentation 65 Users Manual: 65 Programmers Manual: 65 3.9.8 Listing of BeamCAD Program. 65 3.10 PRACTICE PROBLEMS 66 3.11 LABORATORY - C PROGRAMMING 66 4. NETWORK COMMUNICATION . . . . . . . . . . . . . . . . . . . . . . . . .68 4.1 INTRODUCTION 68 4.2 NETWORKS 69 4.2.1 Topology 69 4.2.2 OSI Network Model 71 4.2.3 Networking Hardware 73 4.2.4 Control Network Issues 75 4.2.5 Ethernet 76 4.2.6 SLIP and PPP 77 4.3 INTERNET 78 4.3.1 Computer Addresses 79 4.3.2 Computer Ports 80 Mail Transfer Protocols 81 FTP - File Transfer Protocol 81 HTTP - Hypertext Transfer Protocol 81 4.3.3 Security 82 Firewalls and IP Masquerading 84 4.4 FORMATS 85
  • 4. page 4 4.4.1 HTML 85 4.4.2 URLs 87 4.4.3 Encryption 88 4.4.4 Clients and Servers 88 4.4.5 Java 89 4.4.6 Javascript 89 4.4.7 CGI 89 4.5 NETWORKING IN LINUX 89 4.5.1 Network Programming in Linux 91 4.6 DESIGN CASES 102 4.7 SUMMARY 103 4.8 PRACTICE PROBLEMS 103 4.9 LABORATORY - NETWORKING 104 4.9.1 Prelab 105 4.9.2 Laboratory 107 5. DATABASES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 5.1 SQL AND RELATIONAL DATABASES 109 5.2 DATABASE ISSUES 114 5.3 LABORATORY - SQL FOR DATABASE INTEGRATION 114 5.4 LABORATORY - USING C FOR DATABASE CALLS 116 6. COMMUNICATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 6.1 SERIAL COMMUNICATIONS 119 6.1.1 RS-232 122 6.2 SERIAL COMMUNICATIONS UNDER LINUX 125 6.3 PARALLEL COMMUNICATIONS 129 6.4 LABORATORY - SERIAL INTERFACING AND PROGRAMMING 130 6.5 LABORATORY - STEPPER MOTOR CONTROLLER 130 7. PROGRAMMABLE LOGIC CONTROLLERS (PLCs) . . . . . . .134 7.1 BASIC LADDER LOGIC 136 7.2 WHAT DOES LADDER LOGIC DO? 138 7.2.1 Connecting A PLC To A Process 139 7.2.2 PLC Operation 139 7.3 LADDER LOGIC 141 7.3.1 Relay Terminology 144 7.3.2 Ladder Logic Inputs 146 7.3.3 Ladder Logic Outputs 147 7.4 LADDER DIAGRAMS 147 7.4.1 Ladder Logic Design 148 7.4.2 A More Complicated Example of Design 150 7.5 TIMERS/COUNTERS/LATCHES 151
  • 5. page 5 7.6 LATCHES 152 7.7 TIMERS 153 7.8 COUNTERS 157 7.9 DESIGN AND SAFETY 159 7.9.1 FLOW CHARTS 160 7.10 SAFETY 160 7.10.1 Grounding 161 7.10.2 Programming/Wiring 162 7.10.3 PLC Safety Rules 162 7.10.4 Troubleshooting 163 7.11 DESIGN CASES 164 7.11.1 DEADMAN SWITCH 164 7.11.2 CONVEYOR 165 7.11.3 ACCEPT/REJECT SORTING 165 7.11.4 SHEAR PRESS 166 7.12 ADDRESSING 168 7.12.1 Data Files 169 Inputs and Outputs 172 User Numerical Memory 172 Timer Counter Memory 172 PLC Status Bits (for PLC-5s) 173 User Function Memory 174 7.13 INSTRUCTION TYPES 174 7.13.1 Program Control Structures 175 7.13.2 Branching and Looping 175 Immediate I/O Instructions 179 Fault Detection and Interrupts 181 7.13.3 Basic Data Handling 182 Move Functions 182 7.14 MATH FUNCTIONS 184 7.15 LOGICAL FUNCTIONS 191 7.15.1 Comparison of Values 191 7.16 BINARY FUNCTIONS 193 7.17 ADVANCED DATA HANDLING 194 7.17.1 Multiple Data Value Functions 195 7.17.2 Block Transfer Functions 196 7.18 COMPLEX FUNCTIONS 198 7.18.1 Shift Registers 198 7.18.2 Stacks 199 7.18.3 Sequencers 200 7.19 ASCII FUNCTIONS 202 7.20 DESIGN TECHNIQUES 203 7.20.1 State Diagrams 203 7.21 DESIGN CASES 206 7.21.1 If-Then 207
  • 6. page 6 7.21.2 For-Next 207 7.21.3 Conveyor 208 7.22 IMPLEMENTATION 209 7.23 PLC WIRING 209 7.23.1 SWITCHED INPUTS AND OUTPUTS 210 Input Modules 211 Actuators 212 Output Modules 213 7.24 THE PLC ENVIRONMENT 216 7.24.1 Electrical Wiring Diagrams 216 7.24.2 Wiring 219 7.24.3 Shielding and Grounding 221 7.24.4 PLC Environment 223 7.24.5 SPECIAL I/O MODULES 224 7.25 PRACTICE PROBLEMS 227 7.26 REFERENCES 237 7.27 LABORATORY - SERIAL INTERFACING TO A PLC 238 8. PLCS AND NETWORKING . . . . . . . . . . . . . . . . . . . . . . . . . . . .240 8.1 OPEN NETWORK TYPES 240 8.1.1 Devicenet 240 8.1.2 CANbus 245 8.1.3 Controlnet 246 8.1.4 Profibus 247 8.2 PROPRIETARY NETWORKS 248 Data Highway 248 8.3 PRACTICE PROBLEMS 252 8.4 LABORATORY - DEVICENET 258 8.5 TUTORIAL - SOFTPLC AND DEVICENET 258 9. INDUSTRIAL ROBOTICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262 9.1 INTRODUCTION 262 9.1.1 Basic Terms 262 9.1.2 Positioning Concepts 266 Accuracy and Repeatability 266 Control Resolution 270 Payload 271 9.2 ROBOT TYPES 276 9.2.1 Basic Robotic Systems 276 9.2.2 Types of Robots 277 Robotic Arms 277 Autonomous/Mobile Robots 280 Automatic Guided Vehicles (AGVs) 280 9.3 MECHANISMS 281 9.4 ACTUATORS 282
  • 7. page 7 9.5 A COMMERCIAL ROBOT 283 9.5.1 Mitsubishi RV-M1 Manipulator 284 9.5.2 Movemaster Programs 286 Language Examples 286 9.5.3 Command Summary 290 9.6 PRACTICE PROBLEMS 291 9.7 LABORATORY - MITSUBISHI RV-M1 ROBOT 296 9.8 TUTORIAL - MITSUBISHI RV-M1 296 10. OTHER INDUSTRIAL ROBOTS . . . . . . . . . . . . . . . . . . . . . . . .299 10.1 SEIKO RT 3000 MANIPULATOR 299 10.1.1 DARL Programs 300 Language Examples 301 Commands Summary 305 10.2 IBM 7535 MANIPULATOR 308 10.2.1 AML Programs 312 10.3 ASEA IRB-1000 317 10.4 UNIMATION PUMA (360, 550, 560 SERIES) 319 10.5 PRACTICE PROBLEMS 320 10.6 LABORATORY - SEIKO RT-3000 ROBOT 330 10.7 TUTORIAL - SEIKO RT-3000 ROBOT 331 10.8 LABORATORY - ASEA IRB-1000 ROBOT 332 10.9 TUTORIAL - ASEA IRB-1000 ROBOT 332 11. ROBOT APPLICATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333 11.0.1 Overview 333 11.0.2 Spray Painting and Finishing 335 11.0.3 Welding 335 11.0.4 Assembly 336 11.0.5 Belt Based Material Transfer 336 11.1 END OF ARM TOOLING (EOAT) 337 11.1.1 EOAT Design 337 11.1.2 Gripper Mechanisms 340 Vacuum grippers 342 11.1.3 Magnetic Grippers 344 Adhesive Grippers 345 11.1.4 Expanding Grippers 345 11.1.5 Other Types Of Grippers 346 11.2 ADVANCED TOPICS 347 11.2.1 Simulation/Off-line Programming 347 11.3 INTERFACING 348 11.4 PRACTICE PROBLEMS 348 11.5 LABORATORY - ROBOT INTERFACING 350 11.6 LABORATORY - ROBOT WORKCELL INTEGRATION 351
  • 8. page 8 12. SPATIAL KINEMATICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352 12.1 BASICS 352 12.1.1 Degrees of Freedom 353 12.2 HOMOGENEOUS MATRICES 354 12.2.1 Denavit-Hartenberg Transformation (D-H) 359 12.2.2 Orientation 361 12.2.3 Inverse Kinematics 363 12.2.4 The Jacobian 364 12.3 SPATIAL DYNAMICS 366 12.3.1 Moments of Inertia About Arbitrary Axes 366 12.3.2 Euler’s Equations of Motion 369 12.3.3 Impulses and Momentum 370 Linear Momentum 370 Angular Momentum 371 12.4 DYNAMICS FOR KINEMATICS CHAINS 372 12.4.1 Euler-Lagrange 372 12.4.2 Newton-Euler 375 12.5 REFERENCES 375 12.6 PRACTICE PROBLEMS 376 13. MOTION CONTROL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .390 13.1 KINEMATICS 390 13.1.1 Basic Terms 390 13.1.2 Kinematics 391 Geometry Methods for Forward Kinematics 392 Geometry Methods for Inverse Kinematics 393 13.1.3 Modeling the Robot 394 13.2 PATH PLANNING 395 13.2.1 Slew Motion 395 Joint Interpolated Motion 397 Straight-line motion 397 13.2.2 Computer Control of Robot Paths (Incremental Interpolation)400 13.3 PRACTICE PROBLEMS 403 13.4 LABORATORY - AXIS AND MOTION CONTROL 408 14. CNC MACHINES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .409 14.1 MACHINE AXES 409 14.2 NUMERICAL CONTROL (NC) 409 14.2.1 NC Tapes 410 14.2.2 Computer Numerical Control (CNC) 411 14.2.3 Direct/Distributed Numerical Control (DNC) 412 14.3 EXAMPLES OF EQUIPMENT 414 14.3.1 EMCO PC Turn 50 414 14.3.2 Light Machines Corp. proLIGHT Mill 415
  • 9. page 9 14.4 PRACTICE PROBLEMS 417 14.5 TUTORIAL - EMCO MAIER PCTURN 50 LATHE (OLD) 417 14.6 TUTORIAL - PC TURN 50 LATHE DOCUMENTATION: (By Jonathan DeBoer) 418 14.6.1 LABORATORY - CNC MACHINING 424 15. CNC PROGRAMMING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .426 15.1 G-CODES 428 15.2 APT 436 15.3 PROPRIETARY NC CODES 440 15.4 GRAPHICAL PART PROGRAMMING 441 15.5 NC CUTTER PATHS 442 15.6 NC CONTROLLERS 444 15.7 PRACTICE PROBLEMS 445 15.8 LABORATORY - CNC INTEGRATION 446 16. DATA AQUISITION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .448 16.1 INTRODUCTION 448 16.2 ANALOG INPUTS 449 16.3 ANALOG OUTPUTS 455 16.4 REAL-TIME PROCESSING 458 16.5 DISCRETE IO 459 16.6 COUNTERS AND TIMERS 459 16.7 ACCESSING DAQ CARDS FROM LINUX 459 16.8 SUMMARY 476 16.9 PRACTICE PROBLEMS 476 16.10 LABORATORY - INTERFACING TO A DAQ CARD 478 17. VISIONS SYSTEMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479 17.1 OVERVIEW 479 17.2 APPLICATIONS 480 17.3 LIGHTING AND SCENE 481 17.4 CAMERAS 482 17.5 FRAME GRABBER 486 17.6 IMAGE PREPROCESSING 486 17.7 FILTERING 487 17.7.1 Thresholding 487 17.8 EDGE DETECTION 487 17.9 SEGMENTATION 488 17.9.1 Segment Mass Properties 490 17.10 RECOGNITION 491 17.10.1 Form Fitting 491 17.10.2 Decision Trees 492
  • 10. page 10 17.11 PRACTICE PROBLEMS 494 17.12 TUTORIAL - LABVIEW BASED IMAQ VISION 499 17.13 LABORATORY - VISION SYSTEMS FOR INSPECTION 500 18. INTEGRATION ISSUES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .502 18.1 CORPORATE STRUCTURES 502 18.2 CORPORATE COMMUNICATIONS 502 18.3 COMPUTER CONTROLLED BATCH PROCESSES 514 18.4 PRACTICE PROBLEMS 516 18.5 LABORATORY - WORKCELL INTEGRATION 516 19. MATERIAL HANDLING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .518 19.1 INTRODUCTION 518 19.2 VIBRATORY FEEDERS 520 19.3 PRACTICE QUESTIONS 521 19.4 LABORATORY - MATERIAL HANDLING SYSTEM 521 19.4.1 System Assembly and Simple Controls 521 19.5 AN EXAMPLE OF AN FMS CELL 523 19.5.1 Overview 523 19.5.2 Workcell Specifications 525 19.5.3 Operation of The Cell 526 19.6 THE NEED FOR CONCURRENT PROCESSING 534 19.7 PRACTICE PROBLEMS 536 20. PETRI NETS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .537 20.1 INTRODUCTION 537 20.2 A BRIEF OUTLINE OF PETRI NET THEORY 537 20.3 MORE REVIEW 540 20.4 USING THE SUBROUTINES 548 20.4.1 Basic Petri Net Simulation 548 20.4.2 Transitions With Inhibiting Inputs 550 20.4.3 An Exclusive OR Transition: 552 20.4.4 Colored Tokens 555 20.4.5 RELATIONAL NETS 557 20.5 C++ SOFTWARE 558 20.6 IMPLEMENTATION FOR A PLC 559 20.7 PRACTICE PROBLEMS 564 20.8 REFERENCES 565 21. PRODUCTION PLANNING AND CONTROL . . . . . . . . . . . . .566 21.1 OVERVIEW 566 21.2 SCHEDULING 567 21.2.1 Material Requirements Planning (MRP) 567 21.2.2 Capacity Planning 569
  • 11. page 11 21.3 SHOP FLOOR CONTROL 570 21.3.1 Shop Floor Scheduling - Priority Scheduling 570 21.3.2 Shop Floor Monitoring 571 22. SIMULATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .572 22.1 MODEL BUILDING 573 22.2 ANALYSIS 575 22.3 DESIGN OF EXPERIMENTS 576 22.4 RUNNING THE SIMULATION 579 22.5 DECISION MAKING STRATEGY 579 23. PLANNING AND ANALYSIS . . . . . . . . . . . . . . . . . . . . . . . . . .581 23.1 FACTORS TO CONSIDER 581 23.2 PROJECT COST ACCOUNTING 583 24. REFERENCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .587 25. APPENDIX A - PROJECTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . .588 25.1 TOPIC SELECTION 588 25.1.1 Previous Project Topics 588 25.2 CURRENT PROJECT DESCRIPTIONS 590 26. APPENDIX B - COMMON REFERENCES . . . . . . . . . . . . . . . .591 26.1 JIC ELECTRICAL SYMBOLS 591 26.2 NEMA ENCLOSURES 592
  • 12. page 12 PREFACE I have been involved in teaching laboratory based integrated manufacturing courses since 1993. Over that time I have used many textbooks, but I have always been unsatisfied with their technical depth. To offset this I had to supply supplemental materials. These supplemental materi- als have evolved into this book. This book is designed to focus on topics relevant to the modern manufacturer, while avoiding topics that are more research oriented. This allows the chapters to focus on the applicable theory for the integrated systems, and then discuss implementation. Many of the chapters of this book use the Linux operating system. Some might argue that Microsoft products are more pervasive, and so should be emphasized, but I disagree with this. It is much easier to implement a complex system in Linux, and once implemented the system is more reliable, secure and easier to maintain. In addition the Microsoft operating system is designed with a model that focuses on entertainment and office use and is incompatible with the needs of manufacturing professionals. Most notably there is a constant pressure to upgrade every 2-3 years adding a burden. The reader is expected to have some knowledge of C, or C++ programming, although a review chapter is provided. When possible a programming example is supplied to allow the reader to develop their own programs for integration and automation.
  • 13. page 13 1. INTEGRATED AND AUTOMATED MANUFACTUR- ING Integrated manufacturing uses computers to connect physically separated processes. When integrated, the processes can share information and initiate actions. This allows decisions to be made faster and with fewer errors. Automation allows manufacturing processes to be run auto- matically, without requiring intervention. This chapter will discuss how these systems fit into manufacturing, and what role they play. 1.1 INTRODUCTION An integrated system requires that there be two or more computers connected to pass infor- mation. A simple example is a robot controller and a programmable logic controller working together in a single machine. A complex example is an entire manufacturing plant with hundreds of workstations connected to a central database. The database is used to distribute work instruc- tions, job routing data and to store quality control test results. In all cases the major issue is con- necting devices for the purposes of transmitting data. • Automated equipment and systems don’t require human effort or direction. Although this does not require a computer based solution • Automated systems benefit from some level of integration 1.1.1 Why Integrate? There is a tendency to look at computer based solutions as inherently superior. This is an assumption that an engineer cannot afford to entertain. Some of the factors that justify an inte-
  • 14. page 14 grated system are listed below. • a large organization where interdepartmental communication is a problem • the need to monitor processes • Things to Avoid when making a decision for integration and automation, - ignore impact on upstream and downstream operations - allow the system to become the driving force in strategy - believe the vendor will solve the problem - base decisions solely on financials - ignore employee input to the process - try to implement all at once (if possible) • Justification of integration and automation, - consider “BIG” picture - determine key problems that must be solved - highlight areas that will be impacted in enterprise - determine kind of flexibility needed - determine what kind of integration to use - look at FMS impacts - consider implementation cost based on above • Factors to consider in integration decision, - volume of product - previous experience of company with FMS - product mix - scheduling / production mixes - extent of information system usage in organization (eg. MRP) - use of CAD/CAM at the front end. - availability of process planning and process data * Process planning is only part of CIM, and cannot stand alone. 1.1.2 Why Automate? • Why ? - In many cases there are valid reasons for assisting humans - tedious work -- consistency required - dangerous - tasks are beyond normal human abilities (e.g., weight, time, size, etc) - economics
  • 15. page 15 • When? hard automation unit cost robotic assembly manual assembly manual flexible fixed constant production volumes Figure 1.1 - Automation Tradeoffs • Advantages of Automated Manufacturing, - improved work flow - reduced handling - simplification of production - reduced lead time - increased moral in workers (after a wise implementation) - more responsive to quality, and other problems - etc. • Various measures of flexibility, - Able to deal with slightly, or greatly mixed parts. - Variations allowed in parts mix - Routing flexibility to alternate machines - Volume flexibility - Design change flexibility
  • 16. page 16 1.2 THE BIG PICTURE How Computers Can Be Used in an Automated Manufacturing System CAD CAPP PPC CAM CAE • Some Acronyms CAD - Computer Aided/Automated Design - Design geometry, dimensions, etc. CAE - Analysis of the design done in the CAD system for stresses, flows, etc. (often described as part of CAD) CAM - Computer Aided/Automated Manufacturing - is the use of computers to select, setup, schedule, and drive manufacturing processes. CAPP - Computer Aided Process Planning - is used for converting a design to a set of pro- cesses for production, machine selection, tool selection, etc. PPC - Production Planning and Control - also known as scheduling. Up to this stage each process is dealt with separately. Here they are mixed with other products, as required by customer demand, and subject to limited availability of manufacturing resources. Factory Control - On a minute by minute basis this will split up schedules into their required parts, and deal with mixed processes on a factory wide basis. (This is very factory specific, and is often software written for particular facilities) An example system would track car color and options on an assembly line. Workcell Control - At this system level computers deal with coordination of a number of machines. The most common example is a PLC that runs material handling sys-
  • 17. page 17 tems, as well as interlocks with NC machines. Machine Control - Low level process control that deals with turning motors on/off, regu- lating speeds, etc., to perform a single process. This is often done by the manufac- turers of industrial machinery. 1.2.1 CAD/CAM? • A common part of an integrated system • In CAD we design product geometries, do analysis (also called CAE), and produce final documentation. • In CAM, parts are planned for manufacturing (eg. generating NC code), and then manufac- tured with the aid of computers. • CAD/CAM tends to provide solutions to existing problems. For example, analysis of a part under stress is much easier to do with FEM, than by equations, or by building prototypes. • CAD/CAM systems are easy to mix with humans. • This technology is proven, and has been a success for many companies. • There is no ‘ONE WAY’ of describing CAD/CAM. It is a collection of technologies which can be run independently, or connected. If connected they are commonly referred to as CIM 1.2.2 The Architecture of Integration • integrated manufacturing systems are built with generic components such as,
  • 18. page 18 - Computing Hardware - Application Software - Database Software - Network Hardware - Automated Machinery • Typical applications found in an integrated environment include, - Customer Order Entry - Computer Aided Design (CAD) / Computer Aided Engineering (CAE) - Computer Aided Process Planning (CAPP) - Materials (e.g., MRP-II) - Production Planning and Control (Scheduling) - Shop Floor Control (e.g., FMS) • The automated machines used include, - NC machines - PLCs - Robotics - Material Handling / Transport - Machines - Manual / Automated Assembly Cells - Computers - Controllers - Software - Networks - Interfacing - Monitoring equipment • On the shop floor computers provide essential support in a workcell for, - CNC - Computer Numerical Control - DNC - Direct Numerical Control of all the machine tools in the FMS. Both CNC and DNC functions can be incorporated into a single FMS. - Computer control of the materials handling system - Monitoring - collection of production related data such as piece counts, tool changes, and machine utilization - Supervisory control - functions related to production control, traffic control, tool control, and so on.
  • 19. page 19 1.2.3 General Concepts • Manufacturing requires computers for two functions, - Information Processing - This is characterized by programs that can operate in a batch mode. - Control - These programs must analyze sensory information, and control devices while observing time constraints. • An integrated system is made up of Interfaced and Networked Computers. The general structure is hierarchical, Corporate Mainframes Plant Plant Floor Process Control Micro-computers • The plant computers tend to drive the orders in the factory. • The plant floor computers focus on departmental control. In particular, - synchronization of processes. - downloading data, programs, etc., for process control. - analysis of results (e.g., inspection results). • Process control computers are local to machines to control the specifics of the individual processes. Some of their attributes are, - program storage and execution (e.g., NC Code), - sensor analysis, - actuator control, - process modeling, - observe time constraints (real time control). • The diagram shows how the characteristics of the computers must change as different func- tions are handled.
  • 20. page 20 More Complex Computations Faster Response Times • To perform information processing and control functions, each computer requires connec- tions, - Stand alone - No connections to other computers, often requires a user interface. - Interfaced - Uses a single connection between two computers. This is characterized by serial interfaces such as RS-232 and RS-422. - Networked - A single connection allows connections to more than one other computer. May also have shared files and databases. • Types of common interfaces, - RS-232 (and other RS standards) are usually run at speeds of 2400 to 9600 baud, but they are very dependable. • Types of Common Networks, - IEEE-488 connects a small number of computers (up to 32) at speeds from .5 Mbits/sec to 8 Mbits/sec. The devices must all be with a few meters of one another. - Ethernet - connects a large number of computers (up to 1024) at speeds of up to 10 Mbits/sec., covering distances of km. These networks are LAN’s, but bridges may be used to connect them to other LAN’s to make aWAN. • Types of Modern Computers, - Mainframes - Used for a high throughput of data (from disks and programs). These are ideal for large business applications with multiple users, running many programs at once. - Workstations (replacing Mini Computers) - have multiprocessing abilities of Mainframe, but are not suited to a limited number of users. - Micro-processors, small computers with simple operating systems (like PC’s with msdos) well suited to control. Most computerized machines use a micro-processor
  • 21. Planning Scheduling Control Control architecture. Input Simulation Logic To to Planning Next action equipment Algorithm cell Status Database Expert Scheduling From page 21 System equipment Output Process • A Graphical Depiction of a Workstation Controller from Plans cell Deadlock Error Detection & Detection & Avoidance Recovery Detail of Workstation Controller
  • 22. page 22 1.3 PRACTICE PROBLEMS 1. What is concurrent (parallel) processing and why is it important for workcell control? (ans. to allow equipment to do other tasks while one machine is processing) 2. What is meant by the term “Device Driver”? (ans. a piece of hardware that allows a connections to a specific piece of hardware) 3. CAD and CAM are, a) Integrated production technologies. b) The best approaches to manufacturing. c) Part of CIM. d) None of the above. (ans. c) 4. FMS systems are, a) faster than robots. b) a good replacement for manual labor. c) both a) and b) d) none of the above. (ans. d)
  • 23. page 23 2. AN INTRODUCTION TO LINUX/UNIX 2.1 OVERVIEW Linux is a free UNIX clone that was developed by volunteers around the world. Although Linux is almost a decade old, it went largely unnoticed by the general public until a couple of years ago. Since then it has become very popular with individual users, universities and large cor- porations. For example, IBM has made it a major part of their business strategy for server hard- ware. Many software companies already offer Linux versions of their software, including products such as Oracle, Labview and MSC Nastran. Other companies have developed embedded applications using Linux. Currently Linux can be found in devices as small as a wristwatch [1] and as large as a Beowulf class supercomputer [2]. The popularity of Linux is based on three fac- tors: - costs are lower because the software is free and it runs well on less expensive hardware. - it has more software, capabilities, and features than other operating systems. - the source code is open, so users can customize the operating system to meet their needs. This chapter will present the Linux operating system in general, and its current status in comput- ing. 2.1.1 What is it? Linux is an open source operating system. It is open because users and developers can use the source code any way they want. This allows anyone to customize it, improve it and add desired features. As a result Linux is dynamic, evolving to respond to the desires and needs of the users. In contrast, closed operating systems are developed by a single corporation using static snapshots of market models and profit driven constraints. Linux is free. This allows companies to use it without adding cost to products. It also allows people to trade it freely. And, with the profit motive gone, developers have a heightened sense of
  • 24. page 24 community interest. The Linux community has developed a tremendous spirit because of these core development concepts. 2.1.2 A (Brief) History Linux has existed since the early 1990s [3], but it grew out of previous developments in com- puting [4]. It was originally developed to be a Unix clone that would run on low cost computer hardware. Unix was developed in the 1970s. Through the 1970s and early 1980s it was used on large computers in companies and universities. During this time many refinements and enhance- ments were made. By the mid 1980s Unix was being used on many lower priced computers. By the end of the 1980s most universities were making use of Unix computers in computer science and engineering programs. This created a wealth of graduates who understood what they could expect from a mature operating system. But, it also created a demand to be able to do high level work at home on low priced machines. Early in the 1990s Linux started as a project to create a Unix clone that would run on a per- sonal computer. This project gained momentum quickly and by the mid 1990s it was ready for users. The first groups to adopt it were hobbyists, academics and internet services. At this time the general public was generally unaware of Linux but by the end of the 1990s it was beginning to enter the public sphere. By 2000 it had entered the popular press, and it was cited as a major threat to at least one existing operating system vendor. Now, it is available off-the-shelf in software and book stores. 1970s- Unix developed at AT&T labs by Ken Thompson and Dennis Ritchie 1980s- Unix became popular on high end computers - The Unix platform is refined and matures - Some versions of Unix were available for PCs - most notably QNX 1990s- Linus Torvalds begins working on a free Unix clone for PCs in 1991 - Others join the project it gets the name ‘Linux’ - By 1993 Linux begins to enter the mainstream of computer users - Linux machines constitute a large number of servers on the Internet - Many large companies begin to support Linux - e.g. Dell, IBM
  • 25. page 25 2000s- Home and office users are supported with free office software - Linux is available in consumer products, such as Tivo recorders 2.1.3 Hardware required and supported Modern computers have ample power for most computer applications. This is more true for Linux. At present there are versions of linux that will run on any platform from an IBM main- frame computer to a Palm Pilot. The smallest Linux installations can fit on a single floppy disk, and run on a diskless computer with a few MB of memory. On the other end of the spectrum, Linux will run on most high end computer systems. An average user would expect reasonable per- formance on a computer with an old Pentium 100 processor, 64MB of memory, and 2 GB of disk space. On newer computers the performance of the operating system is extremely fast. The list below gives some idea of the capabilities, but complete lists of supported hardware are available [5]. CPU- Intel family and clones, down to ‘386 processors - Macintosh (Motorola) - Others: Alpha, MIPS, Sparc, etc. Memory- 16MB is a good minimum, 64MB is recommended Disk- 200MB is a minimum, 2GB is recommended Screen- Any size Network- Any type Others- Most PC hardware is supported - or will be soon 2.1.4 Applications and uses By itself an operating system is somewhat useless, software applications are added to give desired functionality. Some of the common applications that a computer might be used for are listed below. Linux will support all of these applications, and more, with the right software [6]. Office - word processing, spreadsheets, etc.
  • 26. page 26 Web and Internet Servers - host web sites Server - databases and other institutional functions Embedded - inside devices such as Tivo TV recorders PDAs - an operating system for small handheld computers Development - software authoring 2.1.5 Advantages and Disadvantages A partial list of advantages and disadvantages is given below. The cost, stability and open nature of the system have been winning over a large number of corporate adopters. But, adoption has been slowed by people who don’t understand the nature of free software or have a perception that it is difficult to use. In some cases there are also some software packages that are not avail- able for Linux, and won’t run under simulators [22] - the most notable of these applications are first person shooting games. Advantages: Free - paying for it is optional Open - the source code is available and can be changed Goodwill - developers and users are very helpful Faster - it doesn’t require newer hardware, extra memory and larger disks Stable - it is very uncommon for Linux to crash (no blue screens) Flexibility - more capabilities and features Complete - all of the software is available and open - no ‘extra’ software to buy Security - very secure - unauthorized users can’t change machine settings Simplicity - point and click configuration Disadvantages: Compatibility - some programs will not run under simulators Misunderstanding - some people believe ‘you get what you pay for’ 2.1.6 Getting It There are multiple distributions of Linux. While these all contain the Linux Kernel, they often include different pieces of software, and installation processes vary somewhat. The basic
  • 27. page 27 licensing agreement that Linux is distributed under requires that even if it is sold for a fee, it must be made available at no cost and it may also be copied freely by the user. As a result you can often download these distributions over the network at no cost [12][13]. The total download size can be up to 600MB. An alternative is to buy a distribution (the typical cost is $30) which includes a floppy disk, a CD-ROM and a brief manual. These can be found at any store that sells software. Sometimes the distribution will have a higher cost for ‘deluxe’ versions - this more costly pack- age often includes telephone support. 2.1.7 Distributions In total there are hundreds of Linux distributions. Many of these are specialized for features such as embedded systems, foreign languages, internet servers and security. The list below is for user-friendly installation and usage. The most successful of these distributions is Redhat. Some distributions, such as Mandrake, are based on the Redhat distribution, but with enhancements. Redhat - the original consumer friendly Linux [7] Mandrake - a Redhat derivative [8] Caldera - another well established distribution [9] Debian - a release that focuses on stability [10] SuSe - yet another distribution [11] 2.1.8 Installing Each distribution of Linux will have a slightly different installation procedure, but they all follow the basic steps below. The total time to install Linux will between one to two hours. Users with a high level of knowledge can opt to do advanced setup, and new users will have the option of letting the system suggest installation options. 1. Turn off the computer.
  • 28. page 28 2. Insert a provided floppy disk (you can also boot from a CD on newer computers) 3. Turn the computer on, it will start to load Linux 4. You will be asked some questions about the type of installation you want 5. Linux will format the disks, and start to load the software 6. While it is loading you will be able to set times, dates and passwords 7. You be asked to set up the graphics for the window manager 8. When the installation is done the computer will reboot, and you will be ready to use it 2.2 USING LINUX This section is a brief overview of the Linux operating system. The intention is to overview the basic components in the operating system. An administrator can manage the operating system using the graphical user interface (GUI), or using typed commands. New users often prefer to use the system using the GUI. Advanced users often prefer to use commands to administer the sys- tem, they are often faster and more reliable. Commands can be typed in a command window. Typed commands are case sensitive, and most commands are lower case. Spaces are used to delimit (separate) commands and arguments, so they should also be used when typing. Linux allows users to perform some very sophisticated operations with a single command. But, while learning this should not pose a problem, unless logged in as root. While learning the user is encouraged to use a normal user account so that acci- dental damage to the system can be minimized. 2.2.1 Some Terminology The terms below are some of the keywords that are unique to Linux. These will appear during the installation, or during common usage of the system. booting When a Linux computer starts it checks the hardware, and then starts software. The process of booting takes less than a minute in most cases
  • 29. page 29 kernelThe core of the operating system that talks to all hardware and programs shellA windows that allows you to type commands permissionsControl who can change what GNU(Gnu’s Not Unix) A group that develops free software comprising a large portion of Linux rootThis is the user name of the system administrator 2.2.2 File and directories The directory and file structure of Linux is hierarchical, much like other popular operating systems. The main directory for the system is call root and is indicated with a single slash ‘/’. There are a number of subdirectories listed below that are used for storing system files, user files, temporary files and configuration files. A sample of the standard directories are shown below, and can be viewed with a file manager, or with keyboard commands. If other disks are used, such as a CDROM, or floppy disk, they are mounted under the root directory. (i.e., there are no ‘C’, ‘A’ or other drives, they are all under ‘/’.) (Note: the UNIX slash is ‘/’, not the ‘’ used on DOS.) / home bin lib ....etc.... jackh davisa bin public_html A list of some of the more important directories follows with a brief description of each. Most users have their home directories under the ’/home’ directory. Most of the other directories are of interest to the system administrator. /etc - device and software configuration files are kept here /tmp - temporary files are created here
  • 30. page 30 /home - user directories are kept here /var - this is a place for log files, mail storage, etc. /usr - software is installed under this directory /dev - where devices are kept - they are accessed like files /bin - some of the programs are kept in this directory Every file and directory has a unique name which can be used to refer to it. Sometimes it is useful to be able to refer to groups of files without typing the name of each one. Wildcard allow file and directory names to be matched to patterns. The list below shows some of the wildcards commonly used. *Any string ?Any Character ..The directory above .this directory ~your home directory Some examples of filenames with wildcards, and files they would match are shown below. Ad*Advertise Advent.not Ad Ad?Ad. Ade Ad?.?Ade.d ??e.*ape.exe eee.thisisanother ../hi.*hi.there (in directory above) ~/*.therehi.there (in your home directory) Filenames can contain numbers, letters and a few other symbols, but care should be used to avoid symbols that also have meaning to Linux, such as the asterisk ’*’. File names that begin with a period ’.’ are system files that are normally hidden. For example, most users will have a file in their home directories called ’.profile’ or ’.login’. These are used when a user logs. Some of the standard Linux commands for files and directories are listed below. Most of the file and directory names can be used with wildcards. cd newdir change directory to ’newdir’ pwd show present working directory ls list the files in the current directory
  • 31. page 31 ls -la list the files in the current directory in full form ls files list files that match the ’files’ rm files removes the named ’files’ rm * removes all the files in the current directory (use with care) rm /* removes all of the files in the computer (only do this if you are insane) mkdir namemake a directory ’name’ rmdir nameremove a directory ’name’ mv from tomove a file/directory ’from’ an old name ’to’ a new name cp from to copy a file ’from’ the an old name ’to’ a new name more file type out the contents of ’file’ on page at a time cat file type out the contents of ’file’ vi file a text editor for ’file’ (some commands given below) ‘dd’ - cut a line (command mode) ’p’ - paste a line below the current line (command mode) ‘x’ - delete a character (command mode) ‘r’ - replace a character (command mode) ‘R’ - replace a string (command mode -> edit mode) ‘a’ - append to a line (command mode -> edit mode) ‘i’ - insert a string (command mode -> edit mode) ‘:w’ - write to a file (command mode) ‘:q’ - quit from a file (command mode) ESC - move from edit to command mode cursor key - move the cursor du check the disk usage of the current directory du ~ check the disk usage of your home directory df check total disk space available sort this will sort the contents of a file ln -s to from create a symbolic link ’from’ a name ’to’ a file grep thing filessearch ’files’ for the string ’thing’ compress file compress a ’file’ uncompress file uncompress a ’file’ 2.2.3 User accounts and root Linux follows very strict conventions for file and directory permissions. These require that each file and directory be given specific permissions for public reading, writing and execution. Each user is given their own account with a password, so that access to the system is controlled. Only the root user can access all files and directories on the system. Other users are limited to files they own, or files that have been marked public. Typically the root user is only used for adminis-
  • 32. page 32 tration, and normal users use non-root accounts. This generally keeps the system safe from care- less damage, and security breaches. Each user has their own home directory, normally in the ‘/ home’ directory. The permissions for files and directories are set so that the user has complete control over that directory. The permissions for files can be seen by doing a directory listing with ’ls -la’. This will show flags something like ’-rwxrwxrwx jackh user’ for a file that everybody can read ’r’, write ’w’ or execute ’x’. The leftmost ’rxw’ is for the user ’jackh’, the second ’rwx’ is for the group ’user’ and the rightmost ’rwx’ is for everybody on the system. So if the permissions were ’-rwxr--r--’ everybody on the system can read the file, but only the owner can write and execute it. For security reasons, write permissions for files are normally only allowed for the owner, but read permissions are normally given to all. Execute permissions are normally set for all users when the file can be executed, such as a program. Sometimes more than one user wants to have access to a file, but there are reasons to not permit permission to everybody. In this case a group can be created and given permission to use a file. Commands that are oriented to users and permissions follow. passwd user change the password for a user chmod flags files change the permission ’flags’ for ’files’ chown user files change the owner of ’files’ to ’user’ finger user give information about a ’user’ who look at who is logged into your machine last a list of the last users logged in whoami give your current user name su - name change to a different user chgrp group files add a ’group’ to a file Most of the user information is stored in the ’/etc’ directory. For example, user account infor- mation is stored in the ’passwd’ file. User passwords are stored in the ’shadow’ file. Group infor- mation is stored in the ’groups’ file. It is possible to add users to the system by editing these files, but there are commands that make it easier to update and maintain these files.
  • 33. page 33 The ’passwd’ command is used to change user passwords. In general passwords are the main line of defense against unwanted intruders. Most systems will do simple password checks when passwords are entered. In general, if a password can’t be found in a dictionary or index of a book it will generally be safer. 2.2.4 Processes At any one time there are multiple programs (processes) running on a Linux computer. When you run a program it becomes another process also running on the computer. Each process is given it’s own unique process ID number (PID). Each process is given it’s own private memory space, and allowed to run for a fraction of a second every second. The list of commands below allow the processes in the computer to be seen. They also allow the general state of the machine to be determined. ps -aux Print a list of processes running on the computer kill -9 pid Kill a process with ’pid’ running on the computer (uses the PID # from ps -ef) passwd userChange the password of a ’user’ date print system date and time who show who is logged into the machine exit this will logout a user fg bring background processes to the foreground bg send a stopped process to the background <CNTL>Chitting this key sequence will kill a running process <CNTL>Zhitting this key sequence will stop a running process, but not kill it command &any command followed by an ’&’ ampersand will be run in the background Simple commands can be combined together with pipes to make more complicated functions. An example is ’ls | more’. By itself ’ls’ will list all the files in a directory. ’more’ is normally used to print out text files. But in this case the output of ’ls’ is passed (piped) through ’more’ so that it only prints one screen at a time. Multiple commands can be combined on a single command line by separating them with a colon ’:’. For example the command ’ls ; ls ..’ would list the contents of the current directory, then the parent directory.
  • 34. page 34 Output from functions can be redirected to files instead of the screen. For example ’ls > temp’ will take the normal output from the ’ls’ function, and write it into a textfile called ’temp’. Input to functions can be directed into a program. For example ’sort < temp’ will make the file ’temp’ the input to the sort command. Simple batch files can be created by putting a list of commands in a normal text file. The file can then be made executable using the command ’chmod 755 filename’. The program can then be run using ’./filename’. 2.3 NETWORKING Networks are a key component of Linux operating systems. Each computer on a network may have a name, such as ’claymore.engineer.gvsu.edu’, but each computer must have a number, such as ’148.61.104.215’. You can log into other Linux and Unix machines with commands such as ‘telnet claymore.engineer.gvsu.edu’, ’telnet 148.61.104.215’ or ‘rlogin claymore.engi- neer.gvsu.edu’. This allows you to sit at one machine, and use many others, even around the world. You can also access other computers with public access directories using the ‘ftp’ command. For example try ‘ftp ftp4.netscape.com’. This will connect you to a computer some place in the U.S. When it asks you for your ‘login name’ type ‘anonymous’. When it asks for a ‘password’, enter your name. You may now move around using ls, pwd, cd, etc. If you want to get a file from some directory, type ‘binary’, then type ‘get filename’, or ’get filenames’. ‘quit’ ends every- thing. If you log into a machine with FTP and you have write permissions you can also write files to the machine using ’put filename’ or ’mput filenames’. If you use FTP to log into a computer that you have account on you will be able to move outside of the limited ftp directories.
  • 35. page 35 2.3.1 Security Security is not a significant problem for a computer that is not connected to a network, and passwords will protect it from ‘honest thieves’. When connected to a network there is potential for security problems. These problems become more serious when the computer is connected to the network 24 hours a day. General rules to keep a computer safe (this applies to non-Linux comput- ers also) are: keep user passwords safe - these can be the start of a security breach protect the root password - loosing this throws the system wide open shut down unneeded programs - network programs sometime have bugs that open doors apply patches - software updates help close security holes 2.4 INTERMEDIATE CONCEPTS Above the basic features of the Linux system are a number of more advanced features and commands. Some of these are listed below. pine a simple interface for mail usage mail a somewhat bothersome mail tool (see pine). man func bring up a manual page for ’func’ man -k stringbrings up information on ’string’ tar -xvf file.tar extract files from an archive file ’file.tar’ tar cvf - files > file.tar put ’files’ into an archive file ’file.tar’ 2.4.1 Shells When one logs into a Linux system, you are actually running a program (shell) this is in some ways similar to DOS. In the standard shell you are given a prompt, where you type your com- mand. If it is not a built-in command, it searches on the disk according to a user-specified search path, for an executable program of that name. Almost all commands are programs that are run in
  • 36. page 36 this manner. There are also executable shell scripts, similar to command files on DOS. Linux is limited to running a program of a size equal to the sum of its memory, and swap space. As the sys- tem is multi-tasking, any program (or part thereof) that is not currently being run when extra memory is required, is swapped (moved) out to the disk, until it is ready to run again. In shells there are environment variables set. Some of the commands that can be used to view these are shown below. They can be set by editing the appropriate text files. alias prints a list of command aliases printenv prints a list of the environment variables set prints a list of the environment variables 2.4.2 X-Windows The GUI in Linux is actually two programs working together. The basic program is called X windows, and it provides basic connection to the screen, mouse, keyboard and sound card. The look-and-feel of the GUI is provided by the window manager. One simple window manager is called ‘fvwm’ and it can behave like Windows 95/98. Newer window managers include Gnome and KDE. While these both provide similar capabilities and features, most users develop personal preferences for a single window manager. 2.4.3 Configuring Devices and settings can be configured under X-windows using graphical tools. Settings can also be configured with text files, but this is not necessary. Examples of settings that the user or root might want to change are: Modem properties for internet connection Network card properties for connection to a LAN Printer type and location
  • 37. page 37 Customize the windows settings and behavior Sound card settings and sounds for Window events 2.4.4 Desktop Tools Most users focus less on the Operating System, and more on the programs that it will run. The task list below includes many of the applications that would be desired by the average user. Most of the listed applications are free, with the exception of the games. Many of these packages are a standard part of Linux distributions. • Office Software - these include spreadsheets, word processors, presentation software, drawing tools, database tools, 3D graphics tools Star Office [14] KOffice [15] • File and Internet Browsers Netscape - allows browsing of the internet [16] Files - there are many file viewers that ease directory browsing Eazel - allows active directory browsing [17] • Administration and Utilities Apache - the most popular web server program [18] Postgres and MySQL - Database programs [19] [20] Replace a microsoft networking server [21] DOS/Windows Simulator VMWare [22] • Entertainment Audio and video Tools (GIMP - similar to photoshop) Games (Quake, Doom, SimCity) 2.5 LABORATORY - A LINUX SERVER Purpose: To set up a Linux server that can be used for controlling automation. Overview: At the core of every integrated manufacturing system is a server. A server is a computer, running a networked operating system that can connect to many other computers.
  • 38. page 38 The function of a server is to communicate information between different devices on the factory floor. The most important part of a server is the operating system. Mature operating systems such as Unix and Linux are well established, while newcomers, such as Windows NT are trying to establish themselves. Pre-Lab: 1. Go to the web site www.linux.org and read about Linux. 2. Go to the RedHat Linux site and read the installation instructions. (www.redhat.com) In-Lab: 1. Locate a computer to use. Install Linux using the following instructions. 2. After the installation is done and the computer has been rebooted go through the follow- ing Linux tutorial. 3. If you need more practice with linux try another basic user tutorial (www.linux.org). 4. Update the main webpage on the machine, and create a web page for yourself also in your own public_html directory. Submit (individually): 1. Have the machine up and running properly, including X-windows. 2. Have a running web server with a main web page, and for you. 2.6 TUTORIAL - INSTALLING LINUX This section outlines the steps and choices that were used while installing Redhat 7.0. You can also refer to other installation guides (www.redhat.com) in the event of problems. 1. Open the computer to determine the following information. - video card type and memory - network card type - mouse type 2. Insert the distribution floppy disk and CD and turn on the computer. The computer will start to boot automatically. After some time a graphical interface should appear and you will be asked questions. 3. The choices that I made follow in sequence. You should adapt these to the computer you have. The settings I expect you will need to change are marked with an asterisk ’*’. Language selection - English Keyboard - Generic 101-key PC - US English - Enable dead keys
  • 39. page 39 *Mouse - Microsoft Intellimouse Install Options - Custom System Partitioning - using disk druid Delete all disk partitions *Add a partition - mount ’/’, size 1500MB, partition type Linux Native *Add a partition - partition type Linux Swap, size remaining about 50MB Formating - ’/dev/hda1 /’ Lilo Configuration - "Create Boot Disk" selected Install Lilo on ’/dev/hda MBR’ - did not use linear mode - no kernel parameters - left the rest as is Network - configured with "DHCP", "activate on boot" Timezone - "Detroit" Account Configuration - entered a root password *- added a user account for myself ’jackh’ Authentication Configuration - left all as is Selecting Package Groups - the following list were the only ones chosen Printer Support X Window System Gnome KDE Mail/WWW/News Tools DOS/Windows Connectivity Graphics Manipulation Games Multimedia Support Networked Workstation Dialup Workstation Web Server SQL Server Network Management Workstation Authoring/Publishing Development Kernel Development Utilities X Configuration *- Generic High Freq. SVGA 1024x768 @ 70Hz *- ATI Mach 64, 1MB memory - don’t set ’use graphical login’ 4. Installation will start and it takes about 30-60 minutes. 5. When done you will be prompted to put a formatted floppy disk in the drive and create a boot disk. This is good for emergencies and is highly encouraged. Don’t forget to label the disk. 6. When prompted reboot the system. Don’t forget to remove the floppy and CDROM.
  • 40. page 40 7. Once the system has rebooted, login as root. Start XWindows using ’startx’. 8. If you reach this point you have completed the installation successfully. 2.7 TUTORIAL - USING LINUX 1. Login with your username and password. Later you can logout with ’logout’ or ’exit’. (Note: you can also use ’shutdown -h now’ to stop the machine.) 2. After you have logged in you should see a flashing cursor. Type ’startx’ to start the X- windows GUI. This will take some time, but when done you will have a windowed interface. 3. First we want to open a command window. Point to the bottom of the screen and locate the icon that looks like a computer screen. Click on it once with the left mouse but- ton. A command window will pop up on the screen. Click on the border of the win- dow, the keyboard will then be focused on the window, and commands will work there. 4. Enter the commands below in order and observe the results. They should allow you to move around directories and see the files listed there. Some of the options will change how you see the files. ls ls -l ls -la ls -lar ls -lat ls -lart pwd cd .. ; ls -la cd ~ 5. Use the manuals to find other options for the ‘ls’ command with ‘man ls’. 6. Explore the hard drive to find what is there. The following directories are particularly important. /etc - the machine configuration and boot files /opt - some packages will be installed here /bin and /usr/bin - executable files /sbin and /usr/sbin - executable files for the root user and system /usr/doc - help files /home - use directories are here /mnt - mounted disk drives are attached here /proc - system status is kept here /var/log - system log files are kept here /tmp - temporary files are stored here 7. Change to the directory ’/etc’, and look at the contents of the file ’fstab’ with the com- mand ’more fstab’. This file contains a list of the disk drives in the computer. You can find more information about it with ’man fstab’.
  • 41. page 41 8. Return to your own directory and create a subdirectory called public_html with the command ’mkdir public_html’. Change to that directory and create a new file using the vi editor with ’vi index.html’. Enter the following text into that file. The editor has two modes. In command mode each key will cause an action. In edit mode each key is added to the text. Hitting ’ESC’ at any time puts the editor back into command mode. To move into edit mode hit ’i’ then start typing text. To erase a single character hit ’x’. When you are done editing the program use ’:wq:’ to save the file and quit. Refer to the previous section in the text more details on the commands. <HTML> <BODY> Hi </BODY> </HTML> 9. When done save and quit the editor. Make sure the permissions of your file and the ’public_html’ directory are correct with the command ’chmod 755 index.html ~/ public_html ~’. 10. Use netscape to look at you web page and see if it is there. You can do this using ’netscape &’. You can see the file by opening it. You should also be able to see the file by typing ’http://127.0.0.1/~YOURNAME’, where ’YOURNAME’ is you user ID. 11. Look at the list of processes running on the computer with ’ps -aux’. Notice that the columns indicate what is running, the status of the process, etc. You can get more information about this using ’man ps’ 12. Log into claymore using ’telnet claymore.engineer.gvsu.edu’ or ’telnet 148.61.104.215’. use ’ls’ to look at the files in your directory. When done looking around your account use ’exit’ to logout. 13. Now, look at some of the programs in the Window manager. 2.8 REFERENCES [1] http://www.ibm.com [2] http://www.beowulf.org, “The Beowulf Project”. [3] Hasan, R., “History of Linux”, http://ragib.hypermart.net/linux. [4] Polsson, K., “Chronology of Personal Computers”, http://www.islandnet.com/~kpolsson/complist [5] http://www.linux.org/hardware/index.html, “Linux Friendly Hardware” [6] http://www.linux.org/apps/index.html, “Applications” [7] http://www.redhat.com [8] http://www.mandrake.org [9] http://www.caldera.com [10] http://www.debian.com [11] http://www.suse.com [12] http://www.sunsite.unc.edu [13] http://www.linux.com [14] http://www.staroffice.com [15] http://www.koffice.kde.org [16] http://www.netscape.com
  • 42. page 42 [17] http://www.eazel.com [18] http://www.apache.org [19] http://www.postgresql.org [20] http://www.mysql.com [21] http://www.samba.org [22] http://www.vmware.com
  • 43. page 43 3. AN INTRODUCTION TO C/C++ PROGRAMMING 3.1 INTRODUCTION The C programming language was developed at Bell Laboratories in the Early 1970’s. The language was intended to provide a high level framework for data and functions while allowing highly efficient programs. By the 1980s the language had entered widespread usage and was in use for the development of many high level programs. By the 1990s most new software projects were written in C. Some of the advantages of C are listed below. • Machine Portable, which means that it requires only small changes to run on other com- puters. • Very Fast, almost as fast as assembly language. • Emphasizes structured programming, by focusing on functions and subroutines. • You may easily customize ’C’ to your own needs. • Suited to Large and Complex Programs. • Very Flexible, allows you to create your own functions. More recently C++ was developed to add object-oriented capabilities to C. In simple terms the object oriented extensions allow data and functions to be combined together. In general the advantages that C++ add over C are those listed below. In general, any C program can be com- piled with C++, while C++ programs will often not compile with a C compiler. • Reusable source code can reduce duplication • Encapsulation of data and functions reduces errors • It is easy to interchange software modules ASIDE: The expression object-oriented has been misused recently. This was a particular problem with those marketing software. In truth, these techniques are mainly of use only to the programmer. From the users perspective, they will be unaware of whether the souce code of the program is object-oriented or not.
  • 44. page 44 This chapter will act as a basic introduction or review of C and C++ programming. C pro- gramming is discussed first to lay the foundations, and this is followed with a discussion of C++ programming extensions. The end of the chapter discusses structured program design techniques. If you are already fluent in C and C++ I suggest you skip this chapter. 3.2 PROGRAM PARTS C programs are basically simple text programs that follow a general set of rules (syntax). Fig- ure 3.1 shows the classic beginners program that will add two numbers and print the result. The first line in this example is a comment. Comments are between ’/*’ and ’*/’ can stretch over many lines. Comments can also be the end of a line if they follow ’//’. The ’main()’ program declaration indicates where the program starts. The left and right curly brackets ’{’ and ’}’ are used to group together a set of program statements, in this case the program. Notice that the program statements are indented to indicate how they are grouped. This is a very valuable structuring technique that makes the programs much easier to read. /* A simple program to add two numbers and print the results */ main() { int x, y = 2, z; // define three variables and give one a value x = 3; // give another variable a value z = x + y; // add the two variables printf(“%d + %d = %dn”, x, y, z); // print the results } Results (output): 3+2=5 Figure 3.1 - A Program to Add Two Numbers (and results) The program begins with the definition of three variables, ’x’, ’y’ and ’z’. All three are defined to be ’int’ integers and the value of ’y’ is set to ’2’. The statement is terminated with a
  • 45. page 45 semicolon to separate it from the next statement. The next line assigns a value of ’3’ to ’x’. The following line adds the values of ’x’ and ’y’ and assigns the value to ’z’. The last statement in the program, ’printf’, prints the values with a format statement. The first string in the command is a format string. In the string a ’%d’ indicates an integer, and ’n’ indicates an end of line. The remaining characters in the format string are printed as shown. The format string is followed by the variables in the format string, in the same sequence. The result of the program shown that when it is run it prints ’3 + 2 = 5’. Some of the general rules that are worth noting are listed below. • lower/UPPER case is crucial, and can never be ignored. • Statements can be on one or more lines but must be separated by semi-colons ‘;’. • Statements consist of one operation, or a set of statements between curly brackets {, } • There are no line numbers. • Lines may be of any length. The data types for C are listed below with typical data sizes. Sometimes these sizes may be larger or smaller. Their behavior of ’char’, ’short’, ’int’ and ’long’ can be modified when pre- ceded with ’unsigned’. For example an integer ’x’ defined with ’int x;’ could have a value from - 32768 to 32767, but if defined with ’unsigned int x;’ it can have a value from 0 to 65535. char (1 byte ascii character), short (1 byte signed integer), int (2 byte signed integer), long (4 byte signed integer), float (4 byte floating point IEEE standard), double (8 byte floating point IEEE standard). Beginners will often write a program in a single ’main’ function. As the program becomes more complex it is useful to break the program into smaller functions. This makes it easier to write and read. Figure 3.2 contains an example program that uses subroutines to perform the same function as the program in Figure 3.1. As before the ’main()’ program function is the starting point for program execution. The subroutine ’add’ is defined after ’main’, so a function prototype is required before. A prototype just indicates the values that are passed, and the function return type. In this example the values 3 and 2 are passed to the ’add’ function. In the add function these values are then put into ’a’ and ’b’. The values are then added and assigned to ’c’. The value of ’c’
  • 46. page 46 is then returned to the main function where it is assigned to ’z’. /* A simple program to add two numbers and print the results */ int add(int, int); /* Declare a integer function called ‘add’ */ main() { int x = 3, y = 2, z; /* define three variables and give values */ z = add(x, y); /* pass the two values to ‘add’ and get the sum*/ printf(“%d + %d = %dn”, x, y, z); /*print the results */ } int add(int a, int b) { /* define function and variable list */ int c; /* define a work integer */ c = a + b; /* add the numbers */ return(c); /* Return the number to the calling program */ } Figure 3.2 - Program to add numbers with a function: Every variable has a scope. This determines which functions are able to use that variable. If a variable is global, then it may be used by any function. These can be modified by the addition of static, extern and auto. If a variable is defined in a function, then it will be local to that function, and is not used by any other function. If the variable needs to be initialized every time the subrou- tine is called, this is an auto type. static variables can be used for a variable that must keep the value it had the last time the function was called. Using extern will allow the variable types from other parts of the program to be used in a function. /* A simple program to add two numbers and print the results */ int x = 3, /* Define global x and y values */ y = 2, add(); /* Declare an integer function called ‘add’ */ main() { printf(“%d + %d = %dn”, x, y, add()); /*print the results */ } int add() { /* define function */ return(x + y); /* Return the sum to the calling program */ } Figure 3.3 - Program example using global variables:
  • 47. page 47 Other variable types of variables are union, enum and struct. Some basic control flow state- ments are while(), do-while(), for(), switch(), and if(). A couple of example programs are given below which demonstrate all the ’C’ flow statements. /* A simple program to print numbers from 1 to 5*/ main() { int i; for(i = 1; i <= 5; i = i + 1){ printf(“number %d n”, i); /*print the number */ } } Figure 3.4 - Program example with a for loop: main() { // A while loop int i = 1; while(i <= 5){ printf(“number %d n”, i); i = i + 1; } } main() { // A do-while loop int i = 1; do{ printf(“number %d n”, i); i = i + 1; }while(i <= 5) } Figure 3.5 - Examples of Other Loops main() { int x = 2, y = 3; if(x > y){ printf(“Maximum is %d n”, x); } else if(y > x){ printf(“Maximum is %d n”, y); } else { printf(“Both values are %d n”, x); } } Figure 3.6 - An If-Else Example
  • 48. page 48 main(){ int x = 3; /* Number of People in Family */ switch(x){ /* choose the numerical switch */ case 0: /* Nobody */ printf(“There is no family n”); break; case 1: /* Only one person, but a start */ printf(“There is one parentn”); break; case 2: /* You need two to start something */ printf(“There are two parentsn”); break; default: /* critical mass */ printf(“There are two parents and %d kidsn”, x-2); break; } } Figure 3.7 - A Switch-Case Example #include <filename.h> will insert the file named filename.h into the program. The *.h exten- sion is used to indicate a header file which contains ‘C’ code to define functions and constants. This almost always includes “stdio.h”. As we saw before, a function must be defined (as with the ‘add’ function). We did not define printf() before we used it, this is normally done by using #include <stdio.h> at the top of your programs. “stdio.h” contains a line which says ‘int printf();’. If we needed to use a math function like y = sin(x) we would have to also use #include <math.h>, or else the compiler would not know what type of value that sin() is supposed to return. #define CONSTANT TEXT will do a direct replacement of CONSTANT in the program with TEXT, before compilation. #undef CONSTANT will undefine the CONSTANT. #include <stdio.h> #include <math.h> #define TWO_PI 6.283185307 #define STEPS 5 main() { double x; /* Current x value*/ for(x = 0.0; x <= TWO_PI; x = x + (TWO_PI / STEPS)){ printf(“%f = sin(%f) n”, sin(x), x); } } Figure 3.8 - A More Complex Example
  • 49. page 49 #fictive, #finder, #if, #else and #else can be used to conditionally include parts of a program. This is used for including and eliminating debugging lines in a program. Statements such as #define, #include, #fictive, #finder, #if, #else, /* and */ are all handled by the Preprocessor, before the compiler touches the program. Matrices are defined as shown in the example. In ‘C’ there are no limits to the matrix size, or dimensions. Arrays may be any data type. Strings are stored as arrays of characters. i++ is the same as i = i + 1. #include “stdio.h” #define STRING_LENGTH 5 main() { int i; char string[STRING_LENGTH]; /* character array */ gets(string); /* Input string from keyboard */ for(i = 0; i < STRING_LENGTH; i++){ printf(“pos %d, char %c, ASCII %d n”, i, string[i], string[i]); } } INPUT: HUGH<return> OUTPUT: pos 0, char H, ASCII 72 pos 1, char U, ASCII 85 pos 2, char G, ASCII 71 pos 3, char H, ASCII 72 pos 4, char , ASCII 0 Figure 3.9 - Printing ASCII Values Pointers are a very unique feature of ‘C’. First recall that each variable uses a real location in
  • 50. page 50 memory. The computer remembers where the location of that variable is, this memory of location is called a pointer. This pointer is always hidden from the programmer, and uses it only in the background. In ‘C’, the pointer to a variable may be used. We may use some of the operations of ‘C’ to get the variable that the pointer, points to. This allows us to deal with variables in a very powerful way. #include “stdio.h” main() { int i; char *string; /* character pointer */ gets(string); /* Input string from keyboard */ for(i = 0; string[i] != 0; i++){ printf(“ pos %d, char %c, ASCII %d n”, i, string[i], string[i]); } } INPUT: HUGH<return> OUTPUT: pos 0, char H, ASCII 72 pos 1, char U, ASCII 85 pos 2, char G, ASCII 71 pos 3, char H, ASCII 72 Figure 3.10 - A Sample Program to Get a String 3.3 CLASSES AND OVERLOADING Classes are the core concept behind object oriented programing. They basically allow data and functions to be grouped together into a complex data type. The example code below shows a class definition, and a program that uses it.
  • 51. page 51 class bill { public: int value; void result(); } bill::result(){ printf("The result is %d n", value); }; main(){ bill A; bill B; A.value = 3; B.value = 5; A.result(); B.result(); } PROGRAM OUTPUT: The result is 3 The result is 5 Figure 3.11 - A Simple Class Definition The class is defined to have a public integer called’value’ and a public function called ’result’. The function ’result’ is defined separately outside of the class definition. In the ’main’ program the class has two instances ’A’ and ’B’. The ’value’ values in the classes are set, and then the result function is then called. A more sophisticated example of a class definition follows. The program shown does exactly the same as the last program, but with some useful differences. This class now includes a con- structor function ’bill’. This function is automatically called when a new instance of ’bill’ is cre- ated. In the main program the instances are not created initially, but pointers ’*A’ and ’*B’ are created. These are then assigned instances with the calls to ’new bill()’. At this point the construc- tor functions are called. Finally, when the instances are used, because they are pointers, the ’->’ are used instead of ’.’.
  • 52. page 52 class bill { public: bill(int); int value; void result(); } bill::bill(int new_value){ value = new_value; } bill::result(){ printf("The result is %d n", value); }; main(){ bill *A; bill *B; A = new bill(3); B = new bill(5); A->result(); B->result(); } PROGRAM OUTPUT: The result is 3 The result is 5 Figure 3.12 - Another Class Example 3.4 HOW A ‘C’ COMPILER WORKS A ‘C’ compiler has three basic components: Preprocessor, First and Second Pass Compiler, and Linker.
  • 53. page 53 Source code “filename.c” The Preprocessor Will remove comments, replace strings which have a defined value, include programs, and remove #include files unneeded characters. (like “stdio.h”) ASCII Text Code The First and Second Pass The compiler will parse the program and check the syn- tax. TheSecond Pass produces some simple machine language, which performs the basic functions of the program. Object Code (*.o) The Linker The compiler will combine the basic machine language from the first pass and combine it with the pieces of machine language in the compiler libraries. An opti- Library files mization operation may be used to reduce execution (*.so) time. Executable Code (*.exe) Figure 3.13 - How Programs Are Compiled 3.5 STRUCTURED ‘C’ CODE
  • 54. page 54 • A key to well designed and understandable programs. • Use indents, spaces and blank lines, to make the program look less cluttered, and give it a block style. • Comments are essential to clarify various program parts. • Descriptive variable names, and defined constants make the purpose of the variable obvi- ous. • All declarations for the program should be made at the top of the program listing. A Sample of a Bad Program Structure: main(){int i;for(;i<10;i++)printf(“age:%dn”,i);} A Good Example of the same Program: #include <stdio.h> #define COUNT 10 /* Number of counts in loop */ main() { int i; /* counter */ for(i = 0; i < COUNT; i++){ /* loop to print numbers */ printf(“age:%dn”, i); } exit(0); } Figure 3.14 - Program Structure Examples 3.6 COMPILING C PROGRAMS IN LINUX
  • 55. page 55 The basic C compiler is called ’gcc’, or ’g++’ for C++. These can be put on a command line. For example ’gcc bob.c -o bob’ will compile a C program in the file ’bob.c’, and store the result in a program file ’bob’. Function libraries linked in with ’-l___’. For example to use a math function the math library must be included in the compilation line with ’-lm’. The debugger can be used if ’-g’ is included in the compilation line. For example, if a program was compiled with ’gcc -g bob.c -o bob’, it could be run in the debugger with ’xxgdb bob’. This then allows you to step through the program line by line, set break points, see where it crashed, or print data values. The compiler can be set to be extra picky (which also helps find errors) when compiled with the flag ’-Wall’ 3.6.1 Makefiles Programmers quickly tire of constantly typing commands to compile programs. To help with this problem, the make utility was developed. A programmer will create a ’makefile’ to describe how a program is to be compiled. This file can be called ’makefile’ or ’Makefile’ by default. The contents then describe when a file should be compiled. The sample makefile below shows a simple makefile. The lines beginning with ’#’ are com- ments. The line containing the ’all:’ indicates the main program(s) to make. In this example the only program to make is ’bob’, notice that a later line starts with ’bob:’. The next three lines define variables that can be reused. Later in this example the ’$(CC)’ will be replaced with ’gcc’, the ’$(CFLAGS)’ with ’-Wall -g’, and so on. To make the required program ’bob’ both ’bob.c’ and ’bill.o’ are needed. When run the make tool will check to see if the files on the disk have been updated and things need to be recompiled. Only if the program files have changed will the com- piler be run, otherwise the compilation will not be done because it is not necessary. If it is neces- sary it will execute the commands on the following lines.
  • 56. page 56 # # A sample makefile # all: bob CC=gcc CFLAGS=-Wall -g LIBS = -lm bob: bob.c bill.o $(CC) $(CFLAGS) bob.c -o bob $(LIBS) bill.o:bill.c bill.h $(CC) $(CFLAGS) -c bill.c Figure 3.15 - A Sample Makefile Initially creating a makefile seems to be alot of effort, but if you run the compiler 10 times you will save enough time to make it worth while. It also makes it easier for others to compile the programs later. 3.7 ARCHITECTURE OF ‘C’ PROGRAMS (TOP-DOWN) 3.7.1 How? A program should be broken into fundamental parts (using functions for each part) and then assembled using functions. Each function consists of programs written using the previous simpler functions.
  • 57. page 57 Example with a Car Frame is like one subroutine which also calls other subroutines like Suspension Frame Suspension Body Engine Wheel Figure 3.16 - Defining Program Structure By Function • A Clear division should be maintained between program levels. • Never use goto’s, they are a major source of logic errors. Functions are much easier to use, once written. • Try to isolate machine specific commands (like graphics) into a few functions. 3.7.2 Why? • A top-down design allows modules to be tested as they are completed. It is much easier to find an error in a few lines of code, than in a complete program. • When programs are complete, errors tend to be associated with modules, and are thus much easier to locate. • Updates to programs are much easier, when we only need to change one function. • It is just as easy to change the overall flow of a program, as it is to change a function. Application of ‘C’ to a CAD Program
  • 58. page 58 3.8 CREATING TOP DOWN PROGRAMS 1. Define Objectives - Make a written description of what the program is expected to do. 2. Define Problem - Write out the relevant theory. This description should include variables, calculations and figures, which are necessary for a complete solution to the problem. From this we make a list of required data (inputs) and necessary results (output). 3. Design User Interface - The layout of the screen(s) must be done on paper. The method of data entry must also be considered. User options and help are also considered here. (There are numerous factors to be considered at this stage, as outlined in the course notes.) 4. Write Flow Program - This is the main code that decides when general operations occur. This is the most abstract part of the program, and is written calling dummy ‘program stubs’. 5. Expand Program - The dummy ‘stubs’ are now individually written as functions. These functions will call another set of dummy ‘program stubs’. This continues until all of the stubs are completed. After the completion of any new function, the program is compiled, tested and debugged. 6. Testing and Debugging- The program operation is tested, and checked to make sure that it meets the objectives. If any bugs are encountered, then the program is revised, and then retested. 7. Document - At this stage, the operation of the program is formally described. For Program- mers, a top-down diagram can be drawn, and a written description of functions should also be given. Golden Rule: If you are unsure how to proceed when writing a program, then work out the problem on paper, before you commit yourself to your programmed solution. Note: Always consider the basic elements of Software Engineering, as outlined in these course notes.
  • 59. page 59 3.9 CASE STUDY - THE BEAMCAD PROGRAM 3.9.1 Objectives: • The program is expected to aid the design of beams by taking basic information about beam geometry and material, and then providing immediate feedback. The beam will be simply sup- ported, and be under a single point load. The program should also provide a printed report on the beam. 3.9.2 Problem Definition: • The basic theory for beam design is available in any good mechanical design textbook. In this example it will not be given. • The inputs were determined to be few in number: Beam Type, Beam Material, Beam Thick- ness, Beam Width, Beam Height, Beam Length, Load Position, Load Force. • The possible outputs are Cross Section Area, Weight, Axial Stiffness, Bending Stiffness, and Beam Deflection, a visual display of Beam Geometry, a display of Beam Deflection. 3.9.3 User Interface: 3.9.3.1 - Screen Layout (also see figure): • The small number of inputs and outputs could all be displayed, and updated, on a single screen.
  • 60. page 60 • The left side of the screen was for inputs, the right side for outputs. • The screen is divided into regions for input(2), input display and prompts(1), Beam Cross section(3), Numerical Results(4), and Beam Deflection(5). 3.9.3.2 - Input: • Current Inputs were indicated by placing a box around the item on the display(1). • In a separate Prompt Box(2), this input could be made. • The cursor keys could be used to cursor the input selector up or down. • Single keystroke operation. • Keys required: UP/DOWN Cursors, F1, F2, F4, numbers from ‘0’ to ‘9’, ‘.’, ‘-’, and <RETURN>. In the spirit of robustness it was decided to screen all other keys. 3.9.3.3 - Output: • Equations, calculations, material types, and other relevant information were obtained from a text. • Proper textual descriptions were used to ensure clarity for the user. • For a printed report, screen information would be printed to a printer, with the prompt area replaced with the date and time. 3.9.3.4 - Help: • A special set of help information was needed. It was decided to ensure that the screen always displays all information necessary(2).
  • 61. page 61 3.9.3.5 - Error Checking: • Reject any input which violates the input limits. • A default design was given, which the user could modify. • An error checking program was created, which gives error messages. 3.9.3.6 - Miscellaneous: • The screen was expressed in normalized coordinates by most sub-routines. • Colors were used to draw attention, and highlight areas.
  • 62. page 62 3.9.4 Flow Program: main() /* * EXECUTIVE CONTROL LEVEL * * This is the main terminal point between the * various stages of setup, input, revision * and termination. * * January 29th, 1989. */ { static int error; if((error = setup()) != ERROR) { screen(NEW); screen(UPDATE); while((error = input()) != DONE) { if(error == REVISED) { screen(NEW); screen(UPDATE); } } error = NO_ERROR; } kill(); if(error == ERROR) { printf(“EGA Graphics Driver Not Installed”); } } Figure 3.17 - A Sample Executive Program 3.9.5 Expand Program: • The routines were written in a top down fashion, in a time of about 30 hours. These routines are listed below.
  • 63. page 63 Routines Used In Package: • main() - to be used as the main program junction. • setup() - to set up graphics mode and printer. • screen() - A function to draw, or refresh part of the screen. In the interest of program speed, this function uses some low level commands. • calculations() - perform the calculations of outputs from the inputs • picture() - draws the beam cross section and deflection of beam. For the sake of speed, this section will use low level commands. • input() - A function which controls the main input loop for numbers, controls, error screening, and any calls to desired routines. Input uses both higher and lower level commands for the sake of speed. • printes() - A function to print the EGA screen. • printer() - A function to remove help messages from the screen, and then dumps the screen to the printer. • Condition and error flags were used to skip unnecessary operations, and thus speed up response. A response of more than 0.5 seconds will result in loss of attention by the user.
  • 64. page 64 High Level Low Level Executive Subroutine Specific Subroutines Top Down main() screen() box() setup() input() printer() kill() picture() In this case we see that most of the routines are at the bot- tom of the design tree. This structure shows a clear division of tasks, to their basic parts. On the above dia- enter() gram, none of the functions calls any of the functions to the left of it, only to the right. In this case main() will call setup(), screen(), input() and kill() directly. draw_line() text() calculations() printes() Machine Dependence Increases Consideration of detail Consideration of flow Figure X - Function Hierarchies 3.9.6 Testing and Debugging: • The testing and debugging was very fast, with only realignment of graphics being required. This took a couple of hours.
  • 65. page 65 3.9.7 Documentation 3.9.7.1 - Users Manual: • The documentation included an Executive Summary of what the Program does. • The Objectives of the program were described. • The theory for beam design was given for the reference of any program user, who wanted to verify the theory, and possible use it. • A manual was given which described key layouts, screen layout, basic sequence of opera- tions, inputs and outputs. • Program Specifications were also given. • A walk through manual was given. This allowed the user to follow an example which dis- played all aspects of the program. 3.9.7.2 - Programmers Manual: • Design Strategy was outlined and given. • A complete program listing was given (with complete comments). • Complete production of this Documentation took about 6 hours. 3.9.8 Listing of BeamCAD Program.
  • 66. page 66 • Written for turbo ‘C’ 3.10 PRACTICE PROBLEMS 1. What are the basic components of a ‘C’ compiler, and what do they do? 2. You have been asked to design a CAD program which will choose a bolt and a nut to hold two pieces of sheet metal together. Each piece of sheet metal will have a hole drilled in it that is the size of the screw. You are required to consider that the two pieces are experiencing a single force. State your assumptions about the problem, then describe how you would produce this pro- gram with a Top Down design. 3. What are some reasons for using ‘C’ as a programming language? 4. Describe some of the reasons for Using Top-Down Design, and how to do it. 3.11 LABORATORY - C PROGRAMMING Purpose: To practice programming in ‘C’. Overview: C programming is an essential tool for developing automated systems. It can be used to develop customized applications for communication and data handling. Pre-Lab: Review C programming. In-Lab:
  • 67. page 67 1. Start up the linux machine, and get X-windows running. 2. Create a new directory with ‘mkdir src’, and then enter the directory with ‘cd src’. 3. Use the ‘kedit test.c’ text editor to enter the program below. #include <stdio.h> main(){ char work[20]; int i, start, stop; printf(“enter a start value:”); scanf(“%d”, &start); printf(“enter a stop value:”); scanf(“%d”, &stop); for(i = start; i <= stop; i++){ printf(“value %d n”, i); } } 4. Compile the program with ‘cc test.c -o test’. Run the program with ‘./test’. 5. Modify the program to only print every second number. 6. Write a number guessing game that will randomly pick a number between 1 and 100. The user can then guess the number, and the computer will give clues ‘high’ or ‘low’ until the value is guessed. The program will then quit. Use a top-down pro- gramming approach. Submit (individually): 1. All program listings, with comments.
  • 68. page 68 4. NETWORK COMMUNICATION Topics: • Networks; topology, OSI model, hardware and design issues • Network types; Ethernet • Internet; addressing, protocols, formats, etc. Objectives: • To understand network types and related issues • Be able to network using Ethernet • To understand the Internet topics related to shop floor monitoring and control 4.1 INTRODUCTION The simplest form of communication is a direct connection between two computers. A net- work will simultaneously connect a large number of computers on a network. Data communications have evolved from the 1800’s when telegraph machines were used to transmit simple messages using Morse code. This process was automated with teletype machines that allowed a user to type a message at one terminal, and the results would be printed on a remote terminal. Meanwhile, the telephone system began to emerge as a large network for interconnect- ing users. In the late 1950s Bell Telephone introduced data communication networks, and Texaco began to use remote monitoring and control to automate a polymerization plant. By the 1960s data communications and the phone system were being used together. In the late 1960s and 1970s modern data communications techniques were developed. This included the early version of the Internet, called ARPAnet. Before the 1980s the most common computer configuration was a cen- tralized mainframe computer with remote data terminals, connected with serial data line. In the 1980s the personal computer began to displace the central computer. As a result, high speed net- works are now displacing the dedicated serial connections. Serial communications and networks
  • 69. page 69 are both very important in modern control applications. 4.2 NETWORKS A computer with a single network interface can communicate with many other computers. This economy and flexibility has made networks the interface of choice, eclipsing point-to-point methods such as RS-232. Typical advantages of networks include resource sharing and ease of communication. But, networks do require more knowledge and understanding. Small networks are often called Local Area Networks (LANs). These may connect a few hundred computers within a distance of hundreds of meters. These networks are inexpensive, often costing $100 or less per network node. Data can be transmitted at rates of millions of bits per second. Many controls system are using networks to communicate with other controllers and computers. Typical applications include; • taking quality readings with a PLC and sending the data to a database computer. • distributing recipes or special orders to batch processing equipment. • remote monitoring of equipment. Larger Wide Area Networks (WANs) are used for communicating over long distances between LANs. These are not common in controls applications, but might be needed for a very large scale process. An example might be an oil pipeline control system that is spread over thou- sands of miles. 4.2.1 Topology The structure of a network is called the topology. Figure 22.12 shows the basic network topologies. The ’Bus’ and ’Ring’ topologies both share the same network wire. In the ’Star’ con- figuration each computer has a single wire that connects it to a central hub.
  • 70. page 70 LAN A Wire Loop Central Connection ... Bus Ring Star Figure 22.12 - Network Topologies In the ’Ring’ and ’Bus’ topologies the network control is distributed between all of the com- puters on the network. The wiring only uses a single loop or run of wire. But, because there is only one wire, the network will slow down significantly as traffic increases. This also requires more sophisticated network interfaces that can determine when a computer is allowed to transmit messages. It is also possible for a problem on the network wires to halt the entire network. The ’Star’ topology requires more wire overall to connect each computer to an intelligent hub. But, the network interfaces in the computer become simpler, and the network becomes more reliable. Another term commonly used is that it is deterministic, this means that performance can be predicted. This can be important in critical applications. For a factory environment the bus topology is popular. The large number of wires required for a star configuration can be expensive and confusing. The loop of wire required for a ring topology is also difficult to connect, and it can lead to ground loop problems. Figure 12.13 shows a tree topology that is constructed out of smaller bus networks. Repeaters are used to boost the signal strength and allow the network to be larger.
  • 71. page 71 ... R Repeater R R R Figure 22.13 - The Tree Topology 4.2.2 OSI Network Model The Open System Interconnection (OSI) model in Figure 22.14 was developed as a tool to describe the various hardware and software parts found in a network system. It is most useful for educational purposes, and explaining the things that should happen for a successful network application. The model contains seven layers, with the hardware at the bottom, and the software at the top. The darkened arrow shows that a message originating in an application program in com- puter #1 must travel through all of the layers in both computers to arrive at the application in com- puter #2. This could be part of the process of reading email.
  • 72. page 72 Layer Computer #1 Unit of Transmission Computer #2 7 Application Message Application 6 Presentation Message Presentation 5 Session Message Session 4 Transport Message Transport 3 Network Packet Network 2 Data Link Frame Data Link 1 Physical Bit Physical Interconnecting Medium Application - This is high level software on the computer. Presentation - Translates application requests into network operations. Session - This deals with multiple interactions between computers. Transport - Breaks up and recombines data to small packets. Network - Network addresses and routing added to make frame. Data Link - The encryption for many bits, including error correction added to a frame. Physical - The voltage and timing for a single bit in a frame. Interconnecting Medium - (not part of the standard) The wires or transmission medium of the network. Figure 22.14 - The OSI Network Model The ’Physical’ layer describes items such as voltage levels and timing for the transmission of single bits. The ’Data Link’ layer deals with sending a small amount of data, such as a byte, and error correction. Together, these two layers would describe the serial byte shown in Figure 22.3. The ’Network’ layer determines how to move the message through the network. If this were for an internet connection this layer would be responsible for adding the correct network address. The ’Transport’ layer will divide small amounts of data into smaller packets, or recombine them into one larger piece. This layer also checks for data integrity, often with a checksum. The ’Session’ layer will deal with issues that go beyond a single block of data. In particular it will deal with
  • 73. page 73 resuming transmission if it is interrupted or corrupted. The ’Session’ layer will often make long term connections to the remote machine. The ’Presentation’ layer acts as an application interface so that syntax, formats and codes are consistent between the two networked machines. For exam- ple this might convert ’’ to ’/’ in HTML files. This layer also provides subroutines that the user may call to access network functions, and perform functions such as encryption and compression. The ’Application’ layer is where the user program resides. On a computer this might be a web browser, or a ladder logic program on a PLC. Most products can be described with only a couple of layers. Some networking products may omit layers in the model. Consider the networks shown in Figure 22.15. 4.2.3 Networking Hardware The following is a description of most of the hardware that will be needed in the design of networks. • Computer (or network enabled equipment) • Network Interface Hardware - The network interface may already be built into the com- puter/PLC/sensor/etc. These may cost $15 to over $1000. • The Media - The physical network connection between network nodes. 10baseT (twisted pair) is the most popular. It is a pair of twisted copper wires ter- minated with an RJ-45 connector. 10base2 (thin wire) is thin shielded coaxial cable with BNC connectors 10baseF (fiber optic) is costly, but signal transmission and noise properties are very good. • Repeaters (Physical Layer) - These accept signals and retransmit them so that longer net- works can be built. • Hub/Concentrator - A central connection point that network wires will be connected to. It will pass network packets to local computers, or to remote networks if they are available. • Router (Network Layer) - Will isolate different networks, but redirect traffic to other LANs. • Bridges (Data link layer) - These are intelligent devices that can convert data on one type of network, to data on another type of network. These can also be used to isolate two networks.
  • 74. page 74 • Gateway (Application Layer) - A Gateway is a full computer that will direct traffic to different networks, and possibly screen packets. These are often used to create fire- walls for security. Figure 22.15 shows the basic OSI model equivalents for some of the networking hardware described before. 7 - application 6 - presentation gateway 5 - session 4 - transport 3 - network switch 2 - data link router bridge 1 - physical repeater Figure 22.15 - Network Devices and the OSI Model Layer Computer #1 Computer #2 7 Application Application 6 Presentation Presentation 5 Session Session Router 4 Transport Transport 3 Network Network Network 2 Data Link Data Link Data Link 1 Physical Physical Physical Interconnecting Medium Figure 22.15X - The OSI Network Model with a Router
  • 75. page 75 4.2.4 Control Network Issues A wide variety of networks are commercially available, and each has particular strengths and weaknesses. The differences arise from their basic designs. One simple issue is the use of the net- work to deliver power to the nodes. Some control networks will also supply enough power to drive some sensors and simple devices. This can eliminate separate power supplies, but it can reduce the data transmission rates on the network. The use of network taps or tees to connect to the network cable is also important. Some taps or tees are simple ’passive’ electrical connections, but others involve sophisticated ’active’ tees that are more costly, but allow longer networks. The transmission type determines the communication speed and noise immunity. The sim- plest transmission method is baseband, where voltages are switched off and on to signal bit states. This method is subject to noise, and must operate at lower speeds. RS-232 is an example of base- band transmission. Carrierband transmission uses FSK (Frequency Shift Keying) that will switch a signal between two frequencies to indicate a true or false bit. This technique is very similar to FM (Frequency Modulation) radio where the frequency of the audio wave is transmitted by changing the frequency of a carrier frequency about 100MHz. This method allows higher trans- mission speeds, with reduced noise effects. Broadband networks transmit data over more than one channel by using multiple carrier frequencies on the same wire. This is similar to sending many cable television channels over the same wire. These networks can achieve very large transmission speeds, and can also be used to guarantee real time network access. The bus network topology only uses a single transmission wire for all nodes. If all of the nodes decide to send messages simultaneously, the messages would be corrupted (a collision occurs). There are a variety of methods for dealing with network collisions, and arbitration. CSMA/CD (Collision Sense Multiple Access/Collision Detection) - if two nodes start talking and detect a collision then they will stop, wait a random time, and then start again. CSMA/BA (Collision Sense Multiple Access/Bitwise Arbitration) - if two nodes start
  • 76. page 76 talking at the same time the will stop and use their node addresses to determine which one goes first. Master-Slave - one device one the network is the master and is the only one that may start communication. slave devices will only respond to requests from the master. Token Passing - A token, or permission to talk, is passed sequentially around a network so that only one station may talk at a time. The token passing method is deterministic, but it may require that a node with an urgent mes- sage wait to receive the token. The master-slave method will put a single machine in charge of sending and receiving. This can be restrictive if multiple controllers are to exist on the same net- work. The CSMA/CD and CSMA/BA methods will both allow nodes to talk when needed. But, as the number of collisions increase the network performance degrades quickly. 4.2.5 Ethernet Ethernet has become the predominate networking format. Version I was released in 1980 by a consortium of companies. In the 1980s various versions of ethernet frames were released. These include Version II and Novell Networking (IEEE 802.3). Most modern ethernet cards will support different types of frames. The ethernet frame is shown in Figure 20.21. The first six bytes are the destination address for the message. If all of the bits in the bytes are set then any computer that receives the message will read it. The first three bytes of the address are specific to the card manufacturer, and the remaining bytes specify the remote address. The address is common for all versions of ethernet. The source address specifies the message sender. The first three bytes are specific to the card manufacturer. The remaining bytes include the source address. This is also identical in all ver- sions of ethernet. The ’ethernet type’ identifies the frame as aVersion II ethernet packet if the value is greater than 05DChex. The other ethernet types use these to bytes to indicate the datal- ength. The ’data’ can be between 46 to 1500 bytes in length. The frame concludes with a ’check- sum’ that will be used to verify that the data has been transmitted correctly. When the end of the transmission is detected, the last four bytes are then used to verify that the frame was received
  • 77. page 77 correctly. 6 bytes destination address 6 bytes source address 2 bytes ethernet type 46-1500 bytes data 4 bytes checksum Figure 22.21 - Ethernet Version II Frame • TCP vs UDP 4.2.6 SLIP and PPP Ethernet connections are not always practical for computers at a distance, or when network- ing hardware is not available. A common alternative is to use a serial connection, such as a tele- phone modem. Network data packets are passed using a protocol such as Serial Line Internet Protocol (SLIP) and Point to Point Protocol (PPP). At present the alternatives for data transfer are listed below. This is a short list, but it can be expected to grow quickly over time. Phone lines with modem (dial up) - this runs at speeds up to 56Kbaud, with a peak data rate of about 3KB/sec. These are used for network connection that lasts from a few minutes to hours. This is very widespread and universally supported, but expect this 40 year old technology to be phased out over the next decade. Direct serial connection - this can be done with a direct connection between serial ports on two computers using SLIP or PPP. The peak rates can reach over 6KB/sec. This method can also be done using a low speed radio modem. Direct parallel connection - this is done by connecting the parallel ports on two computers together and using Parallel Line Interface Protocol (PLIP). Data rates approaching 1MB/sec are possible. ISDN - Integrated Services Digital Network (ISDN) uses dedicated phone lines that
  • 78. page 78 require a special interface card. Data rates reach 56Kbaud, but lines can be added in parallel to increase the speed. These tend to be high cost and are less popular. DSL - Digital Subscriber Line (DSL) - This technology uses an existing residential phone line, but at frequencies above the audio range. The network connection is always active, but telephone usage can be permitted at any time. These have a faster data transfer rate than dial up connections, but still have a higher cost. Cable - These broadband networks provide a permanent network connection that uses existing cable television networks. Special networking hardware is required. These networks are notable because the download speeds is higher than the download speed. Satellite - These connections are available at a high cost and are suitable for remote loca- tions where other communications access is not possible. Fiber - Not available yet, but should be soon in high population areas. Expect very high speed access. 4.3 INTERNET The Internet is a collection of networking technologies, such as Ethernet, SLIP, PPP and oth- ers that allows computers to communicate and exchange information. The concept of the Internet began with ARPANET which was funded as a Department of Defense project in 197x. In 198x the Internet was developed, and began to replace the ARPANET. By the late 1980s the Internet was widespread between most universities, colleges, major companies and government agencies around the world. Finally, the Internet hit widespread public usage by the mid 1990s. Today it is the accepted defacto standard network in the world. Originally the Internet was used to exchange email and files. It was common to anonymously log into a remote computer, with FTP, and upload and download files. In the early 1990s a number of new applications were developed to make interaction with remote computers easier. For exam- ple ’archie’ made it easy to search for files by names. ’wais’ and ’gopher’ were early predecessors to ’mosiac’ which then lead to ’netscape’. At that time (about 1993) the face of the internet started to change, thanks to the World Wide Web (WWW). Non-professional users of the internet started to arrive through the America On-Line (AOL) service. This also coincided with the first major case of ’spam’, where a legal firm mass mailed advertisements for immigration services. Finally, by the mid 1990s microsoft stopped referring to the Internet as a ’fad’. Today, most people and
  • 79. page 79 companies vie for an Internet presence. This section will outline some of the core concepts that are important when designing appli- cations that use the Internet. 4.3.1 Computer Addresses Most users are familiar with text computer names, such as ’www.gvsu.edu’. But, these names are only for convenience, and the same computer can have multiple names. Consider the example below. The machine ’claymore.engineer.gvsu.edu’ can also be called with ’www.eod.gvsu.edu’. In actuality, each computer on the network has a unique four number address. Both of the names below refer to the same computer with the numerical address ’148.61.104.215’. The digits of the address can range from 0 to 255. Machine Name: claymore.engineer.gvsu.edu Alternate Name: www.eod.gvsu.edu IP Number: 148.61.104.215 When a text computer name is supplied it is converted to a numerical address before network access occurs. Consider the case where a computer name is typed into a web browser. The web browser will then call another computer called a Domain Name Server (DNS). The DNS com- puter has a database of local and remote computers names and numbers. It will convert the com- puter name to a number, and then return it to the web browser. The web browser then uses the computer number to connect to the named computer. The number has four parts. The first two digits ‘148.61’ indicate to all of the internet that the computer is at ‘gvsu.edu’ (we actually pay a yearly fee to register this). The third number indi- cates what LAN the computer is located on (Basically each sub-network has its own number). Finally the last digit is specific to a machine. This addressing method makes it easy to direct net-
  • 80. page 80 work traffic. There are different classes on networks. The largest is a class A, in which the entire network begins with the same number such as ’148.’, allowing up the last three numbers to be used for local network addresses. The next smaller network is class B, in which the first two numbers are designated, for example ’148.61.’. A class C network specifies the first three digits, such as ’148’61.104.’, and can have up to 256 addresses. The ’netmask’ indicates how many computers can be on a network. A common netmask is ’255.255.255.0’ which indicates the local network can have up to 256 computers. A netmask of ’255.255.255.254’ would indicate that there are only two computers on the network. When a packet of information is sent it passes through many computers between the sender and receiver. Each of the computers is configured to know where the next computer is upstream and downstream. The ’gateway’ is the computer on a local area network that passes a packet out to the Internet. For example, if my computer address is 192.168.1.20, the gateway is probably 192.168.1.254. Any packets travelling to/from the Internet will travel through the gateway com- puter. The current standard of four number network addresses is called IPV4. This addressing scheme is ultimately limited, and so the address space is being expanded from four numbers to six in the newer IPV6 standard. This standard also introduces some enhancements for security and other applications. 4.3.2 Computer Ports On the network information is sent in packets. These are addressed to a computer using the IPV4 address, but they also include a port number between 0 and 65535. The port number indi- cates what service they are trying to access. In general the first 1000 are allocated to well known and agreed upon services, such as email and web serving. Other port numbers in the low thou-
  • 81. page 81 sands are for less common network services, and numbers in the high thousands are used by user programs. An abbreviated list of common network ports is given below. On any computer the may or may not be active. 23? 24? - telnet xxx - ftp 25 - smtp 80 - http 110 - pop3 118 - sqlserv 143 - imap 515 - printer 520 - router 1433 - mssql 26000 - quake 4.3.2.1 - Mail Transfer Protocols Sending and receiving email involves different protocols. Mail is sent using a protocol called Simple Mail Transfer Protocol (SMTP). Mail is retrieved with Post Office Protocol (POP) or Internet Mail Access Protocol (IMAP). All of these protocols are handled with programs listening on different ports on the server. 4.3.2.2 - FTP - File Transfer Protocol File Transfer Protocol (FTP) is a very old and well supported method for transferring files between computers. Advanced users will often use it with typed commands, but there are also hundreds of graphical clients that hide the typed commands. 4.3.2.3 - HTTP - Hypertext Transfer Protocol Hypertext Transfer Protocol (HTTP) is used for retrieving web pages from remote sites. It uses simple commands to get text files from the remote computer.
  • 82. page 82 4.3.3 Security In normal situations the main focus of security is to protect access to data systems and the information they contain. When dealing with automated systems security issues could lead to major economic losses through damaged equipment, or even loss of life! Security violations normally come from disgruntled employees, but recently anonymous crackers (incorrectly called hackers in the press) have become a significant threat. Modern operat- ing systems and software are often designed with some security features. Most assume that there is limited physical access to the computer. The most elaborate security system doesn’t work if the the hard drive is stolen. The best strategy to keep a system safe is to understand how hackers can break into a computer. What follows are the most common type of attacks. Social engineering involves the use of people and trust to get access to a computer. This often involves understanding the psychology of trust and exploiting it to get passwords and other infor- mation. A common ruse to get an employee password is as follows. Call an employee in a com- pany likely to have a high level of software access, such as a secretary of a high level executive. Claim to be from the IT (Information Technology) department, talk for a while and then ask for help solving a problem with the password account. When agreement is obtained, ask the secretary to change the account password, and let you know what the new one is. Crackers will also practice ’surfing’. Shoulder surfing involves peeking over the shoulder of users as they enter passwords. Garbage surfing involves taking a garbage can before being emp- tied and searching the contents for useful information, such as credit card numbers. Cubicle surf- ing involves checking for posted passwords around computers. Some users hate to remember passwords and will post them for all to see (or sometimes taped to the bottom of the keyboard). To protect against these types of problems the following strategies help, • inform users that their passwords are to be given to NOBODY, especially unseen.
  • 83. page 83 • allow users to select their own password, they are more likely to remember them, and not write them down. Assigning cryptic passwords and changing them often ensures that even the most advanced users will write it down somewhere. • check user passwords for simplicity. Problem passwords include a single word in the dic- tionary, a users first/last name, a first/name followed by ’1’, common jargon and popular phrases, curse words, etc. • watch the activity of simpler users. One easy way to do this is with the command ’last | more’. This will show a list of users, when they logged in, and how they logged in. Look for irregularities, such as a low end user who suddenly starts using telnet and ftp. • set up access policies for users and equipment. Keep unauthorized people away from secure computers and work areas. The advent of the Internet has made anonymous crackers more common. Most computers can be accessed from the Internet, even if indirectly. Two major threats include a denial of service (DOS) attack and a break-in. DOS attacks involve flooding a site with irregular network packets, sent from other computers (that were victims of break-ins). The outcome of this attack is that net- work access slows so much it becomes unusable. Break-ins occur when a security hole is found in the operating system, or when a virus or tro- jan horse is downloaded by a user. Security holes in an operating system often involve network services, such as ftp and mail servers. When planning to break into a computer most crackers will first identify which services are active on a computer. After this they will try to exploit known vulnerabilities to get access to the computer. After breaking in they will try to install software so that they will have future access to the computer, and hide their presence. Most crackers will return to the computer they have broken into numerous times until discovered. Viruses are designed to spread indesciminately and infect computers. Once infected the virus often lays dormant for a while before executing some mission such as spreading to other pro- grams/files, displaying a message, or erasing a hard drive. Like real viruses, the damaging ones often burn-out quickly, the milder ones spread and become a nuisance. Previously these were only spread through downloaded programs, and they could only be activated by somebody running software. Recently viruses have started to exploit holes in consumer oriented software. In simple terms, the same features that make the software easy to use also make it a security threat. This means that users can get viruses from an email message without reading it. Trojan horses are pro-
  • 84. page 84 grams that actually do something useful (unlike viruses). but they include some ’unwanted extras’. These might give a cracker access to the system running the trojan horse program, or worse. These can be added to trusted software by modifying the source code of a useful software package, and then releasing it for use. Administrators might download and install the software believing it is the regular version, but instead install the security holes. These security problems can be lessened with the following strategies. • Networking hardware is available to reduce or eliminate the effects of DOS attacks, this should be considered on any critical internet sites. • Security holes can be closed by applying software patches are made available when vul- nerabilities are discovered. These should be downloaded and applied whenever available. Security advisories are available from (www.cert.net?) and (www.bugtraq.org?). • Firewalls can be used to shield critical, or vulnerable computers from outside access. • To avoid viruses (mostly for microsoft computers) - Don’t download and run programs from untrusted sources. Use virus checking software, and keep it updated. • Don’t use servers for tasks other than serving, especially with convenience software, such as mail readers. • Avoid trojan horses by only downloading software from a trusted site. When breaking into a computer the goal is to obtain the ’root’ or ’Administrator’ account. If a cracker ever gets a few minutes at the keyboard logged in as ’root’ or ’Administrator’, they can give themselves easy access. System administrators should not leave their account logged in with- out an automatic screen lock function. The administrator should also track the usage of their account to look for any irregular activities. 4.3.3.1 - Firewalls and IP Masquerading A firewall is a single computer that acts as a point of contact between an untrusted network (the Internet) and a secure network. The firewall computer will have two or more network cards that it will monitor differently. Generally it is set up to allow traffic to pass from the internal net- work to the outside world with greater freedom than it allows network traffic to enter the secure network. This allows computers behind a firewall to get access to outside computers. Any requests they make are mirrored to outside computers, who may then respond to the requests. Requests from computers behind the firewall all seem to come from the firewall itself. There is no
  • 85. page 85 way for an outside computer to access a computer behind the firewall. 4.4 FORMATS Formats are different from protocols, although they are often confused. Protocols are used for transferring information, but formats define the information format. For example, http is a proto- col often used for transferring files. The most common file format transferred with http is html, although it can transfer other types of files. 4.4.1 HTML Hyper Text Markup Language (HTML) is the defacto standard format for information on the World Wide Web (WWW). It basically allows text to be generally formatted with embedded images. When viewed, the display is adjusted to suit the browser. These documents also include hypertext links that allow a user to go to another HTML page, or download a file by ’clicking’ on linked text. Recently there have been many additions that allow more control over the ’look-and- feel’, but result in larger files and less portability. HTML files can be created with programs, or edited by hand. A simple HTML file is shown in Figure X.X. It uses tags to define the beginning and end of definitions. The entire document begins and ends with the tags ’<HTML>’ and ’</HTML>’. The body of the document begins and ends with ’<BODY>’ and ’</BODY>’. Highlighted text is between ’<Hx>’ and ’</Hx>’, where ’x’ varies from ’1’ for the boldest to ’5’ to the lightest. Lists can be defined with the tags ’<UL>’ and ’</UL>’, and each point in the list begins with ’<LI>’.
  • 86. page 86 HTML File: <HTML> <BODY> <H1>Title</H1> <P>This is a list</P> <UL> <LI>One <LI>Two </UL> </BODY> </HTML> The Output: Title This is a list • One • Two Figure X.X - A Simple HTML File and The Output The file in Figure X.X add a few features to the previous example. The first part is a header section that defines a title of the document. This title will appear on the top bar of the browser window. An image will appear after the heading and before the list, the image displayed is called ’test.gif’. The two items in the list now have hypertext links. The first is to a file called ’other.html’, the second is to another web site ’www.cnn.com’.
  • 87. page 87 <HTML> <HEAD> <TITLE>A Sample Page</TITLE> </HEAD> <BODY> <H1>Title</H1> <P>This is a list</P> <IMG SRC="test.gif"> <UL> <LI><A HREF="another.html">One</A> <LI><A HREF="http://www.cnn.com">Two</A> </UL> </BODY> </HTML> Figure X.X - A More Advanced HTML File 4.4.2 URLs • In HTML documents we need to refer to resources. To do this we use a label to identify the type of resource, followed by a location. • Universal Resource Locators (URLs) - http:WEB_SITE_NAME - ftp:FTP_SITE_NAME - mailto:USER@MAIL_SERVER - news:NEWSGROUP_NAME
  • 88. page 88 4.4.3 Encryption • Allows some degree of privacy, but this is not guaranteed. • Basically, if you have something you don’t want seen, don’t do it on the computer. 4.4.4 Clients and Servers • Some computers are set up to serve others as centers of activity, sort of like a campus library. Other computers are set up only as users, like bookshelves in a closed office. The server is open to all, while the private bookshelf has very limited access. • A computer server will answer requests from other computers. These requests may be, - to get/put files with FTP - to send email - to provide web pages • A client does not answer requests. • Both clients and servers can generate requests. • Any computer that is connected to the network Client or Server must be able to generate requests. You can see this as the Servers have more capabilities than the Clients. • Microsoft and Apple computers have limited server capabilities, while unix and other computer types generally have more. Windows 3.1 - No client or server support without special software Windows 95 - No server support without special software Windows NT - Limited server support with special versions MacOS - Some server support with special software Unix - Both client and server models built in • In general you are best advised to use the main campus servers. But in some cases the extra effort to set up and maintain your own server may also be useful. • To set up your own server machine you might, 1. Purchase a computer and network card. A Pentium class machine will actually provide more than enough power for a small web site. 2. Purchase of copy of Windows NT server version. 3. Choose a name for your computer that is easy to remember. An example is ‘artsite’.
  • 89. page 89 4. Call the Information technology people on campus, and request an IP address. Also ask for the gateway number, netmask, and nameserver numbers. They will add your machine to the campus DNS so that others may find it by name (the number will always work if chosen properly). 5. Connect the computer to the network, then turn it on. 6. Install Windows NT, and when asked provide the network information. Indicate that web serving will be permitted. 7. Modify web pages as required. 4.4.5 Java • This is a programming language that is supported on most Internet based computers. • These programs will run on any computer - there is no need for a Mac, PC and Unix version. • Most users don’t need to program in Java, but the results can be used in your web pages 4.4.6 Javascript • Simple programs can be written as part of an html file that will add abilities to the HTML page. 4.4.7 CGI • CGI (Common Gateway Interface) is a very popular technique to allow the html page on the cli- ent to run programs on the server. • Typical examples of these include, - counters - feedback forms - information requests 4.5 NETWORKING IN LINUX
  • 90. page 90 Configuration files are under /etc Recompile kernel in some cases, such as a firewall. or new hardware Loadable modules DHCP versus static IP Most modern versions of Linux simplify hardware detection and setup. The steps below can help perform the basic operations, or find problems. A. Installing a normal ethernet network connection: 1. During the installation process you will be asked for network parameters. 2. Enter a unique name for the machine and the network name. 3. (for DHCP) All that should be required is a setting for DHCP. 3. (for a static IP) You will need to enter the static IP number for the machine, as well as a netmask and gateway. If you are connecting to another network you can get these from a network administrator. If you are connecting your own network (not on the Internet) you can simply pick values like those below. Note that you need some sort of network router with an IP address of 192.168.1.254 for this to work. IP address: 192.168.1.20 netmask: 255.255.255.0 Gateway: 192.168.1.254 nameserver: none B. Troubleshooting an ethernet connection to the Internet, 1. Check to see if the network card is recognized with ’more /proc/modules’ The card should be in the list. If not the kernel module must be installed. 2. Check to see if the network is setup with ifconfig. You should see ’eth0’ or something similar. If it is not setup, the network parameters must be checked. 3. Check to see if the network is connected properly with ping to the local gateway, or another local machine - use the IP number, not the name. For example, ’ping 148.61.104.254’. If this fails the gateway or broadcast addresses are probably incorrect. 4. Check the connection to the outside with a ping such as ’ping 148.61.1.10’. If this is not allowed there is probably a problem with the outside connection 5. Verify that the nameserver is working alright with a ping to a named machine such as, ’ping www.linux.org’. 6. If all of these things work the network connection should be alright. C. Installing a dialup connection 1. During the installation make sure that the location of your modem is correctly identi- fied. Note: Winmodems are very popular because of their low cost, but there are very few Linux drivers. But... you are advised to spend the money for a non-Win- modem anyway, they are more reliable and they don’t use your computers
  • 91. page 91 resources. 2. D. Troubleshooting a dialup connection 1. Use a terminal program to dial the Internet service provider’s number manually. If you don’t get a response there is a problem with the modem installation. 2. After connected try providing your login ID and password and see if you get in. Expect to see garbage after this. If login is refused you need to check the user ID and pass- word again. 3. Check ... E. Setting up a firewall (this requires some work) 1. To set up a firewall the kernel must be recompiled to include network options such as multicasting, and firewall services. [KERNEL OPTIONS] 2. Shut down the computer and add a second network card in the machine and reboot. 3. Check to see if the card is recognized with ’more /proc/modules’. Both ethernet cards should be listed. If not you will need to edit the network startup files. These are normally in ’/etc/...’ or for slackware ’/etc/rc.d’. An example file follows. Reboot and check for both network cards again. [NETWORK CONFIG FILES] 4. Use ’ipchains’ to add services to pass, and modify the ’hosts.allow’ and ’hosts.deny’ files to control access. [ipchains file declarations] [hosts.allow file] [hosts.deny file] 4.5.1 Network Programming in Linux The following listings show network usage in Linux. The general method of network connec- tion is different for servers and clients. For servers..... For clients.... Listing X.1 - network_io.cpp
  • 92. page 92 #include "network_io.h" #include <sys/poll.h> #include <sys/ioctl.h> #include <linux/tcp.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <fcntl.h> network_io::network_io(){ type = _READ; level = 0; } network_io::~network_io(){ if(type == _READ){ if(level > 1){ if(level > 2){ end_read_connection(); } deinit_read(); } } else if (type == _WRITE){ } } int network_io::set_remote_host(char *_host_name, int host_socket){ static int error; static int nm_a, nm_b, nm_c, nm_d; struct hostent*hp; unsigned charaddress[4]; error = NO_ERROR; strcpy(host_name, _host_name); host_socket_number = host_socket; // Set up server descriptor, get host reference and error trap write_connection.sin_family = AF_INET; if((host_name[0] > ’9’) ||(host_name[0]<’0’)){ hp = gethostbyname(host_name); } else { sscanf(host_name, "%d.%d.%d.%d", &nm_a, &nm_b, &nm_c, &nm_d); address[0] = (unsigned char)(nm_a); address[1] = (unsigned char)(nm_b); address[2] = (unsigned char)(nm_c); address[3] = (unsigned char)(nm_d); hp = gethostbyaddr((char *)address, 4, AF_INET); } if(hp != 0){ /* complete descriptor set up. */ bcopy((char *)hp->h_addr,
  • 93. page 93 (char *)&(write_connection.sin_addr), hp->h_length); } else { error_log(MINOR, "ERROR: unknown network host"); error = ERROR; } return error; } int network_io::set_local_host(int socket_num){ static int error; error = NO_ERROR; socket_number = socket_num; return error; } int network_io::writer(char *string){ static int error; error = NO_ERROR; // Open a new socket for the write, and check for errors. error = init_write(); if(error == NO_ERROR) error = open_write_connection(); if(error == NO_ERROR) error = write_to_connection(string); if(error == NO_ERROR) error = end_write_connection(); if(deinit_write() == ERROR) error = ERROR; return(error); } int network_io::reader(char *buf, int length){ static interror; // Error return variable error = NO_ERROR; // Wait for a socket connection request, then get its reference. buf[0] = 0; if(wait_read_connection() == NO_ERROR){ if(read_from_connection(buf, length) == ERROR){ } // Close socket connection to remote write client. end_read_connection(); } return(error); } int network_io::init_write(){ static int error; struct hostent *gethostbyname(); error = NO_ERROR; /* Open a new socket for the write, and check for errors. */ if((rw_socket = socket(AF_INET, SOCK_STREAM, 0)) >= 0){
  • 94. page 94 write_connection.sin_port = htons(host_socket_number); } else { error_log(MINOR, "ERROR: opening stream socket"); error = ERROR; } return error; } int network_io::open_write_connection(){ static int error; error = NO_ERROR; if(connect(rw_socket, (struct sockaddr *) &(write_connection), sizeof(write_connection)) < 0){ error = ERROR; error_log(MINOR, "ERROR: Connecting stream Socket"); } return error; } int network_io::write_to_connection(char *text){ static int error; error = NO_ERROR; if(write(rw_socket, text, strlen(text) /* +1 */) < 0){ error_log(MINOR, "ERROR: writing on stream socket"); error = ERROR; } return error; } int network_io::write_stuff_done(){ int error; error = NO_ERROR; return error; } int network_io::check_connection(){ int error; int count; struct pollfd ufds; error = NO_ERROR; ufds.fd = rw_socket; ufds.events = POLLOUT | POLLIN | POLLPRI | POLLERR | POLLHUP | POLLNVAL; count = poll(&ufds, 1, 0); if((ufds.revents & 16) != 0) error = ERROR; return error; } int network_io::end_write_connection(){ static int error; error = NO_ERROR;
  • 95. page 95 return error; } int network_io::deinit_write(){ static int error; error = NO_ERROR; close(rw_socket); rw_socket = ANY; return error; } int network_io::init_read(){ static int error; // low level socket number unsigned length; // temporary work variable static struct sockaddr_inserver; // read socket descriptor static struct hostent*hp; char text[100]; // Open internet socket, and check for error. error = ERROR; gethostname(text, 100); /* who are we? */ hp = gethostbyname(text); if((hp != NULL) && (read_socket = socket(AF_INET, SOCK_STREAM, 0)) >= 0){ // Set up server descriptor for binding name. memset(&server, 0, sizeof(struct sockaddr_in)); server.sin_family = hp->h_addrtype; server.sin_port = htons(socket_number); // Bind the socket, and check for error. level = 1; int flag = 1; setsockopt(read_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&flag, sizeof(int)); if(bind(read_socket, (struct sockaddr *)&server, sizeof(struct sockaddr_in)) >= 0){ // Check for valid socket binding length = sizeof(server); if(getsockname(read_socket, (struct sockaddr *)&server, &length) >= 0){ error = NO_ERROR; // Set up variables for success // Zero because anything higher would allow // messages to arrive out of sequence. listen(read_socket, 0); } else { error_log(MINOR, "ERROR: getting socket name"); } } else { error_log(MINOR, "ERROR: binding stream socket"); } } else { error_log(MINOR, "ERROR: opening stream socket"); } return(error); } int network_io::read_stuff_waiting(){ int error, count; struct pollfd ufds;
  • 96. page 96 error = ERROR; ufds.fd = read_socket; ufds.events = POLLIN | POLLPRI | POLLOUT; count = poll(&ufds, 1, 0); if((ufds.revents & 1) > 0){ error = NO_ERROR; } return error; } int network_io::wait_read_connection(){ static int error; unsigned size; static struct sockaddr addr; error = NO_ERROR; size = sizeof(struct sockaddr); fcntl(read_socket, F_SETFL, O_NONBLOCK); rw_socket = accept(read_socket, &addr, &size); level = 2; if(rw_socket < 0){ error = ERROR; // error_log("ERROR: warning:accept"); } return error; } int network_io::read_from_connection(char *buf, int length){ int error; int len; error = NO_ERROR; // Empty input buffer buf[0] = 0; // Read string into buffer from socket fcntl(rw_socket, F_SETFL, O_NONBLOCK); len = read(rw_socket, buf, length); if(len < 0){ // error_log("ERROR: reading stream message"); // error = ERROR; if(errno != 11){ printf("errno=%d ", errno); } } else { buf[len] = 0; } return error; } int network_io::end_read_connection(){ int error; int a; error = NO_ERROR; a = close(rw_socket); level = 1;
  • 97. page 97 return error; } int network_io::deinit_read(){ int error; int a; error = NO_ERROR; a = close(read_socket); level = 0; return error; } char *network_io::get_address(){ static char work[MAXIMUM_HOST_NAME_LENGTH]; struct sockaddr_inaddress; int i, addr[4]; long int_address; #ifndef SGI // Sun Version get_myaddress(&address); int_address = address.sin_addr.s_addr; #else // SGI Version int_address = gethostid(); #endif // SUN & SGI version for(i = 0; i < 4; i++){ addr[i]=int_address & 0xFF; int_address >>= 8; } #ifdef OTHER_UNIX sprintf(work, "%d.%d.%d.%d", (int)addr[3], (int)addr[2], (int)addr[1], (int)addr[0]); #else // This is for linux sprintf(work, "%d.%d.%d.%d", (int)addr[0], (int)addr[1], (int)addr[2], (int)addr[3]); #endif return work; } char *network_io::get_remote_client(){ staticchar work[100]; struct sockaddr address; socklen_t len; len = sizeof(address); if(getpeername(rw_socket, &address, &len) == 0){ sprintf(work, "%u.%u.%u.%u", address.sa_data[2], address.sa_data[3], address.sa_data[4], address.sa_data[5]); // printf("Got address [%s]n", work); //strcpy(work, address); } else { strcpy(work, "unknown network address"); } return work; }
  • 98. page 98 Listing X.2 - network_io.h #ifndef _NETWORK_IO #define _NETWORK_IO #include <errno.h> #include <linux/socket.h> #include <sys/types.h> #include <netdb.h> #include <rpc/rpc.h> #include <unistd.h> #define ANY 0 // Indicates no socket number prechosen #define MAXIMUM_HOST_NAME_LENGTH100 class network_io{ public: int socket_number; int rw_socket; // int read_connection; char host_name[MAXIMUM_HOST_NAME_LENGTH]; int host_socket_number; int read_socket; struct sockaddr_inwrite_connection; // char incoming_string[MAXIMUM_STRING_SIZE]; int type; int level; #define _READ 200 #define _WRITE 201 network_io(); ~network_io(); int set_remote_host(char*, int); int set_local_host(int); int reader(char*, int); int writer(char*); int init_write(); int open_write_connection(); int write_to_connection(char*); // int write_to_read_connection(char*); int end_write_connection(); int deinit_write(); int init_read(); int wait_read_connection(); int read_from_connection(char*, int); // int read_from_write_connection(char*, int); int end_read_connection(); int deinit_read(); int read_stuff_waiting(); int write_stuff_done(); int check_connection(); char* get_remote_client(); char *get_address(); };
  • 99. page 99 #endif Listing X.3 - network.cpp #include "../network_io/network_io.h" #include <time.h> network_io *network; int mode; char *params; char received_temp[200]; int connect_flag; time_t now_time; time_t last_time; int timeout; int main(){ timeout = 5; // the default timeout return 1; } int deinit(){ int error; error = NO_ERROR; if(network != NULL) delete network; return error; } int process_command(); int check_network(); int step(){ int error; error = NO_ERROR; error = check_network(); if(error == NO_ERROR) error = process_command(); return error; } int check_network(){ int error; error = NO_ERROR; if(*state == WAITINGFORCONNECTION){ if(connect_flag == TRUE){
  • 100. page 100 if(mode == LISTENER){ if(network->wait_read_connection() == NO_ERROR){ char text[200]; *state = CONNECTIONESTABLISHED; *received_flag = FALSE; *send_flag = FALSE; sprintf(text, "Got a connection from %s", network- >get_remote_client()); error_log(WARNING, text); time(&last_time); } } else if(mode == TALKER){ if(network->open_write_connection() == NO_ERROR){ *state = CONNECTIONESTABLISHED; *received_flag = FALSE; *send_flag = FALSE; time(&last_time); } } } } else if(*state == CONNECTIONESTABLISHED){ if(*send_flag == TRUE){ network->write_to_connection(send_buf); // printf("Sending String [%s]n", send_buf); send_buf[0] = 0; *send_flag = FALSE; // time(&last_time); // You can keep the connection alive by writing // but this doesn’t guarantee that the remote client is still there } if(*received_flag == FALSE){ if(network->read_from_connection(received_temp, 199) != ERROR){ if(strlen(received_temp) > 0){ strcpy(received, received_temp); *received_flag = TRUE; time(&last_time); // printf("Got String [%s]n", received); } } } time(&now_time); if((network->check_connection() == ERROR) || ((mode == LISTENER) && (difftime(now_time, last_time) > timeout))){ if(mode == LISTENER){ network->end_read_connection(); } else if(mode == TALKER){ network->end_write_connection(); } *state = WAITINGFORCONNECTION; connect_flag = FALSE; } } return error; } int process_command(){ int error; int i, len; int port; error = NO_ERROR; if(*change_lock == TRUE){ if(*command == INITIALIZE){
  • 101. page 101 if(*state == NOTINITIALIZED){ if(mode == LISTENER){ port = atoi(params); if(port > 0){ network = new network_io(); network->set_local_host(port); network->init_read(); //now ready to listen *state = WAITINGFORCONNECTION; connect_flag = FALSE; } else { error_log(MINOR, "Parameter did not hold a valid port"); *error_flag = ERROR; } } else if(mode == TALKER){ len = strlen(params); for(i = 0; i < len; i++){ if(params[i] == ’:’){ params[i] = 0; port = atoi(&(params[i+1])); break; } } if((i < len) && (port > 0)){ network = new network_io(); network->set_remote_host(params, port); network->init_write(); *state = WAITINGFORCONNECTION; connect_flag = FALSE; } else { error_log(MINOR, "Address string was not properly formed"); *error_flag = ERROR; } } else { error_log(MINOR, "ERROR: Mode not defined yet"); *error_flag = ERROR; } } else { error_log(MINOR, "Network talker initialize command in wrong state"); *error_flag = ERROR; } } else if(*command == CONNECT){ if(*state == WAITINGFORCONNECTION){ connect_flag = TRUE; } } else if(*command == DISCONNECT){ if(*state == CONNECTIONESTABLISHED){ if(mode == TALKER){ network->end_write_connection(); } else if (mode == LISTENER){ network->end_read_connection(); } *state = WAITINGFORCONNECTION; connect_flag = FALSE; } else { error_log(MINOR, "Cannot disconnect network unless connected"); *error_flag = ERROR; } } else if(*command == UNINITIALIZE){ if(*state == WAITINGFORCONNECTION){ if(mode == TALKER){
  • 102. page 102 network->deinit_write(); } else if (mode == LISTENER){ network->deinit_read(); } delete network; network = NULL; *state = NOTINITIALIZED; } else { error_log(MINOR, "Cannot uninitialize network unless waitingforconnection"); *error_flag = ERROR; } } else if(*command == SET){ if(*operand1 == MODE){ if(*state == NOTINITIALIZED){ mode = *operand2; } else { error_log(MINOR, "Can’t set network mode after initialization"); *error_flag = ERROR; } } else if(*operand1 == PARAM){ if(*state == NOTINITIALIZED){ if(params != NULL) delete params; params = new char[strlen(operand3)+1]; strcpy(params, operand3); } else { error_log(MINOR, "Can’t set network parameters, in wrong state"); *error_flag = ERROR; } } else if(*operand1 == TIMEOUT){ timeout = *operand2; } else { error_log(MINOR, "Network SET type not recognized"); *change_lock = FALSE; *error_flag = ERROR; } } else { error_log(MINOR, "Network command not recognized"); *error_flag = ERROR; } } *change_lock = FALSE; return error; } 4.6 DESIGN CASES Consider the case of the network
  • 103. page 103 4.7 SUMMARY • Networks come in a variety of topologies, but buses are most common on factory floors. • The OSI model can help when describing network related hardware and software. • Networks can be connected with a variety of routers, bridges, gateways, etc. • Ethernet is common, and can be used for high speed communication. • The internet can be use to monitor and control shop floor activities. 4.8 PRACTICE PROBLEMS 1. Explain why networks are important in manufacturing controls. (ans. These networks allow us to pass data between devices so that individually controlled sys- tems can be integrated into a more complex manufacturing facility. An example might be a serial connection to a PLC so that SPC data can be collected as product is made, or recipes downloaded as they are needed.) 2. Is the OSI model able to describe all networked systems? (ans. The OSI model is just a model, so it can be used to describe parts of systems, and what their functions are. When used to describe actual networking hardware and software, the parts may only apply to one or two layers. Some parts may implement all of the layers in the model.) 3. What are the different methods for resolving collisions on a bus network? (ans. When more than one client tries to start talking simultaneously on a bus network they inter- fere, this is called a collision. When this occurs they both stop, and will wait a period of time before starting again. If they both wait different amounts of time the next one to start talking will get priority, and the other will have to wait. With CSMA/CD the clients wait a random amount of time. With CSMA/BA the clients wait based upon their network address, so their pri- ority is related to their network address. Other networking methods prevent collisions by limit- ing communications. Master-slave networks require that client do not less talk, unless they are responding to a request from a master machine. Token passing only permits the holder of the token to talk.)
  • 104. page 104 4.9 LABORATORY - NETWORKING Purpose: To expose you to the architecture and components of a modern computer network. Objectives: To be able to set up a switch and computers to communicate over an Intranet network. Background: Computers can be connected via a network. At a minimum this requires a network card in at least two computers and a connecting cable between them. These computers can then pass packets of information back and forth for basic communication. This type of connection is commonly used by people playing games such as Quake at home. A more mature network, like that found in a factory, must be more sophisto- cated. The most fundamental concept in a network is the data packets and the protocol for exchanging them. The current Internet protocol is called IPV4 (this will be replaced by IPV6 in the near future). In this protocol each client on a network has a 4 byte (0-255) address, normally shown in the form ‘aaa.bbb.ccc.ddd’. In our case the university is a ‘class B’, so it owns all addresses that start with ‘148.61.ccc.ddd’. Most engineering students use a ‘class C’ network with the addresses ‘148.61.104.ddd’. In theory there are up to 256 clients on the engineer- ing network. In practice some of these addresses are used for network housekeep- ing. For example the following addresses are used, 148.61.104.1 - this is the router/switch to other networks 148.61.104.254 - this is the gateway to other networks If a network address is not used, it can be used by a normal network device, such as a com- puter or printer. There are two ways to assign these statically or dynamically. In a static connection the address can only be used by one machine. In a dynamic con- nection the addresses are assigned and release semi-randomly to network clients as the connect and disconnect from the network. Static IP addresses are primarily designed for computers that are always on, and are acting as servers on the net- work. Dynamic IP addresses are primarily used for computers that are only clients on the network. Some examples of static IP addresses on the network are: 148.61.104.215 - claymore.engineer.gvsu.edu 148.61.104.226 - excalibur.engineer.gvsu.edu 148.61.104.??? - falcon.engineer.gvsu.edu etc.. Most computers on the network are named, such as ‘gvsu.edu’. When a user enters this name into the computer, it must be converted to a network number. This is done by a ‘domain name server’ (DNS). There are two DNS servers at GVSU (148.61.1.10 and 148.61.1.15). These servers keep all of the names for computers at GVSU, and also provide links to computers at other sites so that their names and numbers can
  • 105. page 105 also be searched. Although the engineering student network is ‘148.61.104.ddd’, it is actually a collection of smaller networks (sub-nets). The smaller networks are connected together with network devices called switches/hubs/routers. These are basically small computers with multiple network connections (often 24). Each computer is connected to the hub. The hub then looks at each network packet coming from a computer. If it is going to another computer connected to the same hub, it will be sent there directly. Otherwise it is sent ‘up-stream’ to a router that will send it to another sub-net if it is available, or up upstream again. In our lab we will use a Linksys 10/100 Man- aged 24-Port GigaSwitch (EG24M). The Switch in the lab is used to connect computers together, and connect to a network gateway. .... The server for the lab is..... Network Components: Lab Server - Claymore Dell Poweredge 1300 Server Intel Pro/100 network card (internet side) 3Com 590 network card (infranet side) Adaptec SCSI card 2940U2W (2 cards) for SCSI hard disks Tape drive - Uninterruptable Power Supply - APC Smart-UPS 120V OL103 Firewall.... 4.9.1 Prelab 1. Find and read the user manual for the Linksys 10/100 Managed 24-Port GigaSwitch (EG24M). http://www.linksys.com 2. At a windows computer look at the settings for the network. On windows 9x this is done with ’winipcfg’, on windows nt use the network settings. Look at the options available, copy out the settings to hand in. After that use the following instructions, and describe what each is doing. nslookup claymore.engineer.gvsu.edu ping claymore.engineer.gvsu.edu ping 148.61.104.215 tracert claymore.engineer.gvsu.edu tracert gvsu.edu tracert www.umich.edu route netstat
  • 106. page 106 netstat -a 3. Open a Dos window and type ‘telnet river.it.gvsu.edu 25’. this will connect you to the main stu- dent computer. But instead of the normal main door, you are talking to a program that delivers mail. Type the following to send an email message. ehlo northpole.com mail from: santa rcpt to: jackh data Subject: Bogus mail this is mail that is not really from santa . 4. Go to the web site ’www.arin.net’ and look up some machine names there under the ’whois’ link. Determine who owns the student network, i.e., 148.61.104. 5. While looking at a home page in Netscape select ‘View - Page Source’. You will see a window that includes the actual HTML file - This file was interpreted by Netscape to make the page you saw previously. Look through the file to see if you can find any text that was on the original page. 6. In Netscape ask for the location ‘ftp://sunsite.unc.edu’ This will connect you via ftp the same way as with the windows and the dos software. 7. In netscape type in ‘mailto:YOUR_NAME@river.it.gvsu.edu’ (Note: If the mail server infor- mation and a user account is not setup an error window will appear.). After you are done try ‘news:gvsu’. 8. Using Netscape try to access the IP number of the machine beside you. You will get a message that says the connection was refused. This is because the machine is a client. You have already been using servers to get web pages. 9. When we ask for a computer by name, your computer must find the number. It does this using a DNS (Domain Name Server). On campus we have two ‘148.61.1.10’ and ‘148.61.1.15’. In a Linux machine type in the following commands and determine what they have done. You can get access to a linux machine from a windows machine by typing ’telnet claymore.engi-
  • 107. page 107 neer.gvsu.edu’. nslookup server 148.61.1.10 set type=any ls -d engineer.gvsu.edu > temp.txt exit more temp.txt 4.9.2 Laboratory 1. Connect to the Linksys switch with a serial port connection. Although we could, we will not do this to increase the security of the switch. A serial connection requires physical access, which makes it much more difficult for an anonymous security intrusion. 2. Configure your computer to be a static client on the lab TCP/IP network. 3. Write two C++ program using the provided library functions. One program should listen on network socket 1900. When a connection is made it should open the connection, and echo all input that is receive. A second program will allow a user to connect to a remote network pro- gram and send and receive strings.
  • 108. page 108 5. DATABASES Databases are used to store various types of information in a manufacturing enterprise. For example, consider an inventory tracking system. A simple database might contain a simple list of purchased parts. Each part is a line in a database table, as shown in figure X.1. If a new inventory item is added, a new row is added to the table. If parts are added or removed to the inventory, the quantity value for one of the rows is changed. The total inventory cost can be calculated by multi- plying the quantity and part costs together, and summing these for all rows. The tables are often designed to suit the way a particular business runs. Number Part Quantity Cost Location 003450 1/2" Hex Nut 35 $0.023 Bin 5-42 003573 1/2" Hex Bolt 2467 $0.035 Bin 5-63 002365 5/8" Washer 395 $0.009 Bin 7-32 Figure X.1 - A Simple Inventory Table A more complex database will be made up of many tables that relate items together. For example a more complex database might have separate tables for customer data, supplier data, purchased inventory, work in process, finished inventory, etc. The purchased inventory table might refer to a supplier number that identifies a supplier in the supplier table. The formal name for a database that uses related tables of information is ’relational’.
  • 109. page 109 In modern applications a database (server) will run on one computer, but be shared by many other computers (clients) that access it through networks. Client programs might be highly vari- able. For example a worker on the shop floor may only be able to view order information. A shop floor supervisor might be able to change order status, personnel tables. A salesperson might be able to enter new orders, and check on order status. It is also possible to access the database directly and make special inquiries using a special command language called Structured Query Language (SQL). In summary, database allow information to be; - stored and managed in a central location - shared with many other computers - structured and accessed quickly - searched for patterns and matches 5.1 SQL AND RELATIONAL DATABASES Structured Query Language (SQL) was developed to provide a common interface language for accessing relational databases. The key concept behind relational databases is that all informa- tion is stored in tables. The example in Figure X.2 illustrates a customer order tracking system that uses three tables. Consider the first table called ’Orders’, it contains four rows, each with an order number. The first three rows are for the same order, and order number. In this case all three entries are also for the same customer, but it involves three different parts. The entries in the ’customer_id’ and ’part_id’ columns can be used to lookup more information from the two other tables.
  • 110. page 110 Orders order_number customer_id part_id quantity 00103 002 0001 1 00103 002 0000 1 00103 002 0002 1 00134 001 0002 50 Customers customer_id name 000 ACME Dastardly Gadgets 001 Widgets Inc. 002 I.M. Reech and Co. Parts part_id description location 0000 cylinder bin 5-4 0001 valve bin 2-3 0002 hose bin 8-2 Figure X.2 - An Order Tracking Database The tables in Figure X.2 can be created using the SQL commands in Figure X.3. One com- mand is needed for each table. Each command starts with ’CREATE TABLE’ followed by the name of the table. After this the columns of the table are defined. In the case of the ’Orders’ table there are four columns. Each column is given a unique name, and a data type is defined. Once these commands have been used the tables will exist, but be empty with no data in them.
  • 111. page 111 CREATE TABLE Orders ( order_number INTEGER, customer_id INTEGER, part_id INTEGER, quantity INTEGER ) CREATE TABLE Customers ( customer_id INTEGER, name CHAR(50) ) CREATE TABLE Parts ( part_id INTEGER, description CHAR(20), location CHAR(25) ) The queries can also be combined onto a single line. CREATE TABLE CUSTOMERS (customer_id INTEGER, name CHAR(50)) Figure X.3 - The SQL Commands to Create the Tables in Figure X.2 Figure X.4 shows SQL commands to enter data into the tables. In all cases these statements begin with ’INSERT INTO’, followed by the table name. After that the data fields to fill are named, followed by the actual values to insert. The column names are provided so that the values can be supplied in a different order, or omitted altogether. In this example all of the values are pro- vided for all ’INSERT INTO’ statement, but this is not necessary.
  • 112. page 112 INSERT INTO Orders (order_number, customer_id, part_id, quantity) VALUES (00103, 002, 0001, 1) INSERT INTO Orders (order_number, customer_id, part_id, quantity) VALUES (00103, 002, 0000, 1) INSERT INTO Orders (order_number, customer_id, part_id, quantity) VALUES (00103, 002, 0002, 1) INSERT INTO Orders (order_number, customer_id, part_id, quantity) VALUES (00134, 001, 0002, 50) INSERT INTO Customers (customer_id, name) VALUES (000, ’ACME Dastardly Gadgets’) INSERT INTO Customers (customer_id, name) VALUES (001, ’Widgets Inc.’) INSERT INTO Customers (customer_id, name) VALUES (002, ’I.M. Reech and Co.’) INSERT INTO Parts (part_id, description, location) VALUES (0000, ’cylinder’, ’bin 5-4’) INSERT INTO Parts (part_id, description, location) VALUES (0001, ’valve’, ’bin 2-3’) INSERT INTO Parts (part_id, description, location) VALUES (0002, ’hose’, ’bin 8-2’) Figure X.4 - Entering Data Into The Tables Once data has been entered into the database it can be recalled using a simple ’SELECT’ statement. In the first example the ’*’ indicates to select all data values ’FROM’ the ’Customers’ table. The second example shows only listing the ’name’ values from the ’Customers’ table. Finally the third example shows the listing of ’order_numbers’ from the ’Orders’ table where the ’quantity’ of parts is greater than 10.
  • 113. page 113 SELECT * FROM Customers Customerscustomer_idname 000 ACME Dastardly Gadgets 001 Widgets Inc. 002 I.M. Reech and Co. SELECT name FROM Customers Customersname ACME Dastardly Gadgets Widgets Inc. I.M. Reech and Co. SELECT order_number FROM Orders WHERE quantity > 10 Orders order_number 00134 Figure X.5 - Simple Database Query Examples It is possible to make database queries where the results are merged from many different tables. The example in Figure X.6 shows a query that is to list values for ’order_number’, ’name’, ’description’ and ’location’. These are to be merged from three tables ’Orders’, or ’O’, Custom- ers, or ’C’, and ’Parts’, or ’P’. Finally, the conditions for a match follow the ’WHERE’ statement. The conditions are the ’customer_id’ field in the ’Customer’ and ’Order’ tables must match., and the ’part_id’ field must match in the ’Order’ and ’Part’ tables.
  • 114. page 114 Select order_number, name, description, location FROM Orders O, Customers C, Parts P WHERE O.customer_id = C.customer_id, O.part_id = P.part_id Ordersorder_numbername descriptionlocation 00103 I.M. Reech and Co.valvebin 2-3 00103 I.M. Reech and Co.cylinderbin 5-4 00103 I.M. Reech and Co.hosebin 8-2 00134 Widgets Inc.hose bin 8-2 Figure X.6 - A More Advanced Query The SQL queries are easily used when interacting with a command interface. Although, it is more common for these commands to be used from within computer programs that call the data- base to make automatic queries. 5.2 DATABASE ISSUES • Databases handle problems of, - data locking (only allow one user to modify at once) - data sharing (other users can view) - searching - etc • Database design - first order normal, etc. - flexibility - verification 5.3 LABORATORY - SQL FOR DATABASE INTEGRATION
  • 115. page 115 Purpose: To learn the basic command language, SQL, that is used to interact with relational data- bases. Overview: Databases store information in tables. The users can use or manipulate this data to suit other purposes. The fundamental language for interacting with the databases is SQL. This lab will offer a simple introduction, and then go on to interface with the database using C programs in the following lab. Pre-Lab: Read the SQL and database material. In-Lab: First Time Installation: 1. Check to see if the database is installed. One way to do this is to look for the database server using ’which postmaster’. If it is not installed it can be installed from the Redhat distribution CD, or by downloading it from www.postgr- esql.org. 2. Log in as root with ’su - root’ and edit the file ’/var/lib/pgsql/.bashrc’ to include the following lines. (Note: the .bashrc file may not exist, but it will be created by the editor.) PGLIB=/usr/lib/pgsql PGDATA=/usr/lib/pgsql/data export PGLIB PGDATA 3. Change the ownership of the postgres directory to the user postgres with the command ’chown postgres /usr/lib/pgsql’. 4. Log in as the user ’postgres’ - An account called ’postgres’ is normally defined in most modern Linux distributions, but the account password is disabled. To log in the first time you must be logged in as root, then log in as postgres with ’su - postgres’. At this point you can change the password so you can log in directly as postgres in the future with ’passwd postgres’. Verify that you are logged in as postgres before continuing with ’whoami’. 5. Set up the databases with the command ’initdb’. This will set up all of the needed files and directories. 6. At this point the database should be ready for use, but the database server is not running. It can be started with ’postmaster &’. 7. Use ‘createuser <YOUR_LOGIN_NAME_GOES_HERE>’ to add yourself as a valid database user. Answer ‘y’es when asked if you are allowed to create data- bases. And answer ‘y’es when asked if you can create new users. These choices will allow you full control over the database. Note: ‘destroyuser <YOUR_NAME>’ can be used if you need to remove a user. 8. Log out from the postgres account with ’exit’. Before Use: 1. Start the database when logged in as root with ’postmaster &’. This should start the database server. You can check to see if it is accepting connections with the
  • 116. page 116 command ’netstat -a | grep postmaster’. If the postmaster program is listed the database is ready for use. 2. The database can also be set up to run automatically each time the computer is rebooted by adding it to the ’system V’ initialization list. But, this step is not necessary unless setting up a permanent database. Creating and Using a New Database 1. Create a new database with ‘createdb test’. 2. Connect to the database with ‘psql test’. This is a simple program that allows interaction with the database using typed commands. Type ‘h’ to see a list of commands. 3. Create a new database table using the SQL command below. This program requires that you end each line with a ‘g’. CREATE TABLE grades (name CHAR(10), grade CHAR(3), year INT)g 6. Display the table (it is empty) with the command below. Note: upper and lower case values are used to make the SQL commands stand out. SELECT * FROM grade 7.Add data with the commands below. After adding each datapoint, print out the table values. (Note: using the up and down cursor keys will allow you to recall previously entered commands.) INSERT INTO grades (name, grade, year) VALUES (‘egr 101’, ‘D’, 1997) INSERT INTO grades (name, year, grade) VALUES (‘egr 101’, 1998, ‘B+’) INSERT INTO grades (name, grade, year) VALUES (‘egr 103’, ‘A’, 1999) INSERT INTO grades (name, grade, year) VALUES (‘egr 209’, ‘B+’, 1999) INSERT INTO grades (name, year) VALUES (‘egr 226’, 1999) INSERT INTO grades (year) VALUES (2000) 8. Follow the tutorials in the ‘/usr/share/doc/postgres*’ directory. 9. Develop a database (of your own design) that will keep customer information, and inventory levels. Submit (individually): 1. A completed customer information database. 5.4 LABORATORY - USING C FOR DATABASE CALLS Purpose: To access a database using a simple C program. Overview: The program listing in Figure X.8 can be used to access the Postgres database. It uses a database access library called ’libpq’. This library of functions allows SQL data- base queries. The results of the query can then be easily retrieved.
  • 117. page 117 In this example the program begins with an attempt to connect to the database using the function ’PQconnectdb’, and the status of the connection is then checked using ’PQstatus’. An SQL query is passed to the database using the ’PQexec’ command, and the results are returned into the ’PGresult’ structured called ’res’ in this exam- ple. The results can be checked using ’PQresultStatus’, and retrieved using the ’PQgetvalue’ function. The ’PQntuples’ function returns the number of matching results. After each query the results structure should be released using ’PQclear’, and when all database access is complete the connection to the database should be terminated with ’PQfinish’. #include <stdio.h> #include <stdlib.h> #include <pgsql/libpq-fe.h> int main(){ char grade[3]; char query_string[256]; PGconn *conn; PGresult *res; int i; conn = PQconnectdb("dbname=test"); if(PQstatus(conn) != CONNECTION_BAD){ printf("Enter a grade: "); scanf("%2s", grade); sprintf(query_string, "SELECT name FROM grades WHERE grade = ’%s’", grade); res = PQexec(conn, query_string); if(PQresultStatus(res) == PGRES_TUPLES_OK){ int i; for(i = 0; i < PQntuples(res); i++) printf("name = %s n", PQgetvalue(res, i, 0)); } else { printf("The query failed n"); } PQclear(res); PQfinish(conn); } else { printf("Could not open the database n"); } return 0; } Figure X.8 - C Program for Database Access (dbtest.c) all: dbtest CC = gcc CFLAGS = -Wall LIBS = -lpq dbtest: dbtest.c $(CC) $(CFLAGS) dbtest.c -o dbtest $(LIBS) Figure X.9 - Makefile for Database Program
  • 118. page 118 Pre-Lab: 1. Examine the database program in the Overview section. In-Lab: 1. Enter the program and makefile given in the Overview section. Use ’make’ to compile the program, and run it to verify that it does access the database. 2. Write a program that allows jobs to be entered into the customer information database created in the previous laboratory. Submit (individually): 1. The C program to access the customer information database.
  • 119. page 119 6. COMMUNICATIONS When multiple computers are used in a manufacturing facility they need to communicate. One means of achieving this is to use a network to connect many peers. Another approach is to use dedicated communication lines to directly connect two peers. The two main methods for com- munication are serial and parallel. In serial communications the data is broken down as single bits that are sent one at a time. In parallel communications multiple bits are sent at the same time. 6.1 SERIAL COMMUNICATIONS Serial communications send a single bit at a time between computers. This only requires a single communication channel, as opposed to 8 channels to send a byte. With only one channel the costs are lower, but the communication rates are slower. The communication channels are often wire based, but they may also be optical and radio. Figure 22.2 shows some of the standard electrical connections. RS-232c is the most common standard that is based on a voltage level change. At the sending computer an input will either be true or false. The ’line driver’ will convert a false value ’in’ to a ’Txd’ voltage between +3V to +15V, true will be between -3V to -15V. A cable connects the ’Txd’ and ’com’ on the sending computer to the ’Rxd’ and ’com’ inputs on the receiving computer. The receiver converts the positive and negative voltages back to logic voltage levels in the receiving computer. The cable length is limited to 50 feet to reduce the effects of electrical noise. When RS-232 is used on the factory floor, care is required to reduce the effects of electrical noise - careful grounding and shielded cables are often used.
  • 120. page 120 50 ft RS-232c Txd Rxd In Out com 3000 ft RS-422a In Out 3000 ft RS-423a In Out Figure 22.2 - Serial Data Standards The RS-422a cable uses a 20 mA current loop instead of voltage levels. This makes the sys- tems more immune to electrical noise, so the cable can be up to 3000 feet long. The RS-423a stan- dard uses a differential voltage level across two lines, also making the system more immune to electrical noise, thus allowing longer cables. To provide serial communication in two directions these circuits must be connected in both directions. To transmit data, the sequence of bits follows a pattern, like that shown in Figure 22.3. The
  • 121. page 121 transmission starts at the left hand side. Each bit will be true or false for a fixed period of time, determined by the transmission speed. A typical data byte looks like the one below. The voltage/current on the line is made true or false. The width of the bits determines the possible bits per second (bps). The value shown before is used to transmit a single byte. Between bytes, and when the line is idle, the ’Txd’ is kept true, this helps the receiver detect when a sender is present. A single start bit is sent by making the ’Txd’ false. In this example the next eight bits are the transmitted data, a byte with the value 17. The data is followed by a parity bit that can be used to check the byte. In this example there are two data bits set, and even parity is being used, so the parity bit is set. The parity bit is followed by two stop bits to help separate this byte from the next one. true false before start data parity stop idle Descriptions: before - this is a period where no bit is being sent and the line is true. start - a single bit to help get the systems synchronized. data - this could be 7 or 8 bits, but is almost always 8 now. The value shown here is a byte with the binary value 00010010 (the least significant bit is sent first). parity - this lets us check to see if the byte was sent properly. The most common choices here are no parity bit, an even parity bit, or an odd parity bit. In this case there are two bits set in the data byte. If we are using even parity the bit would be true. If we are using odd parity the bit would be false. stop - the stop bits allow a pause at the end of the data. One or two stop bits can be used. idle - a period of time where the line is true before the next byte. Figure 22.3 - A Serial Data Byte Some of the byte settings are optional, such as the number of data bits (7 or 8), the parity bit (none, even or odd) and the number of stop bits (1 or 2). The sending and receiving computers must know what these settings are to properly receive and decode the data. Most computers send
  • 122. page 122 the data asynchronously, meaning that the data could be sent at any time, without warning. This makes the bit settings more important. Another method used to detect data errors is half-duplex and full-duplex transmission. In half-duplex transmission the data is only sent in one direction. But, in full-duplex transmission a copy of any byte received is sent back to the sender to verify that it was sent and received cor- rectly. (Note: if you type and nothing shows up on a screen, or characters show up twice you may have to change the half/full duplex setting.) The transmission speed is the maximum number of bits that can be sent per second. The units for this is ’baud’. The baud rate includes the start, parity and stop bits. For example a 9600 baud 9600 transmission of the data in Figure 22.3 would transfer up to ----------------------------------- = 800 bytes each - (1 + 8 + 1 + 2) second. Lower baud rates are 120, 300, 1.2K, 2.4K and 9.6K. Higher speeds are 19.2K, 28.8K and 33.3K. (Note: When this is set improperly you will get many transmission errors, or ’garbage’ on your screen.) Serial lines have become one of the most common methods for transmitting data to instru- ments: most personal computers have two serial ports. The previous discussion of serial commu- nications techniques also applies to devices such as modems. 6.1.1 RS-232 The RS-232c standard is based on a low/false voltage between +3 to +15V, and an high/true voltage between -3 to -15V (+/-12V is commonly used). Figure 22.4 shows some of the common connection schemes. In all methods the ’txd’ and ’rxd’ lines are crossed so that the sending ’txd’ outputs are into the listening ’rxd’ inputs when communicating between computers. When com- municating with a communication device (modem), these lines are not crossed. In the ’modem’ connection the ’dsr’ and ’dtr’ lines are used to control the flow of data. In the ’computer’ the ’cts’
  • 123. page 123 and ’rts’ lines are connected. These lines are all used for handshaking, to control the flow of data from sender to receiver. The ’null-modem’ configuration simplifies the handshaking between computers. The three wire configuration is a crude way to connect to devices, and data can be lost. com com txd txd Modem Computer Modem rxd rxd dsr dsr dtr dtr com com Computer txd txd Computer Computer rxd rxd A B cts cts rts rts com com txd txd Null-Modem Computer rxd rxd Computer A dsr dsr B dtr dtr cts cts rts rts com com Computer txd txd Computer Three wire rxd rxd A B cts cts rts rts Figure 22.4 - Common RS-232 Connection Schemes Common connectors for serial communications are shown in Figure 22.5. These connectors are either male (with pins) or female (with holes), and often use the assigned pins shown. The DB-9 connector is more common now, but the DB-25 connector is still in use. In any connection the ’RXD’ and ’TXD’ pins must be used to transmit and receive data. The ’COM’ must be con- nected to give a common voltage reference. All of the remaining pins are used for ’handshaking’.
  • 124. page 124 DB-25 DB-9 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 14 15 16 17 18 19 20 21 22 23 24 25 6 7 8 9 Commonly used pins 1 - GND (chassis ground) 1 - DCD 2 - TXD (transmit data) 2 - RXD 3 - RXD (receive data) 3 - TXD 4 - RTS (request to send) 4 - DTR 5 - CTS (clear to send) 5 - COM 6 - DSR (data set ready) 6 - DSR 7 - COM (common) 7 - RTS 8 - DCD (Data Carrier Detect) 8 - CTS 20 - DTR (data terminal ready) 9 - RI Other pins 9 - Positive Voltage 10 - Negative Voltage 11 - not used 12 - Secondary Received Line Signal Detector 13 - Secondary Clear to Send 14 - Secondary Transmitted Data 15 - Transmission Signal Element Timing (DCE) 16 - Secondary Received Data 17 - Receiver Signal Element Timing (DCE) 18 - not used Note: these connec- 19 - Secondary Request to Send tors often have 21 - Signal Quality Detector very small num- 22 - Ring Indicator (RI) bers printed on 23 - Data Signal Rate Selector (DTE/DCE) them to help you 24 - Transmit Signal Element Timing (DTE) identify the pins. 25 - Busy Figure 22.5 - Typical RS-232 Pin Assignments and Names The ’handshaking’ lines are to be used to detect the status of the sender and receiver, and to regulate the flow of data. It would be unusual for most of these pins to be connected in any one application. The most common pins are provided on the DB-9 connector, and are also described below. TXD/RXD - (transmit data, receive data) - data lines DCD - (data carrier detect) - this indicates when a remote device is present RI - (ring indicator) - this is used by modems to indicate when a connection is about to be
  • 125. page 125 made. CTS/RTS - (clear to send, ready to send) DSR/DTR - (data set ready, data terminal ready) these handshaking lines indicate when the remote machine is ready to receive data. COM - a common ground to provide a common reference voltage for the TXD and RXD. When a computer is ready to receive data it will set the "CTS" bit, the remote machine will notice this on the ’RTS’ pin. The ’DSR’ pin is similar in that it indicates the modem is ready to transmit data. ’XON’ and ’XOFF’ characters are used for a software only flow control scheme. 6.2 SERIAL COMMUNICATIONS UNDER LINUX In Linux serial communications is similar to normal file access. The file names used to access these ports are in the ’dev’ directory. The ’com1’ port is called ’ttyS0’, and the ’com2’ port is called ’ttyS1’. #ifndef __SERIAL #define __SERIAL #define ERROR -1 #define NO_ERROR 0 class serial_io { protected: public: int fd; /* File Descriptor Global Variable */ serial_io(char*); ~serial_io(); int decode_param(char*); int writer(char*); int reader(char*, int); }; #endif Figure X.10 - The Header File (serial_io.h) #include <stdio.h>
  • 126. page 126 #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <termios.h> #include <ctype.h> #include "serial_io.h" char *param_file_name; int param_baud; int param_parity;// not implemented yet int param_size; int param_flow; // not implemented yet serial_io::serial_io(char *args){ struct termios options; int error; int i; param_file_name = NULL; param_baud = B9600;// set defaults param_size = CS8; char temp[200]; int len, last, cnt; error = NO_ERROR; strcpy(temp, args); len = strlen(args); last = 0; cnt = 0; for(i = 0; (i < len) && (error == NO_ERROR); i++){ if(temp[i] == ’,’){ temp[i] = 0; error = decode_param(&(temp[last])); cnt++; last = i + 1; } else if(i == (len-1)){ error = decode_param(&(temp[last])); cnt++; } } if((error == NO_ERROR) && (param_file_name != NULL)){ if((fd = open(param_file_name /*args[0] port "/dev/ttyS0"*/, O_RDWR | O_NOCTTY | O_NDELAY)) < 0){ printf("Unable to open serial portn"); fd = -1; } else { fcntl(fd, F_SETFL, FNDELAY); /* Configure port reading */ tcgetattr(fd, &options); /* Get the current options for the port */ cfsetispeed(&options, param_baud); /* Set the baud */ cfsetospeed(&options, param_baud); options.c_cflag |= (CLOCAL | CREAD); // enable receiver and set local mode
  • 127. page 127 options.c_cflag &= ~PARENB; // Mask the character size to 8 bits, no parity options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; // set data size options.c_cflag |= param_size; // set number of data bits // options.c_cflag &= ~CRTSCTS; // Disable hardware flow control // options.c_lflag &= ~(ICANON | ECHO | ISIG); // process as raw input options.c_oflag |= OPOST; // Update settings tcsetattr(fd, TCSANOW, &options); } } else { fd = -1; } } serial_io::~serial_io(void) { close(fd); fd = -1; if(param_file_name != NULL) delete param_file_name; } int serial_io::decode_param(char*parameter){ int error; int temp; error = NO_ERROR; if(parameter[0] == ’F’){ if(param_file_name != NULL) delete param_file_name; param_file_name = new char[strlen(parameter)]; strcpy(param_file_name, &(parameter[1])); } else if(parameter[0] == ’B’){ temp = atoi(&(parameter[1])); if(temp == 9600) param_baud = B9600; if(temp == 2400) param_baud = B2400; if(temp == 1200) param_baud = B1200; } else if(parameter[0] == ’D’){ temp = atoi(&(parameter[1])); if(temp == 8) param_size = CS8; if(temp == 7) param_size = CS7; } else { printf("Did not recognize serial argument type - ignoringn"); } return error; } int serial_io::reader(char *text, int max){ int char_read, error, i, j; error = ERROR; if(fd >= 0){
  • 128. page 128 char_read = read(fd, text, max-1); if (char_read > 0){ text[char_read] = 0; error = NO_ERROR; for(i = 0; i < char_read;){ if((text[i] == 10 /*CR*/) || (text[i] == ’n’)){ for(j = i+1; j <= char_read; j++){ text[j-1] = text[j]; } char_read--; } else if(text[i] == ’t’){ text[i] = ’ ’; i++; } else { i++; } } } else { text[0] = 0; } } else { printf("Serial port is not initializedn"); } return error; } int serial_io::writer(char *text) { int error, length = 0, count = 0; error = NO_ERROR; if(fd >= 0){ length = strlen(text); for(count = 0; count < length; count++){ write(fd, &(text[count]), 1); } } else { printf("Serial port not initializedn"); error = ERROR; } return error; } Figure X.11 - Serial Communication Drivers (serial_io.c) #include "serial_io.h" main(){ serial_io *serial; char in[100]; char sent[107]; int flag = 0; char out[100];
  • 129. page 129 serial = new serial_io("B9600,F/dev/ttyS0"); while(flag == 0){ if(serial->reader(in, 100) != ERROR){ if(strlen(in) > 0){ printf("Got String: %s", in); sprintf(out, "ECHO: %sn", in); printf("Sending String: %s", out); serial->writer(out); } } } delete serial; } Figure X.12 - A Serial Communication Program (serial.c) These programs can be compiled with the makefile in Figure X.13. all: serial CC=g++ CFLAGS= serial: serial.c serial_io.o $(CC) $(CFLAGS) serial.c -o serial serial_io.o serial_io.o: serial_io.c serial_io.h $(CC) $(CFLAGS) -c serial_io.c Figure X.13 - A Makefile 6.3 PARALLEL COMMUNICATIONS Parallel data transmission will transmit multiple bits at the same time over multiple wires. This does allow faster data transmission rates, but the connectors and cables become much larger, more expensive and less flexible. These interfaces still use handshaking to control data flow. These interfaces are common for computer printer cables and short interface cables, but they are uncommon on PLCs. A list of common interfaces follows. Centronics printer interface - These are the common printer interface used on most per- sonal computers. It was made popular by the now defunct Centronics printer com- pany.
  • 130. page 130 GPIB/IEEE-488 - (General Purpose Instruments Bus) This bus was developed by Hewlett Packard Inc. for connecting instruments. It is still available as an option on many new instruments. 6.4 LABORATORY - SERIAL INTERFACING AND PROGRAMMING Purpose: To achieve a basic understanding of the serial communication hardware and software. Overview: Please review the chapter Pre-Lab: 1. Enter the C++ code found in the chapter. In-Lab: 1. Set up two computers beside each other, at least one should be a Linux computer. 2. Select the right connectors for the serial ports (9 or 25 pin, and male or female) on the computers and build a null modem RS-232 cable to connect the two computers. 3. Start a serial communication program on both of the computers, and establish commu- nications - this will require you to change communication settings. 3a. (Linux) You may use ’minicom’, you will have to be logged in as root, or change the settings for the serial port with ’chmod 666 /dev/ttyS0’ or ’chmod 666 /dev/ttyS1’. 3b. (Windows) Use the hyperterm program ’hypertrm.exe’. When prompted for connec- tion information select ’cancel’. 4. Enter and run the C++ program to echo serial data. 5. Modify the number guess game developed in a previous lab to operate over the serial port. Submit (individually): 1. The source code listings for the game running on the serial port. 6.5 LABORATORY - STEPPER MOTOR CONTROLLER Purpose: To use a serial interface to communicate with a stepper motor controller. Overview:
  • 131. page 131 A stepper motor is unlike other motors. When a voltage is applied the motor does not turn continuously, it only moves a small increment. There are normally a set of four or more inputs. When these are turned on-off in a set pattern the motor shaft will rotate forward or backwards. A typical stepper motor might have 200 steps per revolution, or steps of 1.8 degrees. These motors often require somewhat sophisti- cated controllers. One type of controller is called an indexer. It can be given com- mands to move the motor, and then it takes care of pulsing the motor outputs to drive the motion. The stepper motor controllers to be used in this laboratory are integrated into the turnta- bles in the material handling system. The controller is integrated into the turntable stations so that it can rotate the turntable up to 360 degrees with a stepped motor, eject a cart using two outputs to solenoid valves, and detect a cart present with a diffuse photoelectric sensor. The controller has an RS-422 port that can be used to communicate, and load programs. This will be connected to an RS-232C port using a special interface cable that converts the current loop to voltage values. The communication settings for the turntables are 9600 baud, 8 data bits, no parity, 1 stop bits, no flow control. The programming commands for the controller are summarized below. DCB-241 Commands <ESC> abort G go from address @ soft stop I initial velocity <CTL>C reset K ramp slope + move in positive direction L loop on port - move in negative direction M move at constant speed [ read nonvolatile memory O set origin ] read hardware limits P program mode write to nonvolatile memory Q query program ^ read moving status R index to target position A port read/write S store parameters B jog speed T set trip point C restore V slew velocity D divide step rates W wait E enable auto power off X examine parameters F find home Z display position Figure X.14 - Stepper Motor Control Board Commands (DCB-241) When writing programs command lines can be up to 15 characters long, including spaces. Spaces are used to separate commands and arguments. Characters used in pro- grams can be either upper or lower case. A sample program is given below.
  • 132. page 132 Pre-Lab: 1. Go to the web site www.stepcontrol.com and look at the product documents for the DCB-241 stepper driver. In-Lab: 1. Use a terminal program to communicate with the stepper motor controller. You will need a special communication cable, and the boxes can be opened with a flat bladed screwdriver. Plug the communication cable into the lower connector. (Note: if the unit already has power don’t touch the exposed 120Vac power on the power supply.) Connect an air supply and power to the unit. (Note: don’t forget to turn on the power on the front of the cabinet.) 2. Use the following commands (in sequence) to verify that the turntable is operating properly, and to explore basic commands. (Note: comments are provided for understanding, but should not be entered into the controller.) <CTRL>C -- this should reset the unit <SPACE> -- this should print out the line ’V2.03’, if not there are problems <ENTER> -- this should print ’#’ Z -- read the current position O -- set the current position as the origin Z -- print the current position R1000 -- this should rotate the turntable Z -- should now be 1000 R-1000 -- this should rotate the turntable the other way Z -- should be zero again A8 - kicks the cart one way (notice the lights on the solenoids) A16 - kicks the cart the other way A0 - turns off all solenoids ] -- this will check the input ports, bits 7 and 8 are for the cart present detectors 3. Enter the following program so that the turntable operates automatically. The list below also includes the commands to download and enter the program. Again comments should not be entered, and line numbers are automatically generated. When the program has been entered it can be run with the command ’G0’. P0 -- put the controller in programming mode and start the program at location ’0’ 0 O0 -- set the current position to the origin with a value of 0 4 R10000 -- more the controller 10000 steps in the positive direction 8 W0 -- wait until ’0’ ms after the motion is complete 11 R-10000 -- move 10000 steps in the opposite direction 15 W100 -- wait until ’100’ ms after the motion is complete 18 J 4 3 -- jump to address ’4’ four (3+1) times, a basic for loop (you may need to change ’4’ if your line numbers don’t match) 22 A8 -- eject the cart 24 W1000 - wait for 1 second 27 A0 - shut off the solenoid valve 29 P0 -- the end of the program 4. Write a C++ program to communicate with the stepper motor controller over RS-232. It
  • 133. page 133 should allow the user to enter a motor position from the keyboard, and the control- ler should automatically move. Submit (individually): 1. The source code listings for the motor control program.
  • 134. page 134 7. PROGRAMMABLE LOGIC CONTROLLERS (PLCs) • CONTROL - Using artificial means to manipulate the world with a particular goal. • System types, • Continuous - The values to be controlled change smoothly. e.g. the speed of a car as the gas pedal is pushed • Logical - The values to be controlled are easily described as on-off. e.g. The car motor is on-off (like basic pneumatics). Note: All systems are continuous but they can be treated as logical for simplicity. • Logical control types, • Conditional - A control decision is made by looking at current conditions only. e.g. A car engine may turn on only when the key is in the ignition and the transmission is in park. • Sequential - The controller must keep track of things that change and/or know the time and/or how long since something happened. e.g. A car with a diesel engine must wait 30 seconds after the glow plug has been active before the engine may start. Note: We can often turn a sequential problem into a conditional by adding more sensors.
  • 135. page 135 CONTROL CONTINUOUS LOGICAL LINEAR NON_LINEAR CONDITIONAL SEQUENTIAL EVENT BASED e.g. MRAC TEMPORAL e.g. PID BOOLEAN e.g. FUZZY LOGIC e.g. COUNTERS EXPERT SYSTEMS e.g. TIMERS Examples: continuous: logical: conditional: sequential: mixed (continuous and logical) systems: • A Programmable Logic Controller (PLC) is an input/output processing computer.
  • 136. page 136 • Advantages of PLCs are: - cost effective for complex systems - flexible (easy to add new timers/counters, etc) - computational abilities - trouble shooting aids - reliable - easy to add new components • Ladder logic was originally introduced to mimic relay logic. 7.1 BASIC LADDER LOGIC • The PLC can be programmed like other computers using specialized “languages.” - Ladder Logic - a programming technique using a ladder-like structure. It was originally adopted because of its similarity to relay logic diagrams to ease its acceptance in manufacturing facilities. The ladder approach is somewhat limited by the lack of loops, etc. (although this is chang- ing).
  • 137. page 137 OUTPUTS HOT NEUTRAL INPUTS POWER NEEDS TO FLOW THROUGH THE INPUTS TO THE OUTPUTS - Mnemonic - instructions and opcodes, similar to assembly language. It is more involved to program, but also more flexible than ladder logic. This will be used with the hand held programmers.
  • 138. page 138 e.g. for an Omron PLC 00000 LDI A 00001 AND B 00002 LD C the mnemonic code is equivalent to 00003 AND D the ladder logic below 00004 ORB 00005 OUT E 00006 END A B E C D END • There are other methods that are not as common, - sequential function charts/petri nets - state space diagrams - etc. 7.2 WHAT DOES LADDER LOGIC DO?
  • 139. page 139 7.2.1 Connecting A PLC To A Process PROCESS Feedback from Connections to sensors/switches Actuators PLC • The PLC continuously scans the inputs and changes the outputs. • The process can be anything - a large press, a car, a security door, a blast furnace, etc. • As inputs change (e.g. a start button), the outputs will be changed. This will cause the pro- cess to change and new inputs to the PLC will be received. PLC program changes outputs by examining inputs Set new outputs THE CONTROL LOOP process changes and PLC pauses read inputs while it checks its own operation 7.2.2 PLC Operation • Remember: The PLC is a computer. Computers have basic components, as shown below:
  • 140. page 140 Keyboard Input SVGA Screen Output 80586 Serial CPU Mouse Input 133/200 MHz Light output 32MB Memory 2.1GB Disk Storage Storage • In fact the computer above looks more like the one below: inputs input memory computer output memory outputs Keyboard Input Chip monitor Screen memory CPU ‘586 chips Mouse Serial Input Chip digital output chip LED display Flow of Information Disk Controller Memory Chips Disk storage • Notice that in this computer, outputs aren’t connected to the CPU directly. • A PLC will scan a copy of all inputs into memory. After this, the ladder logic program is run once and it creates a temporary table of all outputs in memory. This table is then written to the
  • 141. page 141 outputs after the ladder logic program is done. This continues indefinitely while the PLC is run- ning. • PLC operation can be shown with a time-line - Self input logic output Self input logic output Self input logic test scan solve scan test scan solve scan test scan solve 0 ranges from 1 to 100 ms time PLC turns on SELF TEST - Checks to see if all cards error free, resets watch-dog timer, etc. (A watchdog timer will cause an error, and shut down the PLC if not reset within a short period of time - this would indicate that the lad- der logic is not being scanned normally). INPUT SCAN - Reads input values from the chips in the input cards and cop- ies their values to memory. This makes the PLC operation faster and avoids cases where an input changes from the start to the end of the program (e.g., an emergency stop). There are special PLC functions that read the inputs directly and avoid the input tables. LOGIC SOLVE/SCAN - Based on the input table in memory, the program is executed one step at a time, and outputs are updated. This is the focus of the later sections. OUTPUT SCAN - The output table is copied from memory to the output chips. These chips then drive the output devices. 7.3 LADDER LOGIC • Ladder logic has been developed to mimic relay logic - to make the computer more accept- able to companies and employees. • Original efforts resisted the use of computers because they required new skills and approaches, but the use of ladder logic allowed a much smaller paradigm shift.
  • 142. page 142 • Original relay ladder logic diagrams show how to hook-up inputs to run outputs. Relay - An input coil uses a voltage/current to create a magnetic field. As the coil becomes magnetic it pulls a metal switch (or reed) towards it and makes an electrical contact. The contact that closes when the coil is energized is normally open. There is a contact that the reed touches without the coil energized is called the normally closed contact. Relays are used to let one power source close a switch for another (often high current) power source while keeping them isolated. input coil normally normally closed open Schematic - The drawing below shows the relay above in a symbolic form. OR
  • 143. page 143 A Circuit - A mix of inputs and outputs allows logical selection of a device. 115VAC wall plug relay logic output (normally open) input (normally closed) input (normally open) ladder logic • We can then imaging this in context of a PLC. (this idea was suggested by Walt Siedelman of Ackerman Electric)
  • 144. page 144 push buttons power supply +24V com. PLC inputs ladder logic outputs 115Vac AC power neut. 7.3.1 Relay Terminology • Contactor - special relays for switching of large loads.
  • 145. page 145 • Motor Starter - Basically a contactor in series with an overload relay to cut off when too much current is drawn. • Rated Voltage - Suggested operation voltage. Lower levels can result in failure to operate: voltages above shorten life. • Rated Current - The maximum current before contact damage occurs (welding or melting). • DC relays require special arc suppression. AC relays have a zero crossing to reduce relay arc problems. • AC relays require a shading pole to maintain contact. If a DC relay is used with AC power on the coil, it clicks on-and-off at the frequency of the AC (also known as chattering).
  • 146. page 146 7.3.2 Ladder Logic Inputs • Contact coils are used to connect the PLC power lines to drive the outputs. • The inputs can come from electrical inputs or memory locations. Normally open, an active input will close the contact and allow power to flow. Normally closed, power flows when the input is not active. • Note: if we are using normally closed contacts in our ladder logic, this is independent of what the actual device is. The choice between normally open or closed is based on what is logi- cally needed, and not the physical device. • For the Micrologix PLCs the inputs are labelled ‘I:0.0/x’ where x is the input number 0 to 9.
  • 147. page 147 7.3.3 Ladder Logic Outputs • The outputs allow switches to close that supply or cut-off power to control devices. • Ladder logic indicates what to do with the output, regardless of what is hooked up -- The programmer and electrician that connect the PLC are responsible for that. • Outputs can go to electrical outputs, or to memory. • Output symbols - When power is applied (on) the output is activated When power is not applied (off) the output is activated • We can relate these to actual outputs using numbers (look for these on the front of the PLC). • For the Micrologix PLCs the outputs are labelled ‘O:0.0/x’ where x is the output number 0 to 5. 7.4 LADDER DIAGRAMS • These diagrams are read from left to right, top to bottom. • For the ladder logic below the sequence of operations would be B1, B2 on the top first, then
  • 148. page 148 the bottom. This would be followed by T1, then F1. B1 B2 T1 F1 B1 B2 • Power flow can be used to consider how ladder diagrams work. Power must be able to flow from the left to the right. 7.4.1 Ladder Logic Design eg. Burglar Alarm 1. If alarm is on, check sensors. 2. If window/door sensor is broken (turns off), sound alarm and turn on lights. 3. If motion sensor goes on (detects thief), sound alarm and turn on lights. A = Alarm and lights switch (1 = on) W = Window/Door sensor (1 = OK) M = Motion Sensor (0 = OK) S = Alarm Active switch (1 = on)
  • 149. page 149 We can do this with ladder logic M S A W S We can also draw an electronic circuit for this - W W (S*W) (S*W)+(S*M) S A M (S*M) We can also simplify both the circuit and the ladder - M S A W W W (M+W) S * (M+W) M = (S*W)+(S*M) S A
  • 150. page 150 7.4.2 A More Complicated Example of Design D E C A F B The gates can be purchased for about $0.25 each in bulk. D C B A Inputs and outputs are typically 5V. E An inexpensive PLC is worth at least a few hundred dollars. C F C Consider the cost trade-off! Why are gates not used more often? D E F A C B D C B Simplified A E F
  • 151. page 151 7.5 TIMERS/COUNTERS/LATCHES • There are some devices and concepts that are temporal/sequential (time based) or sequen- tial. This means that they keep track of events over time, as opposed to conditional logic that decides based on instantaneous conditions. e.g. A light activating push button push button +V light button On/Off pushed button here released here Push Button simple light (Conditional Control) toggled light (Temporal Control) time Note: As we follow this graph from left to right we are going through time. When the line moves up (on) or down (off) we can see how inputs and outputs • Controls that have states or time dependence will require temporal controls (also known as sequential). • Some devices that are temporal are: Flip-Flops - These can be latched on or off. Latches - Will stay on until reset (Similar to flip-flops) Counters - Keeps a count of events Timers - Allows inputs and outputs to be delayed or prolonged be a known amount
  • 152. page 152 7.6 LATCHES - Will stay on when set, until unlatched. A D L A C B D U • We can show how these latches respond with a simple diagram. A B C D • As an example consider the ladder logic:
  • 153. page 153 A X A Y L B Y U A Note: this effects of this rung are Z overwritten by the rung below. B Z A B X Y Z • In most PLCs, latches will keep their last state even when the PLC is turned off and back on. (Note: In some other PLCs latches are only used for keeping the state of the PLC when it was turned off, they don’t ‘stick’ on or off) 7.7 TIMERS • We use timers to do some or all of the following:
  • 154. page 154 - Delay turning on - Delay turning off - Accumulate time passed (retentive) e.g. An On Timer (TON) TON A Timer T4:0 Time Base 1.0 (DN) Preset 4 Accum. 0 (EN) A T4:0 EN T4:0 DN 4 3 2 0 T4:0 Accum. 0 3 6 9 13 14 17 19
  • 155. page 155 e.g. A Retentive On Timer (RTO) RTO A Timer T4:0 Time Base 1.0 (DN) Preset 4 Accum. 0 (EN) A T4:0 EN T4:0 DN 4 3 0 T4:0 Accum. 0 3 6 9 10 14 17 19
  • 156. page 156 e.g. An Off Timer (TOF) TOF A Timer T4:0 Time Base 0.01 (DN) Preset 350 Accum. 0 (EN) A T4:0 EN T4:0 DN 3.5 3 0 T4:0 Accum. 0 3 6 9.5 10 16 18 20
  • 157. page 157 e.g. A Retentive Off Timer (RTF) RTF A Timer T4:0 Time Base 0.01 (DN) Preset 350 Accum. 0 (EN) A T4:0 EN T4:0 DN T4:0 Accum. 0 3 6 10 16 18 20 • When using timers (especially retentive) we must reset values when done. The (RES) instruction does this. 7.8 COUNTERS • Count up/count down counters will track input events.
  • 158. page 158 • An allen Bradley PLC-5 counter is shown below a count up counter CTU A counter C5:0 (EN) Preset 4 Accum. 2 (DN) 1. Each time A turns on (then off), the accumulated value increases (here from 2to3, then 3to4, and so on) 2. When the accumulated value reaches the preset value, the ‘DN’ flag is set. C5:0 DN 3. We can set the accumulated value to zero with. C5:0 RES • Count down counters are similar. • Consider the example below,
  • 159. page 159 I:0.0/0 CTU counter C5:0 (EN) Preset 4 Accum. 2 (DN) I:0.0/1 CTD counter C5:0 (EN) Preset 4 Accum. 2 (DN) I:0.0/2 C5:0 RES C5:0/DN O:0.0/0 I:0.0/0 I:0.0/1 I:0.0/2 C5:0/DN O:0.0/0 7.9 DESIGN AND SAFETY
  • 160. page 160 7.9.1 FLOW CHARTS • Good when the PLC only does one thing at a time in a predictable sequence. • The real advantage is in modeling the process in an orderly manner. START Reset all values off start button pushed? no yes Open inlet valve Close outlet valve yes Open outlet valve Is tank full? Close inlet valve no stop button pushed? yes no 7.10 SAFETY
  • 161. page 161 7.10.1 Grounding • The case of an object should be tied to ground to give current a path to follow in the case of a fault that energizes the case. (Note: fuses or breakers will cut off the power, but the fault will be on for long enough to be fatal.) e.g., wire break off and touches case Current can flow two ways, but most will follow the path of least resistance. Good grounding will keep the worker relatively safe in the case of faults. • Step potential is another problem. Electron waves from a fault travel out in a radial direction through the ground. If a worker has two feet on the ground at different radial distances, there will be a potential difference between the feet that will cause a current to flow through the legs. If there is a fault, don’t run/walk away/towards. • Always ground systems first before applying power. (The first time a system is activated it will have a higher chance of failure.) • Safe current levels are listed below [ref hydro handbooks], but be aware that in certain cir- cumstances very low currents can kill. When in doubt, take no chances.
  • 162. page 162 current in body (mA) effect 0-1 negligible 1-5 uncomfortable 10-20 possibility for harm 20-50 muscles contract 50-100 pain, fainting, physical injuries 100-300 heart fibrillates 300+ burns, breathing stops, etc. 7.10.2 Programming/Wiring • Fail-safe wiring should be used so that if wires are cut or connections fail, the equipment should turn off. For example, if a normally closed stop button is used and the connector is broken off, it will cause the machine to stop, as if the stop button has been pressed and broken the con- nection. • Programs should be designed so that they check for problems and shut down in safe ways. Some PLC’s also have power interruption sensors; use these whenever danger is present. • Proper programming techniques will help detect possible problems on paper instead of in operation. 7.10.3 PLC Safety Rules • Use a fail-safe design. • Make the program inaccessible to unauthorized persons. • Use predictable, non-configurable programs. • Use redundancy in hardware.
  • 163. page 163 • Directly connect emergency stops to the PLC, or the main power supply. • Check for system OK at start-up. • Provide training for new users and engineers to reduce careless and uninformed mistakes. • Use PLC built in functions for error and failure detection. 7.10.4 Troubleshooting 1. Look at the process and see if it is in a normal state. i.e. no jammed actuators, broken parts, etc. If there are visible problems, fix them and restart the process. 2. Look at the PLC to see which error lights are on. Each PLC vendor will provide documents that indicate which problems correspond to the error lights. Common error lights are given below. If any off the warning lights are on, look for electrical supply problems to the PLC. HALT - something has stopped the CPU RUN - the PLC thinks it is OK (and probably is) ERROR - a physical problem has occurred with the PLC 3. Check indicator lights on I/O cards to see if they match the system. i.e., look at sensors that are on/off, and actuators on/off, check to see that the lights on the PLC I/O cards agree. If any of the light disagree with the physical reality, then interface electronics/mechanics need inspection. 4. Turn the PLC off and on again. If this fixes the problem it could be a programming mis- take, or a grounding problem. Programming mistakes often happen the same way each time. Grounding problems are often random, and have no pattern. 5. Consult the manuals or use software if available. If no obvious problems exist, the problem is not simple and requires a technically skilled approach. 6. If all else fails call the vendor (or the contractor) for help.
  • 164. page 164 7.11 DESIGN CASES 7.11.1 DEADMAN SWITCH A motor will be controlled by two switches. The Go switch will start the motor and the Stop switch will stop it. If the Stop switch was used to stop the motor, the Go switch must be thrown twice to start the motor. When the motor is active a light should be turned on. The Stop switch will be wired as normally closed. Motor Stop C5:0 RES Go Motor CTU C5:0 Preset 2 Accum. 1 C5:0/DN Stop Motor Motor Light Consider: - what will happen if stop is pushed and the motor is not running?
  • 165. page 165 7.11.2 CONVEYOR A conveyor is run by switching on or off a motor. We are positioning parts on the conveyor with an optical detector. When the optical sensor goes on, we want to wait 1.5 seconds, and then stop the conveyor. After a delay of 2 seconds the conveyor will start again. We need to use a start and stop button - a light should be on when the system is active. Go Stop Light Light Part Detect TON T4:0 Time base: 0.01 Preset 150 T4:0/DN TON T4:1 Time base: 1.0 Preset 2 T4:0/DN Light Motor T4:1/DN T4:0 RES T4:1/DN T4:1 RES - what is assumed about part arrival and departure? 7.11.3 ACCEPT/REJECT SORTING
  • 166. page 166 For the conveyor in the last case we will add a sorting system. Gages have been attached that indicate good or bad. If the part is good, it continues on. If the part is bad, we do not want to delay for 2 seconds, but instead actuate a pneumatic cylinder. Go Stop Light Light Part Detect TON T4:0 Time base: 0.01 Preset 150 T4:0/DN Part Good TON T4:1 Time base: 1.0 Preset 2 T4:0/DN Part Good TON T4:2 Time base: 0.01 Preset 50 T4:1/EN Light Motor T4:2/EN Cylinder T4:1/DN T4:0 RES T4:2/DN T4:1/DN T4:1 RES T4:2/DN T4:2 RES 7.11.4 SHEAR PRESS The basic requirements are,
  • 167. page 167 1. A toggle start switch (TS1) and a limit switch on a safety gate (LS1) must both be on before a solenoid (SOL1) can be energized to extend a stamping cylinder to the top of a part. 2. While the stamping solenoid is energized, it must remain energized until a limit switch (LS2) is activated. This second limit switch indicates the end of a stroke. At this point the solenoid should be de-energized, thus retracting the cylinder. 3. When the cylinder is fully retracted a limit switch (LS3) is activated. The cycle may not begin again until this limit switch is active. 4. A cycle counter should also be included to allow counts of parts produced. When this value exceeds 5000 the machine should shut down and a light lit up. 5. A safety check should be included. If the cylinder solenoid has been on for more than 5 seconds, it suggests that the cylinder is jammed or the machine has a fault. If this is the case, the machine should be shut down and a maintenance light turned on.
  • 168. page 168 TS1 LS1 LS3 C5:0/DN SOL1 L LS2 SOL1 U T4:0/DN SOL1 CTU C5:0 Preset 5000 Accum. 0 SOL1 RTO T4:0 Time base: 1.0 Preset 5 T4:0/DN LIGHT L C5:0/DN RESET T4:0 RES - what do we need to do when the machine is reset? 7.12 ADDRESSING • To use advanced data functions in a PLC, we must first understand the structure of the data
  • 169. page 169 in the PLC memory. • There are two types of memory used in a PLC-5. Program Files - these are a collection of 1000 slots to store up to 1000 pro- grams. The main program will be stored in program file 2. SFC pro- grams must be in file 1, and file 0 is used for program and password information. All other program files from 3 to 999 can be used for ‘subroutines’. Data Files - This is where the variable data is stored that the PLC programs operate on. This is quite complicated, so a detailed explanation fol- lows. 7.12.1 Data Files • In brief PLC memory works like the memories in a pocket calculator. The values below are for a PLC-5, although most Allen-Bradley PLCs have a similar structure.
  • 170. page 170 For Allen-Bradley PLC-5 Rack I/O slot number in rack Interface to O:000 outputs outside world I: inputs S2: processor status B3: bits in words T4: timers Fixed types of counters C5: Data files control words R6: N7: integer numbers F8: floating point numbers Other files 9-999 can be created and and used. The user defined data files can have different data types. • These memory locations are typically word oriented (16 bits, or 2 bytes). This includes the bit memory. But the T4, C5, R6 data files are all three words long. • All values are stored and used as integers (except when specified, eg. floating point). When integers are stored in binary format 2’s complements are used to allow negative numbers. BCD values are also used. • There are a number of ways the PLC memory can be addressed, bit - individual bits in memory can be accessed - this is like addressing a sin- gle output as a data bit I:000/02 - the third input bit from input card I:000 B3:3 - a bit in memory word/integer - 16 bits can be manipulated as a group
  • 171. page 171 N7:8 - an integer from memory I:000 - an integer with all input values from an input card data value - an actual data value can be provided 8 - an integer 8.5 - a floating point number file level - an array of data values can be manipulated and operated on as a group #F8:5 - indicates a group of values starting at F8:5 #N7:0 - indicates a group of values starting at I7:0 indirect - another memory location can be used in the description of a loca- tion. I:000/[N7:2] -If the integer memory N7:2 location contains 5 this will become I:000/ I:[N7:1]/03 -If the integer memory location contains 2 this will become I:002/03 #I:[N7:1] -If the integer memory location contains 2 the file will start at I:002 expression - a text string that describes a complex operation “sin(F8:3) + 1.3” - a simple calculation • For the user assigned data files from 9 to 999 different data types can be assigned. These can be one of the data types already discussed, or another data type. A - ASCII B - bit BT - block transfer C - counter D - BCD F - floating point MG - message N - integer (signed, unsigned, 2s compliment, BCD) PD - PID controller R - control SC - SFC status
  • 172. page 172 ST - ASCII string T - timer 7.12.1.1 - Inputs and Outputs • Recall that the inputs and outputs use octal for specific bits. This means that the sequence of output bits is 00, 01, 02, 03, 04, 05, 06, 07, 10, 11, 12, 13, 14, 15, 16, 17 7.12.1.2 - User Numerical Memory • Bit data file B3 is well suited to use of single bits. the data is stored as words and this allows two different ways to access the same bit. B3:0/0 = B3/0 B3:0/10 = B3/10 B3:1/0 = B3/16 B3:1/5 = B3/21 B3:2/0 = B3/32 etc... • The integer file N7 stores words in 2’s complement form. This allows values from -32768 to 32767. These values can be addressed as whole words, and individual bits can also be changed. • The floating point file F8 will store floating point numbers that can only be used by floating point functions. The structure of these numbers does not allow bit access. 7.12.1.3 - Timer Counter Memory • Timer T4 values are addressed using the number of the timers, and an associated data type. For example the accumulator value of timer 3 is T4:3.ACC or T4:3/ACC. EN - timer enabled bit
  • 173. page 173 TT - timer timing bit DN - timer done bit PRE - preset word ACC - accumulated time word • Counter C5 values are addressed using the number of the counters, and an associated data type. For example the accumulator value of counter 3 is C5:3.ACC or C5:3/ACC. CU - count up bit CD - count down bit DN - counter done bit OV - overflow bit UN - underflow bit PRE - preset word ACC - accumulated count word 7.12.1.4 - PLC Status Bits (for PLC-5s) • Some of the more commonly useful status bits in data file S2 are given below. Full listings are given in the manuals. S2:0/0 carry in math operation S2:0/1 overflow in math operation S2:0/2 zero in math operation S2:0/3 sign in math operation S2:1/14 first scan of program file S2:8 the scan time (ms) S2:18 year S2:19 month S2:20 day S2:21 hour S2:22 minute S2:23 second S2:28 watchdog setpoint S2:29 fault routine file umber S2:30 STI (selectable timed interrupt) setpoint S2:31 STI file number
  • 174. page 174 S2:46-S2:54,S2:55-S2:56 PII (Programmable Input Interrupt) settings S2:55 STI last scan time (ms) S2:77 communication scan time (ms) 7.12.1.5 - User Function Memory • Control file R6 is used by various functions to track progress. Values that are available are, listed below. The use of these bits is specific to the function using the control location. EN - enable bit EU - enable unload DN - done bit EM - empty bit ER - error bit UL - unload bit IN - inhibit bit FD - found bit LEN - length word POS - position word 7.13 INSTRUCTION TYPES • There are basic categories of instructions, Basic (discussed before) - relay instructions - timer instructions - counter instructions Program Control - branching/looping - immediate inputs/outputs - fault/interrupt detection Basic Data Handling - moves
  • 175. page 175 - computation instructions - boolean instructions - conversion Logical - comparisons Advanced Data Handling - file instructions - shift registers/stacks Complex - PID - communications - high speed counters - ASCII string functions • The reader should be aware that some functions are positive edge triggered (i.e. they only work the scan is active). while most are active any time the input is active. Some examples of edge triggered and non-edge triggered functions are listed below, Edge Triggered CTU, CTD Non-edge triggered TON, TRO, TOF, ADD, MUL, etc. 7.13.1 Program Control Structures • These change the flow of execution of the ladder logic. 7.13.2 Branching and Looping • These functions allow control found in languages like Fortran IF-THEN is like MCR (Master Control Reset) GOTO is like JMP (Jump)
  • 176. page 176 SUBROUTINES is like Program Files • MCR blocks have been used earlier, but they are worth mentioning again. MCR A MCR If A is true then the MCR will cause the ladder in between to be executed. If A is false it is skipped. MCR • Block of ladder logic can be bypassed using a jump statment. JMP A B JMP 01 If A and B are true, the program will jump to LBL:01 to be executed. If A or B is false it is skipped. LBL 01 • Subroutines allow reusable programs to be written and called as needed. They are different from jump statements because they are not part of the main program (they are other program files), and arguments can be passed and returned.
  • 177. page 177 SUBROUTINES/PROGRAM FILES A JSR (Jump subroutine) program file 2 Program File 3 Input par N7:0 Input par 123 Return par N7:1 A separate ladder logic program is stored in program file 3. This fea- ture allows the user to create their own ‘functions’. In this case if A is true, then the program below will be executed and then when done the ladder scan will continue after the subroutine instruction. The number of data values passed and returned is variable. SBR (subroutine arguments) Input par N10:0 If B is true the subroutine will return and the values listed will be returned to the return par. For this example the value that is in N10:1 will eventually end up in N7:1 program file 3 B RET Return par N10:1 • For next loops can also be done to repeat blocks of ladder logic inside a single scan. Care must be used for this instruction so that the ladder logic does not get caught in an infinite, or long loop - if this happens the PLC will experience a fault and halt.
  • 178. page 178 A FOR label number 0 index N7:0 initial value 0 terminal value 9 step size 1 ADD Source A 1 Source B N7:1 Dest N7:1 NXT label number 0 Note: if A is true then the loop will repeat 10 times, and the value of N7:1 will be incresed by 10. If A is not true, then the ADD function will only be executed once and N7:1 will increase in value by 1. • Ladder logic programs always have an end statement, but it is often taken for granted and ignored. Most modern software automatically inserts this. Some PLCs will experience faults if this is not present. A B C END When the end (or End Of File) is encountered the PLC will stop scanning the ladder, and start updating the outputs. This will not be true if it is a subroutine or a step in an SFC.
  • 179. page 179 • There is also a temporary end (TND) that for a single ladder scan will skip the remaining portion of a program. • A one shot contact can be used to turn on a ladder run for a single scan. When the run has a positive rising edge the oneshot will turn on the run for a single scan. Bit ‘B3:0’ is used here to track to rung status. A B3:0 ONS B A B 7.13.2.1 - Immediate I/O Instructions
  • 180. page 180 • The normal operation of the PLC is fast [input scan] Input values read outputs are updated in slow [ladder logic is checked] memory only as ladder logic scanned Output values are fast [outputs updated] changed to match values in memory • This approach avoids problems caused by logic setting and resetting outputs before done. • If we have a problem we may want to update an output immediately, and not wait for the PLC to complete its scan of the ladder logic. To do this we use immediate inputs and outputs.
  • 181. page 181 e.g. Check for nuclear reactor overheat I:001/03 overheat sensor O:010/01 reactor shutdown I:001 IIN I:001/03 O:010/01 O:010 IOT These added statements can allow the ladder logic to examine a critical input, and adjust a critical output many times during the execution of ladder logic that might take too long for safety. 7.13.2.2 - Fault Detection and Interrupts • The PLC can be set up to run programs automatically. This is normally done for a few rea- sons, - to deal with errors that occur (eg. divide by zero) - to run a program at a regular timed interval (eg. SPC calculations) - to respond when a long instruction is complete (eg. analog input) - when a certain input changed (eg. panic button) • Two types of errors will occur - terminal (critical) and warnings (non-critical). A critical failure will normally stop the PLC. • In some applications faults and failures must be dealt with in logic if possible, if not the sys- tem must be shut down.
  • 182. page 182 • There are some memory locations that store indications of warning and fatal errors that have occurred. The routine in program file [S:29] needs to be able to detect and clear the fault. S:29 - program file number to run when a fault occurs • To set a timed interrupt we will set values in the status memory as indicated below. The pro- gram in file [S:31] will be run every [S:30]ms. S:30 - timed delay between program execution - an integer number of ms S:31 - the program number to be run • To cause an interrupt when a bit changes the following bits can be set. S:46 - the program file to run when the input bit changes S:47 - the rack and group number (eg. if in the main rack it is 000) S:48 - mask for the input address (eg. 0000000000000100 watches 02) S:49 - for positive edge triggered =1 for negative edge triggered = 0 S:50 - the number of counts before the interrupt occurs 1 = always up to 32767 7.13.3 Basic Data Handling • Some handy functions found in PLC-5’s (similar functions are available in other PLC’s) 7.13.3.1 - Move Functions • There are two types of move functions, MOV(value,destination) - moves a value to a memory location MVM(value,mask,destination) - moves a value to a memory location, but with a mask to select specific bits. • The following function moves data values between memory locations. The following exam- ple moves a floating point number from floating point memory 7 to 23
  • 183. page 183 MOV Source F8:07 Destination F8:23 • The following example moves a floating point number from floating point memory F8:7 to integer memory N7:23 MOV Source F8:07 Destination N7:23 • The following example puts an integer value 123 in integer memory N7:23 MOV Source 123 Destination N7:23 • A more complex example of the move functions follows,
  • 184. page 184 MOV source 130 dest N7:0 MOV source N7:1 dest N7:2 MVM source N7:3 mask N7:4 dest N7:5 before (binary) after (binary) N7:0 0000000000000000 N7:0 0000000010000010 N7:1 1101101101010111 N7:1 1101101101010111 N7:2 0000000000000000 N7:2 1101101101010111 N7:3 1101100010111011 N7:3 1101100010111011 N7:4 1010101010101010 N7:4 1010101010101010 N7:5 0000000000000000 N7:5 1000100010101010 7.14 MATH FUNCTIONS • These functions use values in memory, and store the results back in memory (Note: these functions do not use variables like normal programming languages.) • Math functions are quite similar. The following example adds the integer and floating point number and puts the results in ‘F8:36’.
  • 185. page 185 ADD source A N7:04 source B F8:35 destination F8:36 • Basic PLC-5 math functions include, ADD(value,value,destination) - add two values SUB(value,value,destination) - subtract MUL(value,value,destination) - multiply DIV(value,value,destination) - divide NEG(value,destination) - reverse sign from positive/negative CLR(value) - clear the memory location • Consider the example below,
  • 186. page 186 ADD source A N7:0 source B N7:1 dest. N7:2 ADD addr. before after source A 1 source B N7:3 N7:0 10 10 dest. N7:3 N7:1 25 25 N7:2 0 35 SUB N7:3 0 1 source A N7:1 N7:4 0 -10 source B N7:2 N7:5 0 250 dest. N7:4 N7:6 0 2 MULT N7:7 0 10 source A N7:0 N7:8 100 0 source B N7:1 dest. N7:5 F8:0 10.0 10.0 F8:1 25.0 25.0 DIV F8:2 0 2.5 source A N7:1 F8:3 0 2.0 source B N7:0 dest. N7:6 NEG source A N7:4 Note: integer values are dest. N7:7 limited to ranges between - 32768 and 32767, and there CLR are no fractions. dest. N7:8 DIV source A F8:1 source B F8:0 dest. F8:2 DIV source A N7:1 source B N7:0 dest. F8:3 • As an exercise, try the calculation below with ladder logic,
  • 187. page 187 N7:2 = -(5 - N7:0 / N7:1) • Some intermediate math functions include, CPT(destination,expression) - does a calculation ACS(value,destination) - inverse cosine COS(value,destination) - cosine ASN(value,destination) - inverse sine SIN(value,destination) - sine ATN(value,destination) - inverse tangent TAN(value,destination) - tangent XPY(value,value,destination) - X to the power of Y LN(value,destination) - natural log LOG(value,destination) - base 10 log SQR(value,destination) - square root • Examples of some of these functions are given below.
  • 188. page 188 given C A = ln B + e acos ( D ) assign A = F8:0 B = F8:1 C = F8:2 D = F8:3 LN SourceA F8:1 Dest. F8:4 XPY SourceA 2.718 SourceB F8:2 Dest F8:5 ACS SourceA F8:3 Dest. F8:6 MUL SourceA F8:5 SourceB F8:6 Dest F8:7 ADD SourceA F8:4 SourceB F8:7 Dest F8:7 SQR SourceA F8:7 Dest. F8:0
  • 189. page 189 It can also be done with a compute expression CPT Dest. F8:0 Expression SQR(LN(F8:1)+XPY(2.718,F8:2)*ACS(F8:3)) • For practice implement the following function, x = atan  y  y + log ( y )  ------------------------   y + 1  • Some functions are well suited to statistics. AVE(start value,destination,control,length) - average of values STD(start value,destination,control,length) - standard deviation of values SRT(start value,control,length) - sort a list of values • Examples of these functions are given below.
  • 190. page 190 AVE File #F8:0 Dest F8:4 Control R6:1 length 4 position 0 STD File #F8:0 Dest F8:5 Control R6:2 length 4 position 0 SRT File #F8:0 Control R6:3 Addr. before after length 4 position 0 F8:0 3 1 F8:1 1 2 F8:2 2 3 F8:3 4 4 F8:4 0 2.5 F8:5 0 1.29 • There are also functions for basic data conversion. TOD(value,destination) - convert from BCD to binary FRD(value,destination) - convert from binary to BCD DEG(value,destination) - convert from radians to degrees RAD(value,destination) - convert from degrees to radians • Examples of these functions are given below.
  • 191. page 191 FRD Source A D9:0 Dest. N7:0 TOD Source A N7:1 Dest. D9:1 DEG Source A F8:0 Dest. F8:2 RAD Source A F8:1 Dest. F8:3 Addr. before after N7:0 0000000000000000 0000011100000001 N7:1 0000001000100100 0000001000100100 F8:0 3.141 3.141 F8:1 45 45 F8:2 0 180 F8:3 0 0.785 D9:0 0000 0000 0000 0000 0000 0101 0100 1000 D9:1 0001 0111 1001 0011 0001 0111 1001 0011 7.15 LOGICAL FUNCTIONS 7.15.1 Comparison of Values
  • 192. page 192 • These functions act like input contacts. The equivalent to these functions are if-then state- ments in traditional programming languages. • Basic comparison functions in a PLC-5 include, CMP(expression) - compares two values for equality EQU(value,value) - equal NEQ(value,value) - not equal LES(value,value) - less than LEQ(value,value) - less than or equal GRT(value,value) - greater than GEQ(value,value) - greater than or equal • The comparison function below compares values at locations A and B. If they are not equal, the output is true. The use of the other comparison functions is identical. O:012 NEQ A N7:03 B N7:02 04 O:012 CMP OR expression N7:03 <> N7:02 04 • More advanced comparison functions in a PLC-5 include, MEQ(value,mask,threshold) - compare for equality using a mask LIM(low limit,value,high limit) - check for a value between limits • Examples of these functions are shown below.
  • 193. page 193 LIM low limit N7:0 N7:4/0 test value N7:1 high limit N7:2 LIM low limit N7:2 N7:4/1 test value N7:1 high limit N7:0 LIM low limit N7:2 N7:4/2 test value N7:3 high limit N7:0 MEQ source N7:0 N7:4/3 mask N7:1 compare N7:2 Addr. after (decimal) after (binary) N7:0 1 0000000000000001 N7:1 5 0000000000000101 N7:2 11 0000000000001011 N7:3 15 0000000000001111 N7:4 0000000000001101 7.16 BINARY FUNCTIONS • These functions allow Boolean operations on numbers and values in the PLC memory. • Binary functions are also available for,
  • 194. page 194 AND(value,value,destination) - Binary and function OR(value,value,destination) - Binary or function NOT(value,value,destination) - Binary not function XOR(value,value,destination) - Binary exclusive or function • Examples of the functions are, AND source A N7:0 source B N7:1 dest. N7:2 OR source A N7:0 source B N7:1 dest. N7:3 XOR source A N7:0 source B N7:1 dest. N7:4 NOT source A N7:0 dest. N7:5 addr. data (binary) N7:0 0011010111011011 N7:1 1010010011101010 after N7:2 1010010011001010 N7:3 1011010111111011 N7:4 1001000100110001 N7:5 1100101000100100 7.17 ADVANCED DATA HANDLING
  • 195. page 195 7.17.1 Multiple Data Value Functions • We can also deal with large ‘chunks’ of memory at once. These will not be covered, but are available in texts. Some functions include, - move/copy memory blocks - add/subtract/multiply/divide/and/or/eor/not/etc blocks of memory • These functions are similar to single value functions, but they also include some matrix operations. For a PLC-5 a matrix, or block of memory is also known as an array. • The basic functions are, FAL(control,length,mode,destination,expression) - will perform basic math operations to multiple values. FSC(control,length,mode,expression) - will do a comparison to multiple val- ues COP(start value,destination,length) - copies a block of values FLL(value,destination,length) - copies a single value to a block of memory • These functions are done on a PLC-5 using file commands. Typical operations include file to file - copy an array of memory from one location to another. element to file - one value is copied to a block of memory file to element - can convert between data types file add - add arrays file subtract - subtract arrays file multiply - multiply arrays file divide - divide an array by a value convert to/from BCD AND/OR/XOR/NOT - perform binary functions. • Examples of these functions are shown below.
  • 196. page 196 FAL Control R6:0 length 5 file to file position 0 Mode all Destination #N7:5 Expression #N7:0 + 5 FAL Control R6:0 length 5 element to file position 0 file to element Mode incremental Destination #N7:5 Expression N7:0 + 5 FAL Control R6:0 length 5 position 0 file to element Mode incremental Destination N7:5 Expression #N7:0 + 5 • a useful function not implemented on PLC-5 processors is a memory exchange. 7.17.2 Block Transfer Functions • Certain PLC cards only have a single address (eg. O:001 or I:001) but multiple data values need to be read or written to it. To do this the block transfer functions are used. • These will be used in the labs for analog input/output cards.
  • 197. page 197 • These functions will take more than a single scan, and so once activated they will require a delay until they finish. • To use the write functions we set up a block of memory, the function shows this starting at N9:0, and it is 10 words long (this is determined by the special purpose card). The block transfer function also needs a control block of memory, this is BT10:1 BT10:1/EN Advance Block Transfer Write Module Type Example Output Card Rack 00 Group 3 Module 0 Control Block BT10:1 Data File N9:0 Length 10 Continuous No • To read values we use a similar method. In the example below 9 values will be read from the card and be placed in memory locations from N9:4 to N9:11. BT10:0/15 read BTR Rack: 00 Group: 0 Module: 0 BT Array: BT10:0 Data File: N9:4 Length: 9 Continuous: no
  • 198. page 198 7.18 COMPLEX FUNCTIONS 7.18.1 Shift Registers • The values can be shifted left or right with the following functions. BSL - shifts left from the LSB to the MSB. The LSB must be supplied BSR - similar to the BSL, except the bit is input to the MSB and shifted to the LSB • These use bit memory blocks of variable length. • An example of a shift register is given below. In this case it is taking the value of bit B3:1/0 and putting it in the control word bit R6:2/UL. It then shifts the bits once to the right, B3:1/0 = B3:1/1 then B3:1/1 = B3:1/2 then B3:1/2 = B3:1/3 then B3:1/3 = B3:1/4. Then the input bit is put into the most significant bit B3:1/4 = I:000/00. bits shift right B3:1 MSB 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 LSB 15 00 I:000/00 5 R6:2/UL BSR File B3:1 Control R6:2 Bit address I:000/00 Length 5 • There are other types of shift registers not implemented in PLC-5s.
  • 199. page 199 Arithmetic Shift Left (ASL) carry msb lsb 0 0 0 0 0 0 0 0 0 0 Arithmetic Shift Right (ASR) carry 0 0 0 0 0 0 0 0 0 0 Rotate Left (ROL) 0 0 0 0 0 0 0 0 carry 0 Rotate Right (ROR) 0 0 0 0 0 0 0 0 carry 0 7.18.2 Stacks • We can also use stack type commands. These allow values to be stored in a ‘pile’. This allows us to write programs that will accumulate values that can be used later, or in sequence. • The basic concept of a FIFO stack is that the first element in is the first element out. • The PLC-5 commands are FFL to load the stack, and FFU to unload it. • The example below shows two instructions to load and unload the stack. The first time FFL is activated it will grab all of the bits from the input card I:001 and store them on the stack, at N7:0. The next value would be at N7:1, and so on until the stack length is met. When FFU is used the value at N7:0 will be moved to set all of the bits on the output card O:003 and the values on
  • 200. page 200 the stack will be shifted up so that the value previously in N7:1 is now in N7:0, etc. (note: the source and destination do not need to be inputs and outputs) A FFL source I:001 FIFO N7:0 Control R6:0 length 5 position 0 B FFU FIFO N7:0 destination O:003 Control R6:0 length 5 position 0 • A Last-In-First-Out stack can also be used with the LFL/LFU functions. 7.18.3 Sequencers • Basically, sequencers are a method for using predetermined patterns to drive a process • These were originally based on motor driven rotating cams that made and broke switches. When a number of these cams were put together, they would be equivalent to a binary number, and could control multiple system variables.
  • 201. page 201 As it rotates it makes contact with none, one, or two terminals, as determined by the depressions and rises in the rotating cam. • A sequencer can keep a set of values in memory and move these to memory locations (such as an output card) when directed. • These are well suited to state diagrams/processes with a single flow of execution (like traf- fic lights) • The commands are, SQO(start,mask,source,destination,control,length) - sequencer output from table to memory address SQI(start,mask,source,control,length) - sequencer input from memory address to table SQL(start,source,control,length) - sequencer load to set up the sequencer parameters • An example of a sequencer is given below for traffic light control. The light patterns are stored in memory (entered manually by the programmer). These are then moved out to the output card as the function is activated. The mask (003F = 0000000000111111) is used so that only the 6 LSB are changed.
  • 202. page 202 SQO File B3:0 Mask 003F Destination O:000 Control R6:0 Length 4 Position 0 B3:0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 B3:3 EW - green EW - yellow EW - red NS - green NS - yellow NS - red 7.19 ASCII FUNCTIONS • ASCII functions can be used to interpret and manipulate strings in PLCs. • These functions include, ABL(channel, control, )- reports the number of ASCII characters including line endings ACB(channel, control, ) - reports the numbers of ASCII characters in buffer ACI(string, dest) - convert ASCII string to integer ACN(string, string,dest) - concatenate strings AEX(string, start, length, dest) - this will cut a segment of a string out of a larger string AIC(integer, string) - convert an integer to a string AHL(channel, mask, mask, control) - does data handshaking ARD(channel, dest, control, length) - will get characters from the ASCII
  • 203. page 203 buffer ARL(channel, dest, control, length) - will get characters from an ASCII buffer ASC(string, start, string, result) - this will look for one string inside another AWT(channel, string, control, length) - will write characters to an ASCII out- put • An example of this function is given below, • Try the problem below, Add the following numbers and store the results in ST10:2 ST10:0 “100” ST10:1 “10” ST10:2 7.20 DESIGN TECHNIQUES 7.20.1 State Diagrams • We can implement state diagrams seen in earlier sections using many of the advanced func-
  • 204. page 204 tion discussed in this section. • Most PLCs allow multiple programs that may be used as subroutines. We could implement a block logic method using subroutine programs. • Consider the state diagram below and implement it in ladder logic. You should anticipate what will happen if both A and C are pushed at the same time. STA STC B D A C STB first scan
  • 205. page 205 PROGRAM 2 first scan L STB U STA U STC STA JSR program 3 STB JSR program 4 STC JSR program 5
  • 206. page 206 PROGRAM 3 B U STA L STB PROGRAM 4 C U STB L STC A C U STB L STA PROGRAM 5 D U STC L STB MCR 7.21 DESIGN CASES
  • 207. page 207 7.21.1 If-Then • If-then can be implemented different ways, as a simple jump, or as a subroutine call. A JMP LBL 01 IF (A) THEN GOTO (01) 01 LBL A JSR FILE 3 IF (A) THEN {...... } 7.21.2 For-Next • For-next can be implemented as shown below, but recall that PLC programs do not execute one line at a time.
  • 208. page 208 LIM N7:0 MCR min 1 max 10 for i = 1 to 10 next i ADD source A: N7:0 source B: 1 Dest.: N7:0 MCR • A For/Next function is also available in the PLC. • A do-while can be done as a simple variation of this. 7.21.3 Conveyor • Consider a conveyor where parts enter on one end. they will be checked to be in a left or right orientation with a vision system. If neither left nor right is found, he part will be placed in a reject bin. The conveyor layout is shown below.
  • 209. page 209 vision left right reject part movement along conveyor conveyor location sensor 7.22 IMPLEMENTATION 7.23 PLC WIRING • Many configurations and packages are available. But essential components are: power supply - Provides voltage/current to drive the electronics (often5V, +/ - 12V, +/- 24V) CPU - Where ladder logic is stored and processed; the main control is exe- cuted here. I/O (Input/Output) - A number of input/output terminals to connect to the actual system Indicator lights - Indicate mode/power and status. These are essential when diagnosing problems. • Common Configurations: Rack/Chassis - A rack or number of racks are used to put PLC cards into. These are easy to change, and expand. Shoebox - A compact, all-in-one unit (about the size of a shoebox) that has limited expansion capabilities. Lower cost and compactness make these ideal for small applications. • Criteria for evaluation:
  • 210. page 210 Rack, shoebox or micro # of inputs/outputs (digital) Memory - often 1K and up. Need is dictated by size of ladder logic program. A ladder element will take only a few bytes and will be specified in manufacturers documentation. # of I/O modules - When doing some exotic applications, a large number of special add-on cards may be required. Scan Time - The time to execute ladder logic elements. Big programs or faster processes will require shorter scan times. The shorter the scan time, the higher the cost. Typical values for this are 1 microsecond per simple ladder instruction. Communications - Serial and networked connections allow the PLC to be programmed and talk to other PLCs. The needs are determined by the application. 7.23.1 SWITCHED INPUTS AND OUTPUTS The Obvious: A PLC is just a computer. We must get information in so that it may make decisions and have outputs so that it can make things happen. Inputs: Switches - Contact, deadman, etc. all allow a voltage to be applied or removed from an input. Relays - Used to isolate high voltages from the PLC inputs, these act as switches. Encoder - Can keep track of positions. etc.
  • 211. page 211 PLC Input Card e.g. 24V AC normally open push-button 00 24 V AC 01 Power Supply 02 03 04 Normally open 05 temperature switch 06 (See appendix in textbook for more 07 symbols) I:0.3 GND Push Button 01 I:0.3 it is in rack 0 Temperature Sensor I/O Group 3 03 7.23.1.1 - Input Modules • Input modules typically accept various inputs depending upon specified values. • Typical input voltages are: 12-24 VDC 100-120 VAC 200-240 VAC 12-24 VAC/DC 24 VAC • DC voltages are usually lower and, therefore, safer (i.e., 12-24V)
  • 212. page 212 • DC inputs are very fast. AC inputs require a longer time (e.g., a 60Hz wave would require 1/60sec for reasonable recognition). • DC voltages are flexible being able to connect to greater varieties of electrical systems. • DC input cards typically have more inputs. • AC signals are more immune to noise than DC, so they are suited to long distances and noisy (magnetic) environments. • AC signals are very common in many existing automation devices. 7.23.1.2 - Actuators • Inductive loads - Inductance is caused by a coil building up a magnetic field. When a volt- age is removed from the coil, the field starts to collapse. As it does this, the magnetic field is changed back to current/voltage. If this change is too sudden, a large voltage spike is created. One way to overcome this is by adding a surge suppressor. One type of design was suggested by Steel McCreery of Omron Canada Ltd.
  • 213. page 213 inductive load output VDC+/VAC Uncompensated VDC-/COM. common Control Relay (PLC) Power supply inductive load output L VAC Compensating + for AC loads C R Vs - COM. common Relay or Triac Power supply R = Vs(.5 to 1) ohms C = (.5 to 1)/Adc (microfarads) Vcapacitor = 2(Vswitching) + (200 to 300) V Adc is the rated amperage of the load Vs is the voltage of the load/power supply Vswitching may be up to 10 time Vs inductive load output + Compensating for DC loads - common Relay or Transistor Power supply 7.23.1.3 - Output Modules • Typical Outputs Motors - Motors often have their own controllers, or relays because of the high current they require. Lights - Lights can often be powered directly from PLC output boards, etc. • WARNING - ALWAYS CHECK RATED VOLTAGES AND CURRENTS FOR PLC’s AND NEVER EXCEED!
  • 214. page 214 24 V DC 120 V AC Output Card Power Supply 00 COM. 01 Relay 02 03 04 Motor 05 24 V lamp 06 07 +24 V DC Power COM Supply GND in rack 01 I/O group 2 O:1.2 Motor 03 O:1.2 Lamp 07
  • 215. page 215 e.g. output example with dry (relay) contacts 120 V AC/DC Output Card 24 V DC Power Supply 120 V AC 00 Power Supply 01 02 03 Relay 04 05 06 Motor 07 in rack 01 I/O group 2 24 V lamp O:0.2 Motor 03 O:0.2 Lamp 07 • Typical outputs operate in one of two ways: Dry contacts - A separate relay is dedicated to each output. This allows mixed voltages (AC or DC and voltage levels up to the maximum) as well as isolated outputs to protect other outputs and the PLC. Response times are often greater than 10ms. This method is the least sensitive to
  • 216. page 216 voltage variations and spikes. Switched outputs - A voltage is supplied to the PLC card and the card switches it to different outputs using solid state circuitry (transistors, triacs, etc.) Triacs are well suited to AC devices requiring less than an amp. They are sensitive to power spikes and might inadvertently turn on when there are transient voltage spikes. A resistor may need to be put in parallel with a load to ensure enough current is drawn to turn on the triac. The resistor size can be determined by PLC output card I = leakage current (mA) Vac load PLC controlled power Von supply TRIAC R neut. R < Von/I Transistor outputs use NPN or PNP transistors up to 1A typically. Their response time is well under 1ms. 7.24 THE PLC ENVIRONMENT 7.24.1 Electrical Wiring Diagrams • PLC’s are generally used to control the supply of power to a system. As a result, a brief examination of electrical supply wiring diagrams is worthwhile. • Generally electrical diagrams contain very basic circuit elements, such as relays, transform- ers, motors, fuses, lights, etc. • Within these systems there is often a mix of AC and DC power. 3 phase AC power is what is delivered universally by electric utilities, so the wiring diagrams focus on AC circuits.
  • 217. page 217 • A relay diagram for a simple motor with a seal in circuit might look like the one shown below,: terminals power interrupter motor starter M L1 M motor L2 3 phase M AC L3 step down transformer start stop M M • The circuit designed for the motor controller must be laid out so that it may be installed in
  • 218. page 218 an insulated cabinet. In the figure below, each box could be a purchased module(s). Main Breaker Contactors Transformer Start Overload Stop Terminal Block A physical layout for the control cabinet • After the Layout for the cabinet is determined, the wire paths must be determined. The fig- ure below lays out the wire paths and modules to be used.
  • 219. page 219 L1 L2 L3 start stop motor 3 phase 3 phase AC AC 7.24.2 Wiring • Discrete inputs - If a group of input voltages are the same, they can be grouped together. An
  • 220. page 220 example of this is shown below: PLC Input + I0 I1 24VDC I2 I3 - COM. • If the input voltages are different and/or come from different sources, the user might use isolated inputs. PLC Input Card 24VAC COM I0 N0 + I1 24VDC - N1 I2 + N2 12VDC - • Analog Inputs - The continuous nature of these inputs makes them very sensitive to noise. More is discussed in the next section, and an example is given below:
  • 221. page 221 A shield is a metal sheath that Analog Input surrounds the wires Analog voltage source + IN1 REF1 - SHLD 7.24.3 Shielding and Grounding • In any sort of control system, wire still carries most inputs/outputs/communications • We transmit signals along wires by pushing/pulling electrons in one end of the metal wires. Based upon the push/pull that shows up at the other end, we determine the input/output/communi- cations. *** The key idea is that a signal propagates along the wire. • There are two problems that occur in these systems. 1. Different power sources in the same system can cause different power sup- ply voltages at opposite ends of a wire. As a result, a current will flow and an unwanted voltage appears. This can destroy components and create false signal levels. 2. Magnetic fields crossing the long conductors or in conductor loops can induce currents, destroy equipment, give false readings, or add unwanted noise to analog data signals. • General design points - Choose a good shielding cabinet - Avoid “noisy” equipment when possible
  • 222. page 222 - Separate voltage levels, and AC/DC wires from each other when possible. • typical sources of grounding problems are: - Electrostatic - Magnetic - Electromagnetic - Resistance coupled circuits - Ground loops • Shielded wire is one good approach to reducing electrostatic/magnetic interference. The conductors are housed in a conducting jacket or the circuitry in housed in a conducting metal cab- inet. • Resistance coupled devices can have interference through a common power source, such as power spikes or brownouts caused by other devices in a factory. • Ground loops are caused when too many separate connections to ground are made creating loops of wire that become excellent receivers for magnetic interference that induces differences in voltage between grounds on different machines. The common solution is to use a common ground bar.
  • 223. page 223 Preferred device A device A ground loop #1 device B device B ground loop #2 -V gnd +V +V -V power gnd power supply supply 7.24.4 PLC Environment • Care must be taken to avoid certain environmental factors. Dirt - dust and grime can enter the PLC through air ventilation ducts. As dirt clogs internal circuitry and external circuitry, it can effect operation. A storage cabinet such as Nema 4 or 12 can help protect the PLC. Humidity - Humidity is not a problem with the modern plastic construction materials. But if the humidity condenses, the water can cause corro- sion, conduct current, etc. Condensation should be avoided at all costs. Temperature - The semiconductor chips in the PLC have operating ranges where they are operational. As the temperature is moved out of this range, they will not operate properly and the PLC will shut down. Ambient heat generated in the PLC will help keep the PLC operational at lower temperatures (generally to 0°C). The upper range for the devices is about 60°C, which is generally sufficient for sealed cabinets, but warm temperatures, or other heat sources (e.g. direct irradiation from the sun) can raise the temperature above acceptable limits. In
  • 224. page 224 extreme conditions, heating or cooling units may be required. (This includes “cold-starts” for PLCs before their semiconductors heat up). Shock and Vibration - The nature of most industrial equipment is to apply energy to exact changes. As this energy is applied, there are shocks and vibrations induced. Both will travel through solid materials with ease. While PLCs are designed to withstand a great deal of shock and vibra- tion, special elastomer/sprung or other mounting equipment may be required. Also note that careful consideration of vibration is also required when wiring. - Interference - Discussed in shielding and grounding. - Power - Power will fluctuate in the factory as large equipment is turned on and off. To avoid this various options are available. Use an isolation transformer. A UPS (Uninterruptable Power Supply) is also becoming an inexpensive option and are widely available for personal computers. 7.24.5 SPECIAL I/O MODULES • Counters • each card will have 1 to 16 counters generally. • typical sample speeds 200KHz • often allow count up/down • the counter can be set to zero, or up/down, or gating can occur with an external input. • High Speed Counter - When pulses are too fast to be counted during normal PLC ladder scans, a special counter can be used that will keep track of the pulses. • Position controller - A card that will drive a motor (servo motor or stepper motor), and use feedback of the motor position to increase accuracy (feedback is optional with stepper motors). • PID modules - For continuous systems, for example motor speed. • There are 2 types of PID modules. In the first, the CPU does the cal- culation; in the second, a second controller card does the calculation.
  • 225. page 225 - When the CPU does the calculation, the PID loop is slower. - When a specialized card controls the PID loop, it is faster, but it costs more. • Typical applications - positioning workpieces. • Thermocouple - Thermocouples can be used to measure temperature, but these low voltage devices require sensitive electronics to get accurate temperature readings. • Analog Input/Output - These cards measure voltages in various ranges and allow monitor- ing of continuous processes. These cards can also output analog voltages to help control external processes, etc. • Programmers - There are a few basic types of programmers in use. These tend to fall into 3 categories: 1. Hand held units (or integrated) - They allow programming of PLC using a calculator type interface. And is often done using mnemonics. 2. Specialized programming units - Effectively these are portable computers that allows graphical editing of the ladder logic, and fast uploading/ downloading/monitoring of the PLC. 3. PLC Software for Personal Computers - They are similar to the specialized programming units, but the software runs on a multi-use, user supplied computer. This approach is typically preferred over 2. • Man Machine Interface (MMI) - The user can use, • touch screens • screen and buttons • LCD/LED and buttons • keypad to talk to PLC • PLC CPU’s - A wide variety of CPU’s are available and can often be used interchangeably in the rack systems. The basic formula is price/performance. The table below compares a few CPU units in various criteria.
  • 226. page 226 PLC Siemens Allen-Bradley Siemens Allen-Bradley AEG S5-90U MicroLogix S5-115U SLC 5/04 PC-A984-145 (CPU 944) FEATURE RAM (KB) 4 4 96 64 8 Scan times (us) per basic instruc. 1 0.8 .75 5 overhead <1000 2000 <1000 Package mini-module micro card card Power Supply 24 VDC 24DC/115AC 24 VDC 24DC/115AC Maximum Cards 6 with addon 30 Maximum Racks N/A up to 30 Maximum Drops 64 Distance 2.5m or 3km Counters 32 128 no limit Timers 32 128 no limit Flags 2048 I/O - Digital on board 16 32 0 0 0 maximum 208 960 1024 960 256 I/O - Analog on board 0 0 0 0 maximum 16 0 64 120 Communication network Sinec-L1 DH-485 Sinec-L1, prop. DH+,devicenet Modbus/Modubs+ line printer, ASCII RS-232 other ASCII Functions PID yes option yes option Legend: prop. - proprietary technology used by a single vendor option - the vendor will offer the feature at an additional cost • Specialty cards for IBM PC interface. - Siemens/Allen-Bradley/Etc have cards that fit into IBM computers and will communicate with PLC’s. Most modern PLCs will connect directly to
  • 227. page 227 a PC using ethernet or serial (RS-232) cables. • IBM PC computer cards - an IBM compatible computer card that plugs into a PLC bus and allows use of common software • For example, the Siemens CP580 Simatic AT - 1 com port (RS-232C) - 1 serial port (?) - 1 RS-422 serial port - RGB monitor driver (VGA) - keyboard - 3.5” disk - TTY interface - 9 pin RS-232C mouse • Diagnostic Modules - Plug in and all they do is watch for trouble. • ID Tags - Special “tags” can be attached to products and, as they pass within range of pickup sensors, they transmit (via radio) an ID number or a packet of data. This data can then be used, updated and rewritten to the tags by the PLC • e.g., Omron V600/V620 ID system • a basic method for transmission of a text based message • tags on parts carry message • transceivers that receive and transmit changes • Voice Recognition/Speech - In some cases verbal I/O can be useful. Speech recognition methods are still very limited, the user must control their speech. Background noise causes prob- lems. 7.25 PRACTICE PROBLEMS 1. A switch will turn a counter on when engaged. This counter can be reset by a second switch. The value in the counter should be multiplied by 5, and then displayed as a binary output
  • 228. page 228 using (201-208) 2. Develop Ladder Logic for a car door/seat belt safety system. When the car door is open, or the seatbelt is not done up, the ignition power must not be applied. In addition the key must be able to switch ignition power. 1. List of Inputs 2. Draw Ladder 3. TRUE / FALSE -- PLC outputs can be set with Bytes instead of bits. (ans. true) 4. Create a ladder logic program that will start when input ‘A’ is turned on and calculate the series below. The value of ‘n’ will start at 1 and with each scan of the ladder logic ‘n’ will increase until n=100. While the sequence is being incremented, any change in ‘A’ will be ignored. x = 2(n – 1 ) A = I:000/00 n = N7:0 x = N7:1
  • 229. page 229 ans. A B3:0 MOV Source A 1 Dest. N7:0 A B3:0 LEQ Source A N7:0 B3:0 Source B 100 B3:0 CPT Dest. N7:1 Expression 2 * (N7:0 - 1) B3:0 ADD Source A 1 Source B N7:0 Dest. N7:0 5. A thumbwheel input card acquires a four digit BCD count. A sensor detects parts dropping down a chute. When the count matches the BCD value the chute is closed, and a light is turned on until a reset button is pushed. A start button must be pushed to start the part feeding. Develop the ladder logic for this controller. Use a structured design technique such as a state diagram. INPUT OUTPUT I:000 - BCD input card O:002/00 - chute open I:001/00 - part detect O:002/01 - light I:001/01 - start button I:001/02 - reset button
  • 230. page 230 first scan ans. S1 start S2 parts waiting counting (chute open) count S3 exceeded reset bin full (light on)
  • 231. page 231 first scan L S1 U S2 U S3 S2 chute S3 light S1 MCR start L S2 U S1 FRD Source A I:000 Dest. C5:0/ACC MCR
  • 232. page 232 S2 MCR part detect CTD counter C5:0 preset 0 C5:0/DN L S3 U S2 MCR S3 MCR reset L S1 U S3 MCR 6. Design and write ladder logic for a simple traffic light controller that has a single fixed sequence of 16 seconds for both green lights and 4 second for both yellow lights. Use either stacks or sequencers.
  • 233. page 233 ans. (the sequencer is best suited to this problem) OUTPUTS T4:0/DN O:000/00 NSG - north south green O:000/01 NSY - north south yellow TON O:000/02 NSR - north south red T4:0 O:000/03 EWG - east west green preset 4.0 sec O:000/04 EWY - east west yellow T4:0/DN O:000/05 EWR - east west red SQO File #N7:0 Addr. Contents (in binary) mask 003F Dest. O:000 N7:0 0000000000100001 Control R6:0 N7:1 0000000000100001 Length 10 N7:2 0000000000100001 N7:3 0000000000100001 N7:4 0000000000100010 N7:5 0000000000001100 N7:6 0000000000001100 N7:7 0000000000001100 N7:8 0000000000001100 N7:9 0000000000010100 7. A PLC is to be used to control a carillon (a bell tower). Each bell corresponds to a musical note and each has a pneumatic actuator that will ring it. The table below defines the tune to be programmed. Write a program that will run the tune once each time a start button is pushed. A stop button will stop the song. time sequence in seconds O:000/00 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 O:000/00 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 O:000/01 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 O:000/02 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 O:000/03 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 O:000/04 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 O:000/05 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 O:000/06 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 O:000/07 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
  • 234. page 234 8. The following program uses indirect addressing. Indicate what the new values in memory will be when button A is pushed after the first and second instructions. A ADD Source A 1 Source B N7:0 Dest. N7:[N7:1] A ADD Source A N7:[N7:0] Source B N7:[N7:1] addr before after 1st after 2nd Dest. N7:[N7:0] N7:0 1 N7:1 2 N7:2 3 9. Divide the string in ST10:0 by the string in ST10:1 and store the results in ST10:2. Check for a divide by zero error. ST10:0 “100” ST10:1 “10” ST10:2
  • 235. page 235 ans) AIC Source ST10:0 Dest N7:0 AIC Source ST10:1 Dest N7:1 NEQ DIV Source A 0 Source A N7:0 Source B N7:1 Source B N7:1 Dest N7:2 IAC Source N7:2 Dest ST10:2 10. Write a number guessing program that will allow a user to enter a number on a terminal that transmits it to a PLC where it is compared to a value in ’N7:0’. If the guess is above "Hi" will be returned. If below "Lo" will be returned. When it matches "ON" will be returned.
  • 236. page 236 (ans. R6:4/EN ACB Channel 0 Control R6:4 ARL EQU Channel 0 SourceA R6:4.POS Dest ST9:0 Source B 2 Control R6:0 Length 3 R6:0/DN AIC Source ST9:0 Dest N7:1 LES AWT Source A N7:1 Channel 0 Source B N7:0 Source ST9:1 Control R6:1 Length 2 EQ AWT Source A N7:1 Channel 0 ST9:1="Lo" Source B N7:0 Source ST9:2 ST9:2="ON" Control R6:2 ST9:3="Hi" Length 2 GRT AWT Source A N7:1 Channel 0 Source B N7:0 Source ST9:3 Control R6:3 Length 2 11. Write a program that will convert a numerical value stored in ‘F8:0’ and write it out the RS-232 output on a PLC-5 processor.
  • 237. page 237 MOV Source F8:0 Dest N7:0 AIC Source N7:0 Dest ST9:0 R6:0/EN AWT ASCII WRITE Channel 0 Source ST9:0 Control R6:0 String Length 5 Characters Sent 7.26 REFERENCES Bryan, L.A., Bryan, E.A., Programmable Controllers, Industrial Text Company, 19??. Cox, R., Technician’s Guide to Programmable Controllers, Delmar Publishing, 19??. Filer and Linonen, Programmable Controllers and Designing Sequential Logic, Dryden & Saunders/HBJ, 19??. Petruzella, F., Programmable Logic Controllers, McGraw-Hill Publishing Co., 19??. Sobh, M., Owen, J.C., Valvanis, K.P., Gracanin, S., “A Subject-Indexed Bibliography of Dis- crete Event Dynamic Systems”, IEEE Robotics and Applications Magazine, June 1994, pp. 14- 20.
  • 238. page 238 Sugiyama, H., Umehara, Y., Smith, E., “A Sequential Function Chart (SFC) Language for Batch Control”, ISA Transactions, Vol. 29, No. 2, 1990, pp. 63-69. Swainston, F., A Systems Approach to Programmable Controllers, Delmar Publishing, 19??. Teng, S.H., Black, J. T., “Cellular Manufacturing Systems Modelling: The Petri Net Approach”, Journal of Manufacturing Systems, Vol. 9, No. 1, 1988, pp. 45-54. Warnock, I., Programmable Controllers: Operation and Application, Prentice Hall, 19??. Wright, C.P., Applied Measurement Engineering, Prentice-Hall, New Jersey, 1995. 7.27 LABORATORY - SERIAL INTERFACING TO A PLC Purpose: To write C++ and ladder logic program to communicate over RS-232. Overview: only transmit a fixed number of characters line endings important when plc receives the following charaters it should, A - turn on an output B - turn off an output C - return ’0’ if output is off, or ’1’ if output is on Pre-Lab: 1. If necessary review PLC basics and the PLC-5 tutorial. 2. Write a ladder logic program to receive ASCII commands as described in the Overview, and perform the desired action. 3. Write a C++ program to communicate with the ladder logic program using a user menu.
  • 239. page 239 In-Lab: 1. Enter the ladder logic program and test it with a terminal program. 2. Enter the C++ program and test it with a terminal emulator. 3. Test the two programs together. Submit (individually): 1.Program listings.
  • 240. page 240 8. PLCS AND NETWORKING Computer Devicenet RS-232 Process Process Actuators Sensors Process Process Process Actuators Sensors PLC Normal I/O on PLC Figure 22.1 - A Communication Example 8.1 OPEN NETWORK TYPES 8.1.1 Devicenet Devicenet has become one of the most widely supported control networks. It is an open stan- dard, so components from a variety of manufacturers can be used together in the same control sys- tem. It is supported and promoted by the Open Devicenet Vendors Association (ODVA) (see http:/ /www.odva.org). This group includes members from all of the major controls manufacturers. This network has been designed to be noise resistant and robust. One major change for the control engineer is that the PLC chassis can be eliminated and the network can be connected directly to the sensors and actuators. This will reduce the total amount of wiring by moving I/O points closer to the application point. This can also simplify the connection of complex devices,
  • 241. page 241 such as HMIs. Two way communications inputs and outputs allow diagnosis of network problems from the main controller. Devicenet covers all seven layers of the OSI standard. The protocol has a limited number of network address, with very small data packets. But this also helps limit network traffic and ensure responsiveness. The length of the network cables will limit the maximum speed of the network. The basic features of are listed below. • A single bus cable that delivers data and power. • Up to 64 nodes on the network. • Data packet size of 0-8 bytes. • Lengths of 500m/250m/100m for speeds of 125kbps/250kbps/500kbps respectively. • Devices can be added/removed while power is on. • Based on the CANbus (Controller Area Network) protocol for OSI levels 1 and 2. • Addressing includes peer-to-peer, multicast, master/slave, polling or change of state. An example of a Devicenet network is shown in Figure 22.16. The dark black lines are the network cable. Terminators are required at the ends of the network cable to reduce electrical noise. In this case the PC would probably be running some sort of software based PLC program. The computer would have a card that can communicate with Devicenet devices. The ’FlexIO rack’ is a miniature rack that can hold various types of input and output modules. Power taps (or tees) split the signal to small side branches. In this case one of the taps connects a power supply, to provide the 24Vdc supply to the network. Another two taps are used to connect a ’smart sensor’ and another ’FlexIO rack’. The ’Smart sensor’ uses power from the network, and contains enough logic so that it is one node on the network. The network uses ’thin trunk line’ and ’thick trunk line’ which may limit network performance.
  • 242. page 242 thin thin trunk tap trunk thick trunk line power tap line line terminator terminator drop line FlexIO rack PC tap drop line Smart FlexIO power sensor rack supply Figure 22.16 - A Devicenet Network The network cable is important for delivering power and data. Figure 22.17 shows a basic cable with two wires for data and two wires for the power. The cable is also shielded to reduce the effects of electrical noise. The two basic types are thick and thin trunk line. The cables may come with a variety of connections to devices. • bare wires • unsealed screw connector • sealed mini connector • sealed micro connector • vampire taps power (24Vdc) data drain/shield Thick trunk - carries up to 8A for power up to 500m Thin trunk - up to 3A for power up to 100m Figure 22.17 - Shielded Network Cable
  • 243. page 243 Some of the design issues for this network include; • Power supplies are directly connected to the network power lines. • Length to speed is 156m/78m/39m to 125Kbps/250Kbps/500Kbps respectively. • A single drop is limited to 6m. • Each node on the network will have its own address between 0 and 63. If a PLC-5 was to be connected to Devicenet a scanner card would need to be placed in the rack. The ladder logic in Figure 22.18 would communicate with the sensors through a scanner card in slot 3. The read and write blocks would read and write the Devicenet input values to inte- ger memory from ’N7:40’ to ’N7:59’. The outputs would be copied from the integer memory between ’N7:20’ to ’N7:39’. The ladder logic to process inputs and outputs would need to exam- ine and set bits in integer memory.
  • 244. page 244 MG9:0/EN MSG (EN) Send/Rec Message (DN) Control Block MG9:0 (ER) MG9:1/EN MSG (EN) Send/Rec Message (DN) Control Block MG9:1 (ER) MG9:0 MG9:1 Read/Write Write Read/Write Read Data Table N7:20 Data Table N7:40 Size 20 Size 20 Local/Remote Remote Local/Remote Remote Remote Station ?? Remote Station ?? Link ID ?? Link ID ?? Remote Link type ?? Remote Link type ?? Local Node Addr. N/A Local Node Addr. N/A Processor Type ???? Processor Type ???? Dest. Addr. ???? Dest. Addr. ???? Note: Get exact settings for these parametersXXXXXXXXXXXXXXXXX Figure 22.18 - Communicating with Devicenet Inputs and Outputs On an Allen Bradley Softlogix PLC the I/O will be copied into blocks of integer memory. These blocks are selected by the user in setup software. The ladder logic would then using integer memory for inputs and outputs, as shown in Figure 22.19. Here the inputs are copied into N9 inte- ger memory, and the outputs are set by copying the N10 block of memory back to the outputs.
  • 245. page 245 N9:0 N10:23 Figure 22.19 - Devicenet Inputs and Outputs in Software Based PLCs 8.1.2 CANbus The CANbus (Controller Area Network bus) standard is part of the Devicenet standard. Inte- grated circuits are now sold by many of the major vendors (Motorola, Intel, etc.) that support some, or all, of the standard on a single chip. This section will discuss many of the technical details of the standard. CANbus covers the first two layers of the OSI model. The network has a bus topology and uses bit wise resolution for collisions on the network (i.e., the lower the network identifier, the higher the priority for sending). A data frame is shown in Figure 22.20. The frame is like a long serial byte, like that seen in Figure 22.3. The frame begins with a start bit. This is then followed with a message identifier. For Devicenet this is a 5 bit address code (for up to 64 nodes) and a 6 bit command code. The ’ready to receive it’ bit will be set by the receiving machine. (Note: both the sender and listener share the same wire.) If the receiving machine does not set this bit the remainder of the message is aborted, and the message is resent later. While sending the first few bits, the sender monitors the bits to ensure that the bits send are heard the same way. If the bits do not agree, then another node on the network has tried to write a message at the same time - there was a collision. The two devices then wait a period of time, based on their identifier and then start to resend. The second node will then detect the message, and wait until it is done. The next 6 bits indicate the number of bytes to be sent, from 0 to 8. This is followed by two sets of bits for CRC (Cyclic Redundancy Check) error checking, this is a checksum of earlier bits. The next bit ’ACK slot’ is set by the receiving node if the data was received correctly. If there was a CRC error this bit would not be set, and the message would be resent. The remaining bits end the transmission.
  • 246. page 246 The ’end of frame’ bits are equivalent to stop bits. There must be a delay of at least 3 bits before the next message begins. 1 bit start of frame 11 bits identifier arbitration field 1 bit ready to receive it 6 bits control field - contains number of data bytes 0-8 bytes data - the information to be passed 15 bits CRC sequence 1 bit CRC delimiter 1 bit ACK slot - other listeners turn this on to indicate frame received 1 bit ACK delimiter 7 bits end of frame >= 3 bits delay before next frame Figure 22.20 - A CANbus Data Frame Because of the bitwise arbitration, the address with the lowest identifier will get the highest priority, and be able to send messages faster when there is a conflict. As a result the controller is normally put at address ’0’. And, lower priority devices are put near the end of the address range. 8.1.3 Controlnet Controlnet is complimentary to Devicenet. It is also supported by a consortium of companies, (http://www.controlnet.org) and it conducts some projects in cooperation with the Devicenet
  • 247. page 247 group. The standard is designed for communication between controllers, and permits more com- plex messages than Devicenet. It is not suitable for communication with individual sensors and actuators, or with devices off the factory floor. Controlnet is more complicated method than Devicenet. Some of the key features of this net- work include, • Multiple controllers and I/O on one network • Deterministic • Data rates up to 5Mbps • Multiple topologies (bus, star, tree) • Multiple media (coax, fiber, etc.) • Up to 99 nodes with addresses, up to 48 without a repeater • Data packets up to 510 bytes • Unlimited I/O points • Maximum length examples 1000m with coax at 5Mbps - 2 nodes 250m with coax at 5Mbps - 48 nodes 5000m with coax at 5Mbps with repeaters 3000m with fiber at 5Mbps 30Km with fiber at 5Mbps and repeaters • 5 repeaters in series, 48 segments in parallel • Devices powered individually (no network power) • Devices can be removed while network is active This control network is unique because it supports a real-time messaging scheme called Con- current Time Domain Multiple Access (CTDMA). The network has a scheduled (high priority) and unscheduled (low priority) update. When collisions are detected, the system will wait a time of at least 2ms, for unscheduled messages. But, scheduled messages will be passed sooner, during a special time window. 8.1.4 Profibus Another control network that is popular in europe, but also available world wide. It is also promoted by a consortium of companies (http://www.profibus.com). General features include; • A token passing between up to three masters
  • 248. page 248 • Maximum of 126 nodes • Straight bus topology • Length from 9600m/9.6Kbps with 7 repeaters to 500m/12Mbps with 4 repeaters • With fiber optic cable lengths can be over 80Km • 2 data lines and shield • Power needed at each station • Uses RS-485, ethernet, fiber optics, etc. • 2048 bits of I/O per network frame 8.2 PROPRIETARY NETWORKS 8.2.0.1 - Data Highway Allen-Bradley has developed the Data Highway II (DH+) network for passing data and pro- grams between PLCs and to computers. This bus network allows up to 64 PLCs to be connected with a single twisted pair in a shielded cable. Token passing is used to control traffic on the net- work. Computers can also be connected to the DH+ network, with a network card to download programs and monitor the PLC. The network will support data rates of 57.6Kbps and 230 Kbps The DH+ basic data frame is shown in Figure 22.22. The frame is byte oriented. The first byte is the ’DLE’ or delimiter byte, which is always $10. When this byte is received the PLC will interpret the next byte as a command. The ’SOH’ identifies the message as a DH+ message. The next byte indicates the destination station - each node one the network must have a unique num- ber. This is followed by the ’DLE’ and ’STX’ bytes that identify the start of the data. The data fol- lows, and its’ length is determined by the command type - this will be discussed later. This is then followed by a ’DLE’ and ’ETX’ pair that mark the end of the message. The last byte transmitted is a checksum to determine the correctness of the message.
  • 249. page 249 1 byte DLE = 10H header fields 1 byte SOH = 01H 1 byte STN - the destination number 1 byte DLE = 10H start fields 1 byte STX = 02H data 1 byte DLE = 10H termination fields 1 byte ETX = 03H 1 byte block check - a 2s compliment checksum of the DATA and STN values Figure 22.22 - The Basic DH+ Data Frame The general structure for the data is shown in Figure 22.23. This packet will change for dif- ferent commands. The first two bytes indicate the destination, ’DST’, and source, ’SRC’, for the message. The next byte is the command, ’CMD’, which will determine the action to be taken. Sometimes, the function, ’FNC’, will be needed to modify the command. The transaction, ’TNS’, field is a unique message identifier. The two address, ’ADDR’, bytes identify a target memory location. The ’DATA’ fields contain the information to be passed. Finally, the ’SIZE’ of the data field is transmitted.
  • 250. page 250 1 byte DST - destination node for the message 1 byte SRC - the node that sent the message 1 byte CMD - network command - sometime FNC is required 1 byte STS - message send/receive status 2 byte TNS - transaction field (a unique message ID) optional 1 byte FNC may be required with some CMD values optional 2 byte ADDR - a memory location optional variable DATA - a variable length set of data optional 1 byte SIZE - size of a data field Figure 22.23 - Data Filed Values Examples of commands are shown in Figure 22.24. These focus on moving memory and sta- tus information between the PLC, and remote programming software, and other PLCs. More details can be found in the Allen-Bradley DH+ manuals.
  • 251. page 251 CMD FNC Description 00 Protected write 01 Unprotected read 02 Protected bit write 05 Unprotected bit write 06 00 Echo 06 01 Read diagnostic counters 06 02 Set variables 06 03 Diagnostic status 06 04 Set timeout 06 05 Set NAKs 06 06 Set ENQs 06 07 Read diagnostic counters 08 Unprotected write 0F 00 Word range write 0F 01 Word range read 0F 02 Bit write 0F 11 Get edit resource 0F 17 Read bytes physical 0F 18 Write bits physical 0F 26 Read-modify-write 0F 29 Read section size 0F 3A Set CPU mode 0F 41 Disable forces 0F 50 Download all request 0F 52 Download completed 0F 53 Upload all request 0F 55 Upload completed 0F 57 Initialize memory 0F 5E Modify PLC-2 compatibility file 0F 67 typed write 0F 68 typed read 0F A2 Protected logical read - 3 address fields 0F AA Protected logical write - 3 addr. fields Figure 22.24 - DH+ Commands for a PLC-5 (all numbers are hexadecimal) The ladder logic in Figure 22.25 can be used to copy data from the memory of one PLC to another. Unlike other networking schemes, there are no ’login’ procedures. In this example the first MSG instruction will write the message from the local memory ’N7:20’ - ’N7:39’ to the
  • 252. page 252 remote PLC-5 (node 2) into its memory from ’N7:40’ to ’N7:59’. The second ’MSG’ instruction will copy the memory from the remote PLC-5 memory ’N7:40’ to ’N7:59’ to the remote PLC-5 memory ’N7:20’ to ’N7:39’. This transfer will require many scans of ladder logic, so the ’EN’ bits will prevent a read or write instruction from restarting until the previous ’MSG’ instruction is complete. MG9:0/EN MSG (EN) Send/Rec Message (DN) Control Block MG9:0 (ER) MG9:1/EN MSG (EN) Send/Rec Message (DN) Control Block MG9:1 (ER) MG9:0 MG9:1 Read/Write Write Read/Write Read Data Table N7:20 Data Table N7:40 Size 20 Size 20 Local/Remote Local Local/Remote Local Remote Station N/A Remote Station N/A Link ID N/A Link ID N/A Remote Link type N/A Remote Link type N/A Local Node Addr. 2 Local Node Addr. 2 Processor Type PLC-5 Processor Type PLC-5 Dest. Addr. N7:40 Dest. Addr. N7:20 Figure 22.25 - Ladder Logic for Reading and Writing to PLC Memory The DH+ data packets can be transmitted over other data links, including ethernet and RS- 232. 8.3 PRACTICE PROBLEMS 1. Explain why networks are important in manufacturing controls.
  • 253. page 253 ans. These networks allow us to pass data between devices so that individually controlled systems can be integrated into a more complex manufacturing facility. An example might be a serial connection to a PLC so that SPC data can be collected as product is made, or recipes down- loaded as they are needed. 2. We will use a PLC to control a cereal box filling machine. For single runs the quantities of cereal types are controlled using timers. There are 6 different timers that control flow, and these result in different ratios of product. The values for the timer presets will be downloaded from another PLC using the DH+ network. Write the ladder logic for the PLC.
  • 254. page 254 ans. Read Message MG9:0/EN on Remote station #1 MSG Remote Addr. N7:0 MG9:0 Length 6 Destination N7:0 MG9:0/DN on FAL DEST. #T4:0.PRE EXPR. #N7:0 start stop on on box present on TON T4:0 TON T4:1 TON T4:2 TON T4:3 TON T4:4 TON T4:5 T4:0/TT fill hearts T4:1/TT fill moons ETC...
  • 255. page 255 3. a) We are developing ladder logic for an oven to be used in a baking facility. A PLC is control- ling the temperature of an oven using an analog voltage output. The oven must be started with a push button and can be stopped at any time with a stop push button. A recipe is used to control the times at each temperature (this is written into the PLC memory by another PLC). When idle, the output voltage should be 0V, and during heating the output voltages, in sequence, are 5V, 7.5V, 9V. The timer preset values, in sequence, are in N7:0, N7:1, N7:2. When the oven is on, a value of 1 should be stored in N7:3, and when the oven is off, a value of 0 should be stored in N7:3. Draw a state diagram and write the ladder logic for this station. b) We are using a PLC as a master controller in a baking facility. It will update recipes in remote PLCs using DH+. The master station is #1, the remote stations are #2 and #3. When an operator pushes one of three buttons, it will change the recipes in two remote PLCs if both of the remote PLCs are idle. While the remote PLCs are running they will change words in their internal memories (N7:3=0 means idle and N7:3=1 means active). The new recipe values will be writ- ten to the remote PLCs using DH+. The table below shows the values for each PLC. Write the ladder logic for the master controller. button A button B button C 13 17 14 PLC #2 690 235 745 45 75 34 76 72 56 345 234 645 PLC #3 987 12 23 345 34 456 764 456 568 87 67 8
  • 256. page 256 (ans. a) start stop T4:2/DN on N7:3/0 MOV on N7:3/0 Source N7:0 Dest T4:0.PRE MOV Source N7:1 Dest T4:1.PRE MOV Source N7:2 Dest T4:2.PRE on TON Timer T4:0 T4:0/DN Delay 0s TON Timer T4:1 T4:1/DN Delay 0s TON Timer T4:2 Delay 0s BT10:0/EN Block Transfer Write Module Type Generic Block Transfer Rack 000 Group 3 Module 0 Control Block BT10:0 Data File N9:0 Length 13 Continuous No T4:0/TT MOV Source 2095 Dest N9:0 T4:1/TT MOV Source 3071 Dest N9:0 T4:2/TT MOV Source 3686 Dest N9:0 on MOV Source 0 Dest N9:0
  • 257. page 257 (ans. b) MG9:0/EN MSG (EN) Send/Rec Message (DN) Control Block MG9:0 (ER) MG9:1/EN MSG (EN) Send/Rec Message (DN) Control Block MG9:1 (ER) MG9:2/EN MSG (EN) Send/Rec Message (DN) Control Block MG9:2 (ER) MG9:3/EN MSG (EN) Send/Rec Message (DN) Control Block MG9:3 (ER) MG9:0 MG9:0 MG9:2 MG9:3 Read/Write Write Read/Write Write Read/Write Read Read/Write Read Data Table N7:40 Data Table N7:43 Data Table N7:3 Data Table N7:3 Size 3 Size 6 Size 1 Size 1 Local/Remote Local Local/Remote Local Local/Remote Local Local/Remote Local Remote N/A Remote N/A Remote N/A Remote N/A Link ID N/A Link ID N/A Link ID N/A Link ID N/A Remote Link N/A Remote Link N/A Remote Link N/A Remote Link N/A Local Node 2 Local Node 3 Local Node 2 Local Node 3 Processor PLC-5 Processor PLC-5 Processor PLC-5 Processor PLC-5 Dest. Addr. N7:0 Dest. Addr. N7:0 Dest. Addr. N7:0 Dest. Addr. N7:1 A N7:0/0 N7:0/1 COP Source N7:10 Dest N7:40 Length 9 B N7:0/0 N7:0/1 COP Source N7:20 Dest N7:40 Length 9 C N7:0/0 N7:0/1 COP Source N7:30 Dest N7:40 Length 9 N7:10 13 690 45 76 345 987 345 764 87 0 N7:20 17 235 75 72 234 12 34 456 67 0 N7:30 14 745 34 56 645 23 456 568 8 0
  • 258. page 258 4. A controls network is to be 1500m long. Suggest three different types of networks that would meet the specifications. (ans. Controlnet, Profibus, Ethernet with multiple subnets) 5 How many data bytes (maximum) could be transferred in one second with DH+? (ans. the maximum transfer rate is 230 Kbps, with 11 bits per byte (1start+8data+2+stop) for 20909 bytes per second. Each memory write packet contains 17 overhead bytes, and as many as 2000 data bytes. Therefore as many as 20909*2000/(2000+17) = 20732 bytes could be trans- mitted per second. Note that this is ideal, the actual maximum rates would be actually be a frac- tion of this value.) 8.4 LABORATORY - DEVICENET Purpose: To be introduced to a software based PLC, interfacing with devices using devicenet and practical sensors. Overview: In previous coursework you have used PLC-5 processors. The software based PLC is very similar. The most noticeable difference is that Inputs and Outputs will appear in integer memory instead of the normal I:1 and O:0 blocks of memory. The program to be developed for this laboratory should...... Pre-Lab: 1. Develop the ladder logic for the system described in the Overview. In-Lab: 1. Follow the Softplc and Devicenet tutorial. 2. Implement a control system to ..... Submit (individually): 1. Program listings and prelab design work. 8.5 TUTORIAL - SOFTPLC AND DEVICENET Objective: By the end of this tutorial you should be able to do the major steps required to connect a devicenet network and program a SoftPLC to control it. It will end with the connection and
  • 259. page 259 programming of a Panelview 550 display. 1. Gather the components below. These will be used to build the Devicenet for the rest of the tuto- rial. When finding components the labels on the back are a good source of information. The information on the front of the devices is not normally useful. - A PC with a PCIDS devicenet scanner card and software installed - Devicenet Flex I/O rack on a din rail including, 24VDC adapter 1794-ADN Relay output 1794-DWB 24Vdc source input 1794-IV16 24Vdc sink input 1794-IB16 - a Sola 24Vdc power supply with a power cable attached - a Sola 24Vdc power supply with a power tap (1485T-P2T5-T5) attached - a devicenet capable photoswitch (42GNP-9000-QD) - 2 normal photoswitches (42GRP-9000-QD) - 4 Devicenet cable mini connector to wires (1485R-P3M5-C) - a light stack with red/amber/green - a central terminal Devicebox (1485P-P4T5-T5) - 3 network taps - a stop pushbutton - 2 terminator resistors - thick wire trunk line - wires for connection - Panelview 550 touch screen display 2. Wire up the network below (note: we will add more of the components later).
  • 260. page 260 PC terminator 1485R-P3R5-C PCIDS tee CARD terminator 1485R-P3R5-C tee 24V sola thick tee power supply line photosensor thick line flex I/O rack 24Vdc sola power supply 3. Start the “RS Networx for Devicenet” software. When it starts it might show a diagram of pre- viously programmed devices on the network. We need to get a current list of devices on the network. To do this pick “Selection” “Online”. This will scan the devices on the network and get their current configurations. After this the diagram on the screen will be current. 4. Next, we want to map the data from each of the Devicenet nodes to a location in the SoftPLC memory. Double click on the PCIDS card on the screen. Click on the “scanlist” tab (you may have to upload parameters). Make sure that all of the devices appear on the scanlist. Use the “Input” and “Output” tabs to map these devices to specific input and output memory. Notice
  • 261. page 261 that this is organized in words (16bits). You will want to make a note of these values, because you will use these when programming the PLC. When done select “Apply” and then “OK”. Exit the program and save the changes. At this point a file has been set up that tells the Soft- PLC what devices are on the Devicenet, and what to do with them. 5. Move the pointer to the bottom right of the screen. You will see a black dot near the time. Click twice on this (Note: when the SoftPLC is running this will be green). A screen entitled “Soft- logix 5 Status Monitor” will popup. Click on “Config” and then “Start SoftLogix 5”. The Soft- PLC should now be running. Click “OK” to dismiss the screens. 6. Start the “RS-Logix SL5 English” software (Note the ‘SL’). Start a “New Project”, the pro- gramming window should appear. You should now be ready to tell the SoftPLC that you will be using devicenet. Double click on “Processor Status” and on the pop-up window scroll across and select the “Dnet” tab. For the output file enter “9”, for the input file enter “10”, for the diagnostic file enter “11”. Dismiss the window and look at the memory locations under data files, there should now be I/O words there under N9, N10, N11. The input and output memory set in the RSNetworx program will be put in this memory. 7. Write a simple ladder logic program to read to smart optical sensor and output a value to the relay card. If you need help finding which inputs are which, try running a simple or empty pro- gram, and watching the memory. 8. Connect the other photooptical sensors and the light stack to the Flex I/O rack and write a more sophistocated program. 9. Connect the PanelView display, and reconfigure the devicenet network. Use the Panel Builder software to create a visual interface, and then download it to the touchscreen. Write ladder logic that uses it for input and output.
  • 262. page 262 9. INDUSTRIAL ROBOTICS 9.1 INTRODUCTION Robots are devices that are programmed to move parts, or to do work with a tool. For exam- ple, robots are often used to stack boxes on a pallet, or to weld steel plates together. This chapter will introduce the basic concepts behind robotics, and introduce a commercial robot. Following chapters will introduce more robots, and discuss applications. 9.1.1 Basic Terms There is a set of basic terminology and concepts common to all robots. These terms follow with brief explanations of each. Links and Joints - Links are the solid structural members of a robot, and joints are the movable couplings between them. Degree of Freedom (dof) - Each joint on the robot introduces a degree of freedom. Each dof can be a slider, rotary, or other type of actuator. Robots typically have 5 or 6 degrees of freedom. 3 of the degrees of freedom allow positioning in 3D space, while the other 2or 3 are used for orientation of the end effector. 6 degrees of free- dom are enough to allow the robot to reach all positions and orientations in 3D space. 5 dof requires a restriction to 2D space, or else it limits orientations. 5 dof robots are commonly used for handling tools such as arc welders. Orientation Axes - Basically, if the tool is held at a fixed position, the orientation deter- mines which direction it can be pointed in. Roll, pitch and yaw are the common orientation axes used. Looking at the figure below it will be obvious that the tool can be positioned at any orientation in space. (imagine sitting in a plane. If the plane rolls you will turn upside down. The pitch changes for takeoff and landing and when flying in a crosswind the plane will yaw.)
  • 263. page 263 yaw roll yaw top forward front pitch pitch roll right Figure 7.1 - Orientations Position Axes - The tool, regardless of orientation, can be moved to a number of positions in space. Various robot geometries are suited to different work geometries. (more later) Tool Centre Point (TCP) - The tool centre point is located either on the robot, or the tool. Typically the TCP is used when referring to the robots position, as well as the focal point of the tool. (e.g. the TCP could be at the tip of a welding torch) The TCP can be specified in cartesian, cylindrical, spherical, etc. coordinates depending on the robot. As tools are changed we will often reprogram the robot for the TCP. TCP (Tool Center Point) Figure 7.2 - The Tool Center Point (TCP) Work envelope/Workspace - The robot tends to have a fixed, and limited geometry. The work envelope is the boundary of positions in space that the robot can reach. For a cartesian robot (like an overhead crane) the workspace might be a square, for more sophisticated robots the workspace might be a shape that looks like a ‘clump of intersecting bubbles’.
  • 264. page 264 Workspace Speed - refers either to the maximum velocity that is achievable by the TCP, or by individ- ual joints. This number is not accurate in most robots, and will vary over the work- space as the geometry of the robot changes (and hence the dynamic effects). The number will often reflect the maximum safest speed possible. Some robots allow the maximum rated speed (100%) to be passed, but it should be done with great care. Payload - The payload indicates the maximum mass the robot can lift before either failure of the robots, or dramatic loss of accuracy. It is possible to exceed the maximum payload, and still have the robot operate, but this is not advised. When the robot is accelerating fast, the payload should be less than the maximum mass. This is affected by the ability to firmly grip the part, as well as the robot structure, and the actuators. The end of arm tooling should be considered part of the payload. Repeatability - The robot mechanism will have some natural variance in it. This means that when the robot is repeatedly instructed to return to the same point, it will not always stop at the same position. Repeatability is considered to be +/-3 times the
  • 265. page 265 standard deviation of the position, or where 99.5% of all repeatability measure- ments fall. This figure will vary over the workspace, especially near the bound- aries of the workspace, but manufacturers will give a single value in specifications. Accuracy - This is determined by the resolution of the workspace. If the robot is com- manded to travel to a point in space, it will often be off by some amount, the max- imum distance should be considered the accuracy. This is an effect of a control system that is not necessarily continuous. Settling Time - During a movement, the robot moves fast, but as the robot approaches the final position is slows down, and slowly approaches. The settling time is the time required for the robot to be within a given distance from the final position. Control Resolution - This is the smallest change that can be measured by the feedback sensors, or caused by the actuators, whichever is larger. If a rotary joint has an encoder that measures every 0.01 degree of rotation, and a direct drive servo motor is used to drive the joint, with a resolution of 0.5 degrees, then the control resolu- tion is about 0.5 degrees (the worst case can be 0.5+0.01). Coordinates - The robot can move, therefore it is necessary to define positions. Note that coordinates are a combination of both the position of the origin and orientation of the axes. y P = ( x, y, z ) y x z World Coordinates - this is the position of the tool measured relative to the base, the orientation of the tool is assumed to x be the same as the base. z Figure 7.3 - World Coordinates - To Locate the TCP
  • 266. page 266 y P = ( x, y, z ) y z x Tool Coordinates - here the tool orientation is considered, and the coordinates are measured against a frame attached to x the tool z Figure 7.4 - Tool Coordinates - Describing Positions Relative to the Tool θ3 θ2 θ1 Joint Coordinates - the position of each joint (all angles here) are used to describe the position of the robot. Figure 7.5 - Joint Coordinates - the Positions of the Actuators 9.1.2 Positioning Concepts 9.1.2.1 - Accuracy and Repeatability • The accuracy and repeatability are functions of, - resolution- the use of digital systems, and other factors mean that only a limited number of positions are available. Thus user input coordinates are often adjusted to the nearest discrete position. - kinematic modeling error - the kinematic model of the robot does not exactly match the
  • 267. page 267 robot. As a result the calculations of required joint angles contain a small error. - calibration errors - The position determined during calibration may be off slightly, result- ing in an error in calculated position. - random errors - problems arise as the robot operates. For example, friction, structural bending, thermal expansion, backlash/slip in transmissions, etc. can cause varia- tions in position. • Accuracy, • “How close does the robot get to the desired point” • This measures the distance between the specified position, and the actual position of the robot end effector. • Accuracy is more important when performing off-line programming, because absolute coordinates are used. • Repeatability • “How close will the robot be to the same position as the same move made before” • A measure of the error or variability when repeatedly reaching for a single position. • This is the result of random errors only • repeatability is often smaller than accuracy. • Resolution is based on a limited number of points that the robot can be commanded to reach for, these are shown here as black dots. These points are typically separated by a millimeter or less, depending on the type of robot. This is further complicated by the fact that the user might ask for a position such as 456.4mm, and the system can only move to the nearest millimeter, 456mm, this is the accuracy error of 0.4mm. R
  • 268. page 268 • In a perfect mechanical situation the accuracy and control resolution would be determined as below, The manipulator may stop at a number of discrete positions One axis on a surface accuracy accuracy control resolution specified locations In an ideal situation the manipulator would stop at the specified locations. Here the accuracy would be half of the control resolution. The control resolution would be the smallest divisions that the workspace could be divided into (often by the resolution of digital components. • Kinematic and calibration errors basically shift the points in the workspace resulting in an error ‘e’. Typically vendor specifications assume that calibration and modeling errors are zero.
  • 269. page 269 error ‘e’ Should be here • Random errors will prevent the robot from returning to the exact same location each time, and this can be shown with a probability distribution about each point. System specified position ‘S’ User requested position ‘U’ accuracy ‘a/2’ repeatability = 6s = ±3s control resolution a = ----------------------------------------- - e max = a + modeling error + 3s 2 If the distribution is normal, the limits for repeatability are typically chosen as ±3 stan- dard deviations ‘s’.
  • 270. page 270 We can look at distributions for each specified position for the robot end effector in rela- tionship to other point distributions. This will give us overall accuracy, and spatial res- olution. controlled points ‘S’ requested point ‘U’ worst case for a point worst case spatial resolution • The fundamental calculations are, a A S U σ repeatability = ±r = 3s accuracy = ( S – U ) + e 9.1.2.2 - Control Resolution
  • 271. page 271 • Spatial resolution is the smallest increment of movement into which the robot can divide its work volume. Spatial resolution depends on two factors: the systems control resolution and the robots mechanical inaccuracies. It is easiest to conceptualize these factors in terms of a robot with 1 degree of freedom. • Control resolution - is determined by the robot’s position control system and its feedback measurement system. It is the controllers ability to divide the total range of movement for the par- ticular joint into individual increments that can be addressed in the controller. The increments are sometimes referred to as “addressable parts”. The ability to divide the joint range into increments depends on the bit storage capacity in the control memory. The number of separate, identifiable increments (addressable points) for a particular axis is, n # of increments = 2 where n is the number of control bits • example - A robot with 8 bit control resolution can divide a motion range into 256 discrete positions. The control resolution is about (range of motion)/256. The increments are almost always uniform and equal. • If mechanical inaccuracies are negligible, Accuracy = Control Resolution/2 9.1.2.3 - Payload • The payload is always specified as a maximum value, this can be before failure, or more commonly, before serious performance loss. • Static considerations, - gravity effects cause downward deflection of the arm and support systems - drive gears and belts often have noticeable amounts of slack (backlash) that cause posi- tioning errors - joint play (windup) - when long rotary members are used in a drive system and twist under load
  • 272. page 272 - thermal effects - temperature changes lead to dimensional changes in the manipulator • Dynamic considerations, - acceleration effects - inertial forces can lead to deflection in structural members. These are normally only problems when a robot is moving very fast, or when a continu- ous path following is essential. (But, of course, during the design of a robot these factors must be carefully examined) • e.g. Consider a steel cantilever beam of length L, width B and height H, fixed at one end and with a force P, applied at the free end due to the gravitational force on the load. P L B H τ δ = deflection of beamtip caused by point load 3 PL 6 δ = --------- E = Youngs modulus = 30 ×10 (psi) 3EI 3 I = BH for rectangular beam ---------- 12 **Note: this deflection does not include the mass of the beam, as might be important in many cases.
  • 273. page 273 1a. Gravity Effects (payload) Say, P = 100(lbs) L = 60(in) B = 4 (in) H = 6 (in) ∴δ payload = 0.0033 (in) If accuracy = 0.01 then the gravity effects are less If accuracy = 0.001 then the gravity effects are too large Aside: Note that the length has a length cubed effect on the tip deflection, so if a second similar link was added to the robot, the deflection would increase 8 times, a third link would increase deflection by 81 times. 1b. Gravity effects (robot link mass) 4 ωL - ω = --------------- = 0.91  lb weight δ = --------- -  ---- - 8EI length in ∴δ link mass = 0.00066 (in) δ total = 0.0033 + 0.00066 = 0.00396 Aside: If the deflection were too large, then we could use lighter link materials, or larger annular (round tubular) members. Annular members allow actuators, and instrumentation inside.
  • 274. page 274 2. Drive Gear and Belt Drive Play assume we are using gears, or timing belts, that do not mesh perfectly The gears do not mesh perfectly, and the resulting space is ‘D’ The input drive has to move a distance ‘D’ before the output engages, and motion begins (this is often after a direction change). This error is multiplied by the gear ratio between input gears and the final position of the robot arm. Similar errors occur for chains, belts, and other types of errors. Aside: Some errors can be taken out of the system by using very precise gearing, or anti-backlash gearing that uses springs to hold the input gear against the drive gear. It is also possible to compensate for this in software. With good gearing, Backlash can be held to less than 0.010 (in), but special design is required when accuracies of 0.001 (in) are desired. 3. Joint Flexibility - ( the angular twist of the joints, rotary drives, shafts, under the load) 32LT- θ = -------------- 4 θ = twist of the cantilevered link in radian s πD G L = distance of the applied moment from the fixed end T = the applied moment G = the polar moment of inertia D = the effective diameter of application of the moment
  • 275. page 275 4. Thermal effects δ thermal = α∆TL α = coefficient of linear thermal expansion If for the previous values we consider, α = 6.5 ×10  -------- ( for steel ) – 6 in -  inF ∆T = T 1 (working temp.) – T 0 (calib. temp.) = 80F – 60F = 20F δ thermal = 0.0078 (in) Major errors in accuracy can result from thermal expansion/contraction 5. Acceleration Effects The robot arm, and payload are exposed to forces generated by accelera- tion.This applies mainly to the payload mass, but also to the link mass. These forces cause bending moments that must be added to the masses con- sidered before. F payload = M payload r payload ω' F link = M link r centroid ω'(approximate) The robot arm also experiences radial forces due to centripetal forces. These lead to elongation of the arm, but are often negligible. 2 Fpayload = M payload r payload ω And, if the centre of rotation moves, we must also consider coriolis forces, these could potentially result in a ‘whip’ effect. This does occur in multi- link robots. 3 F payload L δ = ----------------------- - 3EI 6. Combine cartesian components of deflection into one vector ( ∑ δ xi ) + ( ∑ δ yi ) + ( ∑ δ zi ) 2 2 2 δ accuracy = *** Remember to compare to control resolution
  • 276. page 276 9.2 ROBOT TYPES 9.2.1 Basic Robotic Systems • The basic components of a robot are, Structure - the mechanical structure (links, base, etc). This requires a great deal of mass to provide enough structural rigidity to ensure minimum accuracy under varied pay- loads. Actuators - The motors, cylinders, etc. that drive the robot joints. This might also include mechanisms for a transmission, locking, etc. Control Computer - This computer interfaces with the user, and in turn controls the robot joints. End of Arm Tooling (EOAT) - The tooling is provided be the user, and is designed for spe- cific tasks. Teach pendant - One popular method for programming the robot. This is a small hand held device that can direct motion of the robot, record points in motion sequences, and begin replay of sequences. More advance pendants include more functionality. Teach pendant and/or dumb terminal Control computer RS-232 Actuator End of Arm control power supply Mechanical Tooling computer (hydraulic, etc) arm (EOAT) PLC/NC machine memory (battery Sensors or eeprom)
  • 277. page 277 9.2.2 Types of Robots • Robots come in a wide variety of shapes, and configurations. • The major classes of robots include, arms - fixed in place, but can reach and manipulate parts and tools mobile - these robots are free to move 9.2.2.1 - Robotic Arms • Typical joint types are, Revolute - rotary joints often driven by electric motors and chain/belt/gear transmissions, or by hydraulic cylinders and levers. Prismatic - slider joints in which the link is supported on a linear slider bearing, and lin- early actuated by ball screws and motors or cylinders. • Basic configurations are, Cartesian/Rectilinear/Gantry - Positioning is done in the workspace with prismatic joints. This configuration is well used when a large workspace must be covered, or when consistent accuracy is expected from the robot. Cylindrical - The robot has a revolute motion about a base, a prismatic joint for height, and a prismatic joint for radius. This robot is well suited to round workspaces. Spherical - Two revolute joints and one prismatic joint allow the robot to point in many directions, and then reach out some radial distance. Articulated/Jointed Spherical/Revolute - The robot uses 3 revolute joints to position the robot. Generally the work volume is spherical. This robot most resembles the human arm, with a waist, shoulder, elbow, wrist. Scara (Selective Compliance Arm for Robotic Assembly) - This robot conforms to cylin- drical coordinates, but the radius and rotation is obtained by a two planar links with revolute joints.
  • 278. page 278 CARTESIAN/RECTILINEAR/GANTRY SPHERICAL
  • 279. page 279 CYLINDRICAL ARTICULATED/REVOLUTE/ JOINTED SPHERICAL
  • 280. page 280 SCARA 9.2.2.2 - Autonomous/Mobile Robots • The robots discussed up to this point have concerned ‘arms’ that are fixed to the floor. Another important class of robots are autonomous, and free to move about the workspace. • Typical applications are, - nuclear accident cleanup - planetary exploration - Automatic Guided Vehicles in factories - mail delivery 9.2.2.2.1 - Automatic Guided Vehicles (AGVs) • These are typically wheeled robots that carry payloads through a factory. • They navigate using, - wires embedded in floors
  • 281. page 281 - light sources or reflectors - colored tapes on the floor 9.3 MECHANISMS • The mechanical structure of the robot has a major influence over performance. Typically closed kinematic chains give higher strengths, but lower speeds and flexibility. • The linkage shown below uses two cylinders (hydraulic or pneumatic) to give radial posi- tioning
  • 282. page 282 This robot has a closed linkage, and any movements of the bottom cyl- inder will swing the top arm. The top arm also has a linear slider that moves in and out. This arrangement reduces 9.4 ACTUATORS • There are a large number of power sources that may be used for robots. • Typical actuators include,
  • 283. page 283 • Pneumatics - simple, low maintenance - light, least expensive - low payload - easy to find fault - hard to do continuous control • Hydraulic - large payload - high power/weight ratio - leakage - noisy • Electrical - feedback compatible - computer compatible - EOAT compatible - quiet, clean - low power/weight ratio • Actuators lead to various payload capabilities as shown in the following list. Robot Power Payload (k.g.) Max. Vel. (m/s) Asea IRB/6 Electric 6 0.75 IBM 7535 Electric 6 1.45 Cincinatti T3/726 D.C. Motor 6.4 1.0 Devilbiss Hydraulic 6.8 1.83 Yaskawa L/10 Electric 10 1.1 Unimation 550/60 Electric 10 1.0 Hitachi Electric 10 0.99 Unimation 5000 D.C. Motor 14 0.53 VSI Charley #6 Electric 30 1.8 GMF M/1A Electric 46.7 0.99 Cincinatti T3/776 D.C. Motor 68 0.635 Cincinatti T3/586 Hydraulic 100 0.89 9.5 A COMMERCIAL ROBOT
  • 284. page 284 • Some specifications for commercial robots are given below 9.5.1 Mitsubishi RV-M1 Manipulator • In general Degrees of freedom 5 Maximum payload 1kg (2.2 lb) Repeatability (based on constant temp., load, speed) +/- 0.3mm Weight 19kg (42 lb) Operating Temperature 5C to 40C Humidity (based on constant temp. load, speed) 10% to 85% Power Requirements 120/220/230/240 VAC Other 50-70 psig air • waist motion revolute Range 300 degrees Resolution ?? deg. Speed max. speed 120 deg/sec max. torque ?? in.lbs • shoulder motion revolute Range 130 degrees Resolution ?? deg. Speed max. speed 72 deg/sec max. torque ?? in.lbs • elbow motion revolute Range 110 degrees Resolution ?? deg. Speed max. speed 109 deg/sec max. torque ?? in.lbs
  • 285. page 285 • wrist pitch motion revolute Range +/-90 degrees Resolution ?? deg. Speed max. speed 100 deg/sec max. torque ?? in.lbs • wrist roll motion revolute Range +/-180 degrees Resolution ?? deg. Speed max. speed 163 deg/sec max. torque ?? in.lbs • The workspace is pictured below, 782mm 57mm 482mm
  • 286. page 286 9.5.2 Movemaster Programs • All comments follow a semi-colon at any position on a line • Statements are ended with a colon, and as long as colons are used, more than one statement can be used on a line. • Line numbering is required. • Dimensions are given in millimeters in the programs. • A sample program is given below with comments for explanation, 10 NT 20 SP 7 ; set speed 30 MO 10, C ;move to position 10 with the hand closed 40 MO 9, O ;move to position 9 with the hand opened 50 TI 40 ;stop for 4 seconds 60 GT 30 ;goto line 30 9.5.2.0.1 - Language Examples • The example below shows how points are defined and used. Please be aware that point loca- tion values are not normally defined in a program. Normally they are programmed by hand, and then when the program is run, it refers to them by number (from 1 to 629)
  • 287. page 287 10 NT ; move to the nest or neutral position, this is almost straight up 20 OG ; move to the reference or zero position 30 TL 20 ; this will set the tool length as 20mm for all cartesian position calculations 40 PD 3, 0, 350, 250, -10, -20 ; define position #3 with joint angles 50 MO 3 ; move the robot to position #3 60 DW 20,20,0; a cartesian move 20 mm in the x and 20 mm in the y directions 70 HE 4; stores the current location as position #4 80 IP; moves the tool to position #5 ; assume that positions 5-10 are already defined 90 MC 6,10 ; continuous motion through positions 6, 7, 8, 9 and then stop at point 10 100 DP; the robot moves to position #9 and stops 110 PD 11, 0, 0, 10, 0, 0 ; define a vector (point #11) with only a z component 120 MA 9, 11, O ; move away from point #9 a distance of vector #11 with gripper open 130 MJ 10, 10, 0, 0, 0 ; move the joints (shoulder and elbow) 10 degrees 140 MP 10, 20, 30, 40, 50 ; move to cartesian position (10,20,30) with roll=40,pitch=50 150 SP 3 ; set the speed low to increase accuracy 160 MS 8, 5 ; straight line motion to point #8 as approximated with 5 knot points 170 MT 8, -40 ; causes the tool to move 40mm straight back from point #8 • The example below shows how we can define and use pallets. The definition of a pallet cov- ers a number of lines to define the pallet size and then the location. We must also define points to indicate where the pallet lies in space. For the example below these points would have to be posi- tion numbers 20 (pallet origin), 21 (origin to end of first column), 22 (origin to end of first row), 23 (origin to diagonal corner of pallet). Note: if using pallet #3 these counters would be 30-33, and point 3 would move. 20 PA 2, 3, 4 ; pallet #2 is defined as having 3 columns and 4 rows 30 SC 21, 1 ; set counter #21 for columns to 1 - each pallet # has dedicated counters 40 SC 22, 2 ; set counter #22 for rows to 2 - each pallet # has dedicated counters 50 PT 2 ; calculates the point for pallet #2 to move to - this will become point #2 60 MO 2 ; move to the new position just calculated 70 SC 22,3 ; move the counter to the next row 80 PT 2 ; calculate a new pallet position 90 MO 2 ; move to the new pallet position
  • 288. page 288 • The example below shows some of the position commands. These positions are normally defined outside the program by moving the robot to desired locations. These positions are not always absolute, and in some cases will act as displacement vectors. 10 PC 1; the clears the position #1 value 20 PD 2, 0, 300, 250, 50, -30 ; define position 2 with cartesian x,y,z and pitch,roll 30 HE 3 ; defines the current robot position as position #3 40 PX 1,2 ; the values of positions #1 and #2 have been swapped 50 PD 4, 0, 20, 0, 0, 0 ; define a new position 60 SF 1, 4 ; this will add #4 to #1 and store it in #1 becoming (0, 320, 250, 50, -30) • The example below shows some of the counter and branching functions. These tend to use a status register approach - for example, a value to be compared will be loaded on one line, the next line will compare it and a branch instruction will occur on the specified condition. For-next loops have been constructed as part of this example.
  • 289. page 289 10 SC 1, 2 ; set counter 1 to a value of 2 20 CP 1 ; load counter #1 into the comparison register 30 EQ 10, 100 ; if the value loaded in the last line is 10, jump to line 100 40 IC 1 ; increment the value of counter #1 50 GT 20 ; goto line 20 to continue the loop 100 DC 1 ; decrement the value of counter #1 110 CP 1 ; load counter #1 into the comparison register 120 LT 1, 100 ; if the value loaded in the last line is larger than 1, jump to line 100 150 GS 200 ; goto the subroutine at line 200 160 ED ; end the program 200 RC 10 ; a for-next loop command 210 RC 5 ; a nested loop 220 NX ; this loop will cycle through the loop declared on line 210 230 NX ; this loop will cycle through the loop declared on line 200 240 RT ; return from the subroutine • The example below shows how to use various gripper and I/O functions. There are eight input bits and 8 output bits available. 10 GC ; close the gripper 20 GO ; open the gripper 30 GP 5, 2, 3 ; this defines the gripping force as 5 (N?) and the holding force as 2, there will be 3/10 of a second delay while the gripper settles 40 GC ; close the gripper using the gripper force 50 OB -7 ; turn off the 7th output bit 60 TB +6, 50 ; if the 6th input bit is on go to line 50 70
  • 290. page 290 9.5.3 Command Summary • A summary of the motion commands is given below, DP (decrement position) move to the previous numbered position DW (draw) HE (here) Moves the tool from point to point HO (Home) Assigns the current position to a position number IP (increment position) Sets the cartesian reference coordinates MA (move approach) Move to the next numbered position MC (move continuous) Move from the current position to a new one MJ (move joint) Execute a continuous motion MO move a joint by a specified angle MP move the tool to a specified location MS Move the hand to a position MT Move in a straight line NT moves tool a specified distance OG return to the global origin PA move to the cartesian reference coordinates PC Define a pallet PD Clear position variables in memory PL Define a position in memory PT Copies a position variable to another PX Calculates a new pallet position SF Exchange two position variable values SP Shift the position variable through space TI Set the robot speed TL Pause for a set amount of time Define the length of the tool • A summary of the program control commands is given below,
  • 291. page 291 CP (compare counter) compare a counter to a value DC (decrement counter) decrement a counter value ED (End) EQ (If equal) End the program GS (Gosub) Jump if conditions equal GT (Goto) Go to a subroutine IC (increment counter) Go to line number LG (If larger) Increase a counter value by one NE (If not equal) Branches if larger NX (Next) branch if not equal RC (Repeat cycle) Next step in an ‘RC’ loop RT (Return) Repeat a loop the specified number of times SC (Set counter) Return from a ‘GS’ SM (If smaller) Set a counter value Branch if the value is smaller • A summary of the IO commands is given below, GC (Gripper close) Close the gripper GF (Gripper flag) Check the gripper status GO (gripper open) Open the gripper GP (gripper pressure) Set the maximum pressure while gripper is closing ID (Input detect) detect the state of an input IN (Input) inputs parallel data using handshaking OB (Output bit) Set an output bit OD (Output direct) Output data to ports OT (Output) Output parallel data using handshaking TB (Test bit) 9.6 PRACTICE PROBLEMS 1. a) What are some basic functions expected on a robot teach pendant b) Describe how a computer can help avoid debug robot programs without a robot being used
  • 292. page 292 2. Write a short program to direct a Mitsubishi RV-M1 robot to pick up and put down a block. Assume the points have already been programmed with the teach pendants. 3. What is the workspace for each of the robots below, and can the robots reach all positions and orientations in the workspace? y y y x x x y y x x 4. Why are 5 axis enough for some robotic applications (eg. welding) and all NC milling opera- tions? 5. You have been asked to write a program for a Mitsubishi RV-M1 robot. The program is to pick up a part at point T1, move to point T2, and then load the part into a pallet. The robot should then return to point A to pick up then next part. This should continue until the pallet is full. T1 = (300, 300, 20) T2 = (-300, 300, 0) Pallet has 6 rows and 7 columns Pallet origin T3 = (300, 0, 0) Pallet end of row T4 = (350, 0, 0) Pallet end of column T5 = (300, 60, 0)
  • 293. page 293 ans. 10 PD 1, 300, 300, 20, 0, 0 20 PD 2, -300, 300, 0, 0, 0 30 PD 30, 300, 0, 0, 0, 0 40 PD 32, 350, 0, 0, 0, 0 50 PD 31, 300, 60, 0, 0, 0 60 PA 3, 7, 6 70 GO 80 SC 31, 0 90 RC 7 100 SC 32, 0 110 RC 6 120 PT 3 130 MO 1 140 CG 150 MO 2 160 MO 3 170 OG 180 IC 32 190 NX 200 IC 31 210 NX 6. Given the scenario below, find the minimum angular resolution of the rotating sensor. - the robot has +/- 0.5” accuracy - the pallet can slide +/- 0.1” on the belt
  • 294. page 294 4.8” belt travels 5” - the driving motor is continuous, and can be run to any angle - the rotating sensor is an incremental encoder, every rotation of some small angle it issues a pulse. But, because of the construction of the device, it has a minimum resolution for angular measurements - the robot must be able to touch the part to pick it up - the tool on the end of the robot is a 1” magnet, and it must be able to touch the part com- pletely to pick it up. - pulley size is 10” dia. 7. Consider a double jointed manipulator as shown below. It is subjected to a loading at the tip of 8 lbs, and works in a heated environment (i.e. T0(room temp.) = 60°F and T1 (working temp.) = 80°F. a) Determine the elongation of the manipulator. b) Determine the total linear deflection of the manipulator. c) Determine the total final accuracy of the manipulator of the tip of the manipulator. 50” 10” cross section is 1” wide by 2” high solid square aluminum stock 8. For the robot pictured below, assume the that a maximum payload of 10kg is specified. The joints are controlled by stepper motors with 200 steps per revolution. Each of the joints slides, and the gearing is such that 1 revolution of the stepper motor will result in 1” of travel. What is the accuracy of the robot?
  • 295. page 295 maximum 10” Assume the joints are solid, and to robot links are made from 1” solid aluminum stock. maximum 15” 9. Consider a double jointed manipulator as shown below. It is subjected to a loading at the tip of 8 lbs, and works in a heated environment (i.e. T0(room temp.) = 60°F and T1 (working temp.) = 80°F. a) Determine the elongation of the manipulator. b) Determine the total linear deflection of the manipulator. c) Determine the total final accuracy of the manipulator of the tip of the manipulator. 50” 10” cross section is 1” wide by 2” high solid square aluminum stock
  • 296. page 296 9.7 LABORATORY - MITSUBISHI RV-M1 ROBOT Purpose: Introduction to robots and programming methods. Overview: This laboratory will involve a basic tutorial on the use of the robot, including safety. The students will have prepared a program for the robot, and tested it ahead of class time using the simulator. During the laboratory the robot will be programmed and tested using the prepared programs. A simple accuracy and repeatability test will be conducted. Pre-Lab (individual): 1. Use Netscape Communicator to access the robots in the laboratory, explore the site. 2. Review the notes on the Mitsubishi RV-M1. After this use the on-line robot to write a simple test program. 3. Write a program to pick up a pop can at one point, and drop it off at a pallet. The pro- gram should repeat six times in a row. In-Lab: 1. Follow the robot tutorial, and then examine the robot manual. 2. Set up the pop can feeders and fixtures. 3. Enter your prelab program and modify it as required. 4. If not already done, connect the sensors on the feeders and fixture to the robot control- ler. 5. Add commands to the program that will examine inputs and take appropriate actions. 6. Put the robot in an extended position (tool far away from the base). Set up a dial gauge indicator so that it touches a solid point on the tool. Set the gauge so that it reads zero. Move the robot away and back to the same position, and read the value from the dial gauge indicator. Repeat this process to get 10 readings. 7. Position the robot so that the tool is in the middle of the workspace. Take similar mea- surements to those in step 3. Submit (individually): 1. A copy of your prelab program. 2. A copy of the programs written during the laboratory. 3. Statistical estimates of repeatability for both positions. 9.8 TUTORIAL - MITSUBISHI RV-M1
  • 297. page 297 1. Turn on the robot power. The switch is located on the back of the unit. 2. Find the teach pendant (Note: It looks somewhat like a calculator). Turn the switch at the top left to ’on’. This will allow the teach pendant to control the robot. 3. Home the robot by pressing <NST><ENT>. The robot will move each joint to one end of it’s range. This is an important step whenever a robot is turned on to find the end of the range of motion. 4. The robot can be moved to new positions using the buttons on the right hand side of the teach pendant. Use the following buttons to move the arm. Notice that the buttons move one joint at a time. <B+><B-> - moves the base right/left <S+><S-> - moves the shoulder up/down <E+><E-> - moves the elbow up/down <P+><P-> - pitches the gripper up/down <R+><R-> - rolls the gripper <O><C> - opens/closes gripper 5. The robot tool (at the end of the arm) can be moved in cartesian coordinates by pressing <XYZ><ENT> and then using the buttons indicated below. <X+><X-> - move right/left <Y+><Y-> - move forward/back <Z+><Z-> - move up/down 6. The robot tool can be moved relative to the tool’s current orientation by pressing <TOOL><ENT>. The buttons below will move the robot to preserve the tool orientation. <Z+><Z-> - advance/retract the tool <P+><P-> - pitch the tool up/down 7. Pressing <PTP><ENT> returns the robot to joint motion mode. While programming robot points an operator will often switch between different robot programming modes. 8. Pressing <ORG><ENT> will move the robot to the origin position where all of the joint angles are equal to zero. 9. At this point we are ready to record positions. This is done by moving the robot to a position and then storing that position in a position memory location. These locations start at zero and go up to 100 (?). Move the robot to three different positions and then record the points using the keystrokes below. (Note: To clear positions you can use <PC><#><ENT> where ’#’ is the posi- tion number.) <PS><1><ENT> - this will record position 1 <PS><2><ENT> - this will record position 2 <PS><3><ENT> - this will record position 3 10. The robot can be moved to points using the keystrokes below. If the last point entered above was ’3’, then it will be the current focus. The commands <INC> and <DEC> will increment and decrement to other positions. <DEC><ENT> - decrement to position 2 <DEC><ENT> - decrement to position 1 <DEC><ENT> - try to decrement to position 0 - this will cause an error <INC><ENT> - increment to position 2 <INC><ENT> - increment to position 3 <MOV><1><ENT> - move to position 1 <MOV><2><ENT> - move to position 2
  • 298. page 298 <MOV><3><ENT> - move to position 3 11. Connect the RS-232 port of the robot controller to a PC with a serial cable. 12. Run a terminal emulator on the PC and give it the following settings 9600 baud 8 data bits no parity 1 stop bit hardware flow control echo typed characters locally 13. Turn the teach pendant off. This will allow you to control the robot from the remote terminal. 14. Type in ’NT’ to home the robot. All commands should be typed in UPPER CASE. If an error occurs a tone will be heard. To clear the error press the ’reset’ button on the front of the robot. 15. Type the following commands and observe their effect. MO 1 MO 2 MO 3 GO GC 16. Type the following program in a text editor. Cut and paste it into the terminal window when done. This program could be run with ’GT 10’, ’RN 10’ or ’RN’. 10 MO 1 20 MO 2 30 MO 3 40 GT 10 17. Try other program in this chapter.
  • 299. page 299 10. OTHER INDUSTRIAL ROBOTS This chapter discussed other industrial robots. 10.1 SEIKO RT 3000 MANIPULATOR • In general Degrees of freedom 4 Maximum payload 5kg (11 lb) Repeatability (based on constant temp., load, speed) +/-0.025mm (+/- 0.001 in.) Weight 108kg (237 lb) Operating Temperature 0C to 40C (32F to 104F) Humidity (based on constant temp. load, speed) 20% to 90% Power Requirements 200-240 VAC Other 50-70 psig air • A-axis motion revolute Range +/-145 degrees Resolution 0.005 deg. Speed max. speed 150 deg/sec max. torque 383. in.lbs • Z-axis motion linear Range 4.72 in (120mm) Resolution 0.0005 in (0.012mm) Speed max. speed 14 in/sec (360 mm/sec) max. force 23.3-35.2 lbs (10.6-16.0 kg) • R-axis motion linear Range 11.8 in (300mm) Resolution 0.001 in (0.025mm) Speed max. speed 29.5 in/sec (750 mm/sec)
  • 300. page 300 max. force 40 lbs • T-axis motion revolute Range 290 degrees Resolution 0.003 deg. Speed max. speed 90 deg/sec max. torque 358. in.lbs • The workspace is pictured below, A-axis (290 deg) R-axis (300mm) Z-axis (120mm) 10.1.1 DARL Programs • All DARL comments follow ’ at any position on a line. • Statements are ended with a colon, and as long as colons are used, more than one statement can be used on a line. • Line numbering is required for DARL programs.
  • 301. page 301 • Dimensions are given in millimeters in the programs. • Commas and spaces are treated as equivalent. • A sample program is given below with comments for explanation, 10 SPEED 250 ‘set the speed of the robot 20 T1 = 0. -350. -50. 0. ‘ first point 30 T2 = 0. -50. -350. 0. ‘second point 40 T3 = 30. -50. -350. 30. ‘third point 50 MOVE T1:MOVE T2:MOVE T3 ‘move the gripper to different points in space 60 OUTPUT +OG0 200 ‘open gripper 70 MOVE T1 + T2 ‘add two positions and move there 70 OUTPUT +OG1 200 ‘close gripper 80 STOP 10.1.1.1 - Language Examples • First, points can be defined in programs, they can also be defined by moving the robot to the location and storing the value. This allows the robot to accurately find points without measuring. It also means that points location values don’t need to appear in programs, they are stored in memory. • A example that uses for-next, if-then, goto and gosub-return commands is shown below. These commands are very standard in their use.
  • 302. page 302 10 FOR A = 2 TO 10 ‘ start a loop that will count from 2 to 10 40 IF A = 4 THEN GOTO 100 ‘when a has a value of 4 jump to line 100 50 IF A = 6 THEN GOSUB 200 ‘ when a has a value of 6 go to subroutine 60 NEXT A ‘ go back to line 10 and increase the value of a until it reaches 10 70 END ‘end the program 100 MOVE T1 ‘ go to point 1 110 NEXT A ‘ go back to line 10 200 MOVE T2 ‘ go to point 2 210 RETURN ‘ go back to where we left line 50 • A example that uses motion is shown below. The ‘move’ command causes a motion to another point by only turning the needed joints. ‘moves’ causes a more complex motion resulting in a straight line tool motion between points. ‘movec’ allows a circular interpolation dictated by three points (the start, and the two given). The shave command forces the robot to fully complete a motion and stop before going to the next point. The sync command will move the robot, but keep the gripper in the original position relative to the real world. 10 T1 = 30. 10. 10. 40. 20 T2 = 15. 5. 5. 10. 30 T3 = 0. 0. 0. 0. 40 MOVE T1 ‘ move to a start point 50 SHAVE ‘ allow motions to “only get close” before moving to the next point 60 MOVE T2: MOVE T3 ’ slows down at t2 before going to t3 70 NOSHAVE ‘ make motion stop fully before going to the next point 80 MOVE T1 ‘ return to the start 90 MOVE T2: MOVE T3’ stops at t2 before going to t3 100 MOVE T1 ‘ return to the start 110 MOVES T2: MOVES T3 ’ moves in a straight line from t1 to t2 and from t2 to t3 120 MOVE T1 ‘ back to the start again 130 MOVEC T2 T3 ‘ follows a smooth path, not slowing down at t2 140 MOVE T1 ‘ back to the start again 150 SYNC ‘ make gripper stay stationary relative to ground 160 MOVEC T2 T3 ‘ the arm moves, but the gripper stays at 0 170 NOSYNC ‘ make gripper follow robot
  • 303. page 303 • A example that defines tool location offsets is shown below. This is particularly useful for a robot that has more than one tool attached. The normal tool location is on the end of the arm. With multiple tools attached we will have multiple tool center points. We can have a tool definition for each one of these. Note that the x-axis is the normal forward for the tool. The tool axis can only be changed in the x-y plane (or the plane perpendicular to the gripper rotation). 30 A = 0.1 ’ the tool center point x offset from the gripper 40 B = 0.2 ’ the tool center point y offset from the gripper 50 C = 0.3 ’ the tool center point z offset from the gripper 60 D = 1 ’ define an offset for an axis 70 E = 0 ’ define a zero offset for an axis 80 DEF TL2 D E A B C ’ tool 2 at (0.1, 0.2, 0.3) with the x-axis pointing forward (1,0) 90 DEF TL3 E D C B A ’ tool 3 at (0.3, 0.2, 0.1) with the x-axis pointing to the left (0,1) 100 TOOL 1 ’ indicate that you are using tool 1 110 MOVE T1 ’ move to position 1 with the tool pointing in the normal direction 111 remark note that the robot gripper will be positioned (-0.1, -0.2, -0.3) from normal 120 TOOL 2 ’ choose the tool on the gripper pointing to the left 130 MOVE T1 ’ this will move the robot to (-0.3, -0.2, -0.1) 140 remark the robot will also move so that the tool is pointing to the left. • A example that uses pallet commands is shown below. Basically a pallet allows us to create an array of points (it does the calculations). We can then give a location on a pallet and move to that point. The basic pallet definition requires that we indicate the number of rows and columns. We also need to define the physical locations of the rows and columns. We do this by giving an origin point, and then defining where the first row and column end. To use the pallet location we can simply refer to the pallet location index.
  • 304. page 304 110 R = 3 ’ define the number of rows on the pallet 120 C = 4 ’ define the number of columns 130 DEF PA2 (R,C) T1 T2 T3 ’ pallet with first row from t1 to t2, the first column from t1 to t3 140 FOR I = 0 TO R-1 ’ loop for the rows 150 FOR J = 0 TO C-1 ’ loop for the columns 160 MOVE T4’ move the pickup point 170 OUTPUT +OG3 ’ close the gripper 180 MOVE PA2(J,I) ’ move to the location on the pallet 190 OUTPUT -OG3 ’ open the gripper 200 NEXT J: NEXT I ’ continue the loop to the next parts • A example that defines and uses new frames is shown below. We define a new frame of ref- erence by using points. The first point becomes the new origin. The second point determines where the new x-axis points. The z-axis remains vertical, and the y-axis is shifted appropriately. 20 T1 = 2. 1. 0. 0. ’ define a point 30 T2 = 1. 1. 0. 0. 40 T3 = 2. 2. 0. 0. 50 DEF FR1 T2 T1 ’ defines frame with origin at (1,1,0), but x-y axis in original direction 60 DEF FR3 T1 T2 ’ defines origin at T1 and x-axis pointing T2-T1=(-1,0,0) 70 DEF FR2 T2 T3 ’ defines origin at T2 and x-axis pointing T3-T2 = (.71,.71,0) 80 MOVE T2 ’ THIS WILL MOVE TO (1 1 0 0) 90 FRAME 1 ’ USE REFERENCE FRAME #1 100 MOVE T2 ’ THIS WILL MOVE TO FR1+T2 = (2, 2, 0, 0) 110 FRAME 2 ’ USE REFERENCE FRAME #2 120 MOVE T2 ’ THIS WILL MOVE TO FR2+T2 = ( 1, 0, 0, 0) 130 FRAME 3 ’ USE REFERENCE FRAME #3 140 MOVE T2 ’ THIS WILL MOVE TO FR3+T2 = (1.71, 1.71, 0, 0) 150 FRAME 0’ GO BACK TO THE MAIN COORDINATES 80 MOVE T2 ’ THIS WILL MOVE TO (1 1 0 0) • A example that uses simple inputs and outputs is shown below. Note that there are two con- nectors for I/O. The main or ‘E’xternal connector is on the main controller box. The other I/O
  • 305. page 305 lines are on the ‘G’ripper. We can check the states of inputs and set the states of outputs. The ‘+’ sign indicates inputs/outputs high (5v) and the ‘-’ sign indicates low (0V). The ranges for input points are ie0-ie15, ig0-ig7, and for output points oe0-15, og0-7. The search command allows us to move the robot until an input is activated. This is useful when attempting to find a part by touching it. 100 WAIT +IE3 ’ wait for external input #3 to turn on 110 WAIT -IG4 ’ wait for gripper input #4 to turn off 120 IF IE5 AND NOT IE6 THEN 110 ’ check to see if external input5 is on and 6 is off 130 OUTPUT +OG4 ’ turn on output #4 on the gripper 140 OUTPUT -OE4 ’ turn on output #4 on the external connector (not the gripper) 150 SEARCH +IG7 T1 THEN 200 ELSE 300 ’ move towards t1 until gripper input 7 goes on 10.1.1.2 - Commands Summary • A summary of the commands is given below, CLEAR <variable> This will clear a variable or point value. If none is specified then all the variable memory is cleared. DEF FR <1-9> Tn Tn This command will allow the workspace axes to be redefined. DEF PA <0-9> (etc. For defining pallets DEF TL <1-9> X1 Y1 X2 Y2 Defined tool offsets Z1
  • 306. page 306 DELAY <1-32767> Will delay for the specified time in milliseconds END Specifies the end of a program. FOR TO / NEXT Allows the standard BASIC for next loop. FRAME Specifies a current frame of reference. GOSUB / RETURN Functions for creating subroutines. GOTO An unconditional jump to another line number. HERE <Tn> Will define the current position to the location variable. HOME Move the robot to an initial position INPUT Fill a variable with an input from the keyboard IF/THEN/ELSE Standard flow control commands
  • 307. page 307 JOGRT Sets the robot to move in cylindrical mode JOGSP <1-100> Sets the jogging speed JOGXY Sets the robot to move in cartesian coordinates relative to the current frame. MOVE <Tn> Move to a specified position. MOVEC <Tn> <Tn> [C] Move the robot in a circular continuous path MOVEC <Tn> <rad> [L,C] MOVES <Tn> Move the robot with straight line motion NOSHAVE Sets the robot to stop fully at the end of each OD = n Sets one of the four binary output bits (0-15) OUTPUT <+/-> <OE,OGn> Opens and closes gripper or externally connected [10-32767] devices. PRINT Output a structured string to the output unit or SHAVE Allow the robot to start the next motion before the previous one is complete.
  • 308. page 308 SPEED Sets the speed of the manipulator STOP Terminate the execution of the program. TOOL n Set motions to be relative to a tool. WAIT <+/-> <IE,IG> <0-15> Wait for a certain input condition. OUTPUT <+/-> <OE,OGn> Opens and closes gripper or externally connected [10-32767] devices. 10.2 IBM 7535 MANIPULATOR • In general Degrees of freedom 4 Maximum payload 6kg (13.2 lb) Repeatability (based on constant temp., load, speed) +/-0.05mm (+/- 0.002 in.) Weight 99kg (218 lb) Operating Temperature 10C to 40.6C (50F to 106F) Humidity (based on constant temp. load, speed) 8% to 80% • Theta 1 axis motion revolute Range 0 to 200 degrees +/- 1deg. Resolution 0.00459 deg. Low speed (note: this is set by a switch) max. speed 700 mm/sec (28 in./sec)
  • 309. page 309 max. load 6 kg(13.2 lb) Medium speed max. speed 1100 mm/sec (43 in./sec) max. load 6 kg(13.2 lb) High speed max. speed 1450 mm/sec (57 in./sec) max. load 1 kg(2.2 lb) • Theta 2 axis motion revolute Range 0 to 160 degrees +/- 1deg. Resolution 0.009 deg. Low speed (note: this is set by a switch) max. speed 525 mm/sec (21 in./sec) max. load 6 kg(13.2 lb) Medium speed max. speed 825 mm/sec (32 in./sec) max. load 6 kg(13.2 lb) High speed max. speed 1000 mm/sec (39 in./sec) max. load 1 kg(2.2 lb) • Roll axis motion revolute Range +/- 180 degrees +/- 1.5 deg. Holding Torque 35 kg-cm (30.4 in.-lb.) Maximum load centered on Z-Axis 6 kg (13.2 lb) Maximum speed 3.7 rad/sec (210 deg./sec. +/-5%) Rotating Torque 14 kg-cm (12.2 in-lb) Max. load inertia 0.1 kg-m**2 (0.074 slug-ft**2) (Note: effects of off centre loads not considered, and lower maximum) Resolution 0.36 deg. • Z-Axis motion prismatic Range 75 mm (2.95 in.) Maximum Payload 6.0 kg (13.2 lb) Resolution Not Applicable • Compressed Air Maximum Pressure 6 kg/cm**2 (85 psig)
  • 310. page 310 Conditioning Must be moisture free, as through a moisture separator, and filtered with regulator. • The workspace is shown below, ( 0, 650, 0 ) y x z ( – 650, 0, 0 ) ( 650, 0, 0 )
  • 311. page 311 7535/7540 LINEAR Rate Values Available Programmed Rate Arm speed at tool tip Straight line error mm/sec. (in./sec) mm (in.) 1 60 (2.4) 3.0 (0.12) 2 100 (3.9) 3.7 (0.15) 3 140 (5.5) 4.4 (0.17) 4 180 (7.1) 5.3 (0.21) 5 225 (8.9) 6.2 (0.24) 6 265 (10.4) 6.9 (0.27) 7 305 (12.0) 7.6 (0.30) 8 345 (13.6) 8.4 (0.33) 9 385 (15.2) 9.3 (0.37) 10 430 (16.9) 10.0 (0.39) 20 430 (16.9) 11.5 (0.45) 30 430 (16.9) 11.5 (0.45) 50 430 (16.9) 11.5 (0.45) 0 Exit linear speed and motion 7535 Program Speed Values for PAYLOAD Command Program speed values Speed of theta1 Speed of theta2 Maximum at the tool tip at the tool tip payload for speed mm/sec (in./sec) mm/sec (in./sec) kg (lb) 1 300 (11.8) 225 (8.9) 6 (13.2) 2 500 (19.7) 375 (14.8) 6 (13.2) 3 700 (27.6) 525 (20.7) 6 (13.2) 4 750 (29.5) 575 (22.6) 6 (13.2) 5 900 (35.4) 675 (26.6) 6 (13.2) 6 1000 (39.3) 750 (29.5) 6 (13.2) 7 1100 (43.3) 825 (32.4) 6 (13.2) 8 1200 (47.2) 900 (35.4) 3.5 (7.7) 9 1300 (51.2) 950 (37.4) 2 (4.4) 10 1450 (57.1) 1000 (39.3) 1 (2.2) 0 Default to speed switches NOTE: Speeds in the table are for planning purposes only and are typical minimum values. Speed values only consider a single joint moving. Speed at the end of the arm is greater when multiple joints are used on a single move.
  • 312. page 312 10.2.1 AML Programs • All AML comments start with two dashes ‘--’ at any position on a line • Statements are ended with a semi-colon, and as long as semi-colons are used, more than one statement can be used on a line. • Line numbering is done by the AML Editor • the free form variables/identifiers must: start with a letter; be up to 72 characters in length; use letters numbers and underscores, except in the last position. • Statements have the general form, IDENTIFIER:KEYWORD; - IDENTIFIER is a unique name that the user has selected - the colon separates the two elements - KEYWORD indicates the significance of the IDENTIFIER to the system - the semi-colon indicates the end of the statement • A sample program is given below with comments for explanation,
  • 313. page 313 NEWPROG:SUBR: --A subroutine called NEWPROG to pick up a part RELEASE; -- open the gripper before dropping to prevent collision DELAY(20); -- wait 2 seconds to ensure the gripper is open DOWN; -- drop down to the work surface DELAY(10); -- wait 1 second just to be sure everything has settled down GRASP; -- close the gripper DELAY(10); -- wait 1 second to allow everything to settle down UP; -- go up so that we can move over other objects PMOVE(PT(300,300,0)); -- move to 300,300 in robot coordinates END; -- return to the calling routine • A summary of the commands is given below, BRANCH(label); This will force a branch to the statement having the (flow command) label. BREAKPOINT; When this command is executed, it will examine the (flow command) “stop and Mem” key on the robot. If either is pressed, the program execution will stop. DECR(name); Decrement ‘name’ by one. (logic command) DELAY(seconds); This commands will wait for the number of tenths of (flow command) seconds given, this can be used when motions must finish before continuing. If the value is 10, then the delay will be 1 second.
  • 314. page 314 DOWN(value); Instructs the robot to drop the gripper (z-axis). The (motion command) program delays until the gripper has dropped. If the axis has not reached it’s limit within the given time, then an error message will be generated. The timeout can be altered (from 1.5 seconds) by supplying a ‘value’ argument in tenths of a second. A value of zero means wait forever DPMOVE(x,y,z,r); A relative cartesian motion is made in the direction DPMOVE(x,y,r); specified. if the z-axis has a height control, the z can (motion command) be included. GETC(counter_name); The program is halted briefly while the host computer (communication command) is polled the a new counter value. GETPART(name); Move to the current part on the pallet. (pallet command) GRASP; The EOAT gripper will be closed when this command is (motion command) issued. INCR(name); Variable ‘name’ is incremented by one. (logic command) LINEAR(quality); When the robot moves it can follow a number of paths, (setting command) but this command will set all motions to follow a straight path. As the ‘value’ goes from 50 to 1 the path quality improves. If the ‘value’ is zero, the linear mode is turned off.
  • 315. page 315 NEXTPART(name); move the pallet reference ahead by one. (pallet command) PAYLOAD(value); As the mass carried changes, so do the maximum speeds. (setting command) This command will allow modification of the motion speeds. As ‘value’ changes from 10 to 1 the load increases, and the robot will go slower. A ‘value’ of zero will turn the function off. PMOVE(PT(x,y,r); The PMOVE portion of this nested command will cause a PMOVE(PT(x,y,z,r)); movement to a point. The PT statement indicated the PMOVE(name); position of a point. A point ‘name’ could also be used. (motion command) Here x and y are the cartesian coordinates on the work plane, and r is the roll of the gripper (±180°). Home, with the arm stretched to the far left is (650,0,0) PREVPART(name); reduce the current pallet part count by one. (pallet command) RELEASE; This command is the opposite of GRASP, and will (motion command) release the gripper. SETC(name, value); Set the counter name to a value. (logic command) SETPART(name, value); set the pallet name to the given value. (pallet command)
  • 316. page 316 TESTC(name, value, label); TESTC does a conditional branch statement that TESTI(DIpoint,value,label); compares name to value. TESTI does the same for a DI TESTP(name,value,label); point, and a value. TESTP compares a pallet name and (logic command) value. All statements branch to label if the comparison is equal. UP(value); This commands is the reverse of DOWN, as it raises the (motion command) z-axis. WAITI(DIpoint,value,time); Pause while waiting for the DI point to reach value. (logic command) Time specifies a maximum value before an error message should be generated. WRITEO(DO point, value); Set DO point to the given value. (logic command) ZMOVE(position); Move the z-axis to a given position, if variable positioning is available. ZONE(factor); The accuracy of a point to point move is set using (setting command) this command. As the value ‘factor’ changes from 15 to 1 the motion times increase, but the final position is more accurate. If ‘factor’ has a value of zero, the function is turned off. • A summary of some of the keywords is, END; causes a return from a subroutine. name:NEW PT(x,y,r); Defines a point name with the values x,y,r and z if name:NEW PT(x,y,z,r); the robot supports it.
  • 317. page 317 name:NEW ‘string’; A string is assigned to variable name. name:NEW n; Create a variable name, and assign a numeric value to ident:SUBR; A subroutine called ident is created. A parameter list ident:SUBR(parameter); can be associated by adding it to the definition. name:STATIC a counter variable called name is created. COUNTER; name:STATIC a pallet definition name can be defined. The pallet is PALLET(ll,lr,ur,ppr,parts assumed to be rectangular with the three corners given, ); ll, lr and ur (lower left, lower right, and upper right respectively). the parts per row (ppr), and total number of parts are also given. label:statement; A label can be arbitrarily inserted before any command to set a branch point. 10.3 ASEA IRB-1000 • In general maximum payload (for a 200mm tool offset) 6 kg Maximum moment of inertia 2.5 Nm (dynamic) Maximum static moment 12 Nm (static) weight 125 kg accuracy at wrist +/- 0.20mm • Axis 1
  • 318. page 318 joint type revolute range 340 deg. speed 95 deg/sec actuator servo • Axis 2 joint type revolute range +/-40 deg. speed 0.75 m/sec actuator servo • Axis 3 joint type revolute range +/-25 deg. to -40 deg. speed 1.1 m/s actuator servo • Axis 4 joint type revolute range +/- 90 deg. speed 115 deg/sec. actuator servo • Axis 5 joint type revolute range +/- 180 deg. speed 195 deg/sec actuator servo • Gripper Pneumatic 2 solenoid valves are located in the upper arm, and can be operated by the programs. electrical There is a four pole electrical outlet in the upper arm for use with more advanced grippers having search functions.
  • 319. page 319 10.4 UNIMATION PUMA (360, 550, 560 SERIES) • In general, - an articulated arm with 3 dof for positioning, and 3 dof for orientation - left/right arm configurations are possible - uses DC servo motors for drive - uses 110-130 VAC, 50-60Hz, 1.5KW - weight 120 lb - repeatability 0.004in - RS-232C port for dumb terminal - 32 parallel I/O lines - memory 16K - programming language is VAL • joint 1 (Waist) joint type revolute range 315° max slew rate 1.9 rad/sec. resolution .0001 rad/bit maximum static torque 9.9Nm • joint 2 (Shoulder) joint type revolute range 320° max slew rate 1.8 rad/sec. resolution .00009 rad/bit maximum static torque 14.9Nm • joint 3 (Elbow) joint type revolute range 300° max slew rate 2.6 rad/sec. resolution .000146 rad/bit maximum static torque 9.1Nm • joint 4 (Wrist Rotation) joint type revolute range 575° max slew rate 8.7 rad/sec. resolution .000181 rad/bit
  • 320. page 320 maximum static torque 1.5Nm • joint 5 (Wrist Bend) joint type revolute range 235° max slew rate 5.6 rad/sec. resolution .000199 rad/bit maximum static torque 1.4Nm • joint 6 (Flange Rotation) joint type revolute range 525° max slew rate 5.2 rad/sec. resolution .000247 rad/bit maximum static torque 1.1Nm 10.5 PRACTICE PROBLEMS 2. Write a short program to direct a robot to pick up and put down a block. Assume the points have already been programmed with the teach pendants. a) Write program for the IBM 7535. b) Write program for the Seiko RT-3000.
  • 321. page 321 ans. a) NEWPROG:BLOCK; RELEASE; -- open the gripper DELAY(5); -- delay 1/2 second to allow the gripper to open PMOVE(OVER); -- move to the point over the pickup point called ‘OVER’ DOWN; -- move the arm down DELAY(2); -- wait for the motion to complete and settle GRASP; -- close the gripper DELAY(2); -- wait for the gripper to close UP; -- raise the block DELAY(20); -- wait for a couple of seconds DOWN; -- drop the block back to the surface of the table OPEN; -- open the gripper UP; move the arm away from the block END; - terminate the program 10. You have been asked to write a program for a Seiko RT-3000. The program is to pick up a part at point T1, move to point T2, and then load the part into a pallet. The robot should then return to point A to pick up then next part. This should continue until the pallet is full. T1 = (300, 300, 20) T2 = (-300, 300, 0) Pallet has 6 rows and 7 columns Pallet origin T3 = (300, 0, 0) Pallet end of row T4 = (350, 0, 0) Pallet end of column T5 = (300, 60, 0)
  • 322. page 322 10 T1 = 300. 300. 20. 0. ans. 20 T2 = -300. 300. 0. 0. 30 T3 = 300. 0. 0. 0. 40 T4 = 350. 0. 0. 0. 50 T5 = 300. 60. 0. 0. 60 R = 6 70 C = 7 80 OUTPUT +OG3 90 DEF PA2(R, C) T3 T4 T5 100 FOR I = 0 TO R-1 110 FOR J = 0 TO C-1 120 MOVE T1 130 OUTPUT -OG3 200 140 MOVE T2 150 MOVE PA2(J, I) 160 OUTPUT +OG3 200 170 NEXT J 180 NEXT I 190 STOP 11. An IBM 7535 industrial robot is to be used to unload small 1 lb. cardboard boxes (5” by 4” by 1”) from a conveyor, and stack them in a large cardboard box (20” by 8” and 2” deep). After the large box is loaded, it will be removed automatically and replaced with an empty one. The conveyor will be controlled by a robot output, and it will be stopped when an optical sensor detects a small box. When the box is full the conveyor will be stopped and a light turned on until an unload button is pushed. The entire system uses a start and stop button combination. The stop button is not an e-stop, but it will stop the cycle after the small box is placed in the large box. a) Layout the position of the conveyor, sensor, large box and robot so that all positions can be reached. Indicate critical points of objects. b) Design a robot gripper to pick up the boxes. c) Develop a flow chart for the robot operations. d) Write an AML program for the flowchart.
  • 323. page 323 ans. a) First, we need to convert the given dimensions to mm. small boxes = 127x101.6x25.4mm large boxes = 508x203.2x76.2mm Next, we need to overlay these on the robot workspace. In this case there is abun- dant space and can be done by inspection. ( 0, 650, 0 ) y A photo 127/2mm sensor x z D ( – 650, 0, 0 ) ( 650, 0, 0 ) B C A = (0, 650-101.6/2, 0) = (0, 599.2, 0) B = (-400, -1.5*127, 0) = (-400, -190.5, 0) C = (-400 + 101.6, -1.5*127, 0) = (-298.4, -190.5, 0) D = (-400, 1.5*127, 0) = (-400, 190.5, 0)
  • 324. page 324 ans. b) For this application, vacuum grippers should work effectively because the mass is light, and the boxes should have clean cardboard faces. Because the application has been designed to lift the boxes in the centers, we should be able to use a single suction cup, but a large factor of safety will be used to compensate (>= 3). We will assume that we are using a venturi valve to generate the suction, so a pressure differential of 3psi is rea- sonable. ( W )FS = PA min lb- 1lb3 = 3 ------ Amin 2 in 2 A min = 1in d min 2 A min ≤ π  ---------   2 - d min 2 1in ≤ π  ---------  2  2 - d min = 1.13in Based on this calculation I would select a suction cup that is 1.25” or 1.5” dia.
  • 325. page 325 ans. c) Start reset pallet values no start button pushed? yes pick up small box index pallet move above box no no yes is box full? stop pushed? yes turn off conveyor turn on light no reset button? yes 12. Repeat the previous problem for the Seiko RT-3000 robot.
  • 326. page 326 ans. a) First, we need to convert the given dimensions to mm. small boxes = 127x101.6x25.4mm large boxes = 508x203.2x76.2mm Next, we need to overlay these on the robot workspace. In this case there is abun- dant space and can be done by inspection. ( 0, 500, 0 ) y A photo sensor x D 127/2mm ( – 500, 0, 0 ) B C A = (0, 500-101.6/2, 0) = (0, 449.2, 0) B = (-350, -1.5*127, 0) = (-350, -190.5, 0) C = (-350 + 101.6, -1.5*127, 0) = (-248.4, -190.5, 0) D = (-350, 1.5*127, 0) = (-350, 190.5, 0)
  • 327. page 327 ans. b) For this application, vacuum grippers should work effectively because the mass is light, and the boxes should have clean cardboard faces. Because the application has been designed to lift the boxes in the centers, we should be able to use a single suction cup, but a large factor of safety will be used to compensate (>= 3). We will assume that we are using a venturi valve to generate the suction, so a pressure differential of 3psi is rea- sonable. ( W )FS = PA min lb- 1lb3 = 3 ------ Amin 2 in 2 A min = 1in d min 2 A min ≤ π  ---------   2 - d min 2 1in ≤ π  ---------  2  2 - d min = 1.13in Based on this calculation I would select a suction cup that is 1.25” or 1.5” dia.
  • 328. page 328 ans. c) Start reset pallet values no start button pushed? yes pick up small box index pallet move above box no no yes is box full? stop pushed? yes turn off conveyor turn on light no reset button? yes
  • 329. page 329 ans. 10 R = 3: C = 4: H = 0 ‘ define rows and column variables 20 SPEED 100 ‘ set the robot speed 30 T1 = 0. 449.2 0. 0. ‘ set point A 40 T2 = -350. 449.2 -190.5 0. ‘ set point B 50 T3 = -248.4 449.2 -190.5 0. ‘ set point C 60 T4 = -350. 449.2 190.5 0. ‘ set point D 70 T5 = 0. 0. -50. 0. ‘ a displacement to the conveyor height 80 T6 = 0. 0. -100.4 0. ‘ a displacement to the bottom layer of the large box 90 T7 = 0. 0. -75. 0. ‘ a displacement to the top layer of the large box 100 DEF PA2(4,2) T1 T2 T3 ‘ define pallet 110 WAIT +IE1 ‘ wait for external input #1 to go on, this is the start button 120 FOR H = 0 TO 1 ‘ set box layers 130 FOR I = 0 TO R-1 ‘ loop for rows 140 FOR J = 0 TO C-1 ‘ loop for columns 150 OUTPUT +OE1 ‘ turn on external output #1, this is the conveyor 160 MOVE T1 ‘ move to the conveyor pickup point 170 WAIT +IE2 ‘ wait for the input from the optical sensor to go on 180 OUTPUT -OE1 ‘ turn off the conveyor 190 MOVE T1 + T5 ‘ move to pick up box 200 OUTPUT +OG1 ‘ turn on suction cup on gripper 210 MOVE T1 ‘ pick up the box 220 MOVE PA2(I, J) ‘ move to the pallet position in the large box 230 IF H = 1 THEN GOTO 260 ‘ jump if on the top layer 240 MOVE PA2(I, J) + T6 ‘ move to the bottom layer of the box 250 GOTO 270 260 MOVE PA2(I, J) + T7 ‘ move to the bottom layer of the box 270 OUTPUT -OG1 ‘ turn off the suction cup 280 MOVE PA2(I, J) ‘ move out of box 290 IF NOT IE3 THEN GOTO 310 300 WAIT +IE1 ‘ wait for the start button 310 NEXT J: NEXT I: NEXT H ‘ end of the loops 320 OUTPUT +OE2 ‘ turn on box full light 330 WAIT +IE4 ‘ wait for the reset button 340 GOTO 110 ‘ go back to start anew 14. The IBM 7535 robot arm moves its TCP to point (-450, 250)mm at speeds programmed by ‘payload(5)’ and decelerates from the resultant speed to zero in 0.5 seconds. The tool has a
  • 330. page 330 mass of 1.5 kg with its center of gravity at 3cm from the TCP and transfers a mass of 4kg with its C.G. at 5cm from the TCP. a) determine the inertia torque about the theta1 axis showing all correct units b) compare the value in a) with a maximum inertia torque estimated from decelerating a 6kg mass from 1100mm/s to zero in 0.5 sec. c) Estimate the combined error at the CG of the load due to theta1 and theta 2 resolution 10.6 LABORATORY - SEIKO RT-3000 ROBOT Purpose: Introduction to the Seiko RT-3000 robot and programming methods. Overview: This laboratory will involve a basic tutorial on the use of the robot, including safety. The students will have prepared a program for the robot ahead of class. During the lab- oratory the robot will be programmed and tested using the prepared programs. A simple accuracy and repeatability test will be conducted. Pre-Lab: 1. Use Netscape Communicator to access the robots in the laboratory, explore the site. 2. Review the note section on the Seiko RT-3000. After this use the on-line robot to write a simple test program. 3. Write a program to pick up pop cans at one point, and put them down at another point. This program should repeat five times in a row. Test the program on the robot. In-Lab: 1. Examine the robot and all associated cables, including the pneumatics. Make sure the settings match the manual specifications. 2. Examine the buttons on the front and connectors on the back of the controller box. Match these up to the input/output points. Determine if these are TTL, sourcing, or some other type. 3. Turn on the robot and use the teach pendant, with the commands below, to control the robot. 4. Turn the robot controller off, connect it to a computer, and then turn it back on. Turn the servo power on and then type in the command home. The robot will move and find its reference position. You may then type in commands at the prompt.
  • 331. page 331 5. Program some points using the ‘here’ command. (refer to manual). 6. Enter the simple program below to move between the programmed points. Add in com- mands that will open and close the gripper. 7. Add lines the the program that will turn on/off outputs and examine inputs. Use the appropriate electrical equipment to test the new parts of the program. 8. Enter and test your prelab program with no parts present. Set up the parts and run the program again. Cooperate with the other group and add a part present sensor to the part pickup point, connect it to the robot, and add a line to the program to wait for the part. 9. Move to the other robot and complete the other part of the first step. 10. For the robot you are currently using, put the robot in an extended position (tool far away from the base). Set up a dial gauge indicator so that it touches a solid point on the tool. Set the gauge so that it reads zero. Move the robot away and back to the same position, and read the value from the dial gauge indicator. Repeat this process to get 10 readings. 11. Position the robot so that the tool is in the middle of the workspace. Take similar mea- surements to those in step 3. Submit (individually): 1. A copy of your prelab program. 2. A copy of the final program with the part detector sensor. 3. Statistical estimates of repeatability for both positions. 10.7 TUTORIAL - SEIKO RT-3000 ROBOT 1. Look at the robot and controller. Indentify the controller, teach pendant (programming termi- nal) and robot. 2. Turn on the robot power and look at the programming terminal. There should be a message that says " ". If there are any error messages inform the instructor. 3. Turn on the servo motor power by pressing the ’Servo ON’ button on the front of the controller. After this the robot can be moved to the home position with the ’HOME’ command. After the robot goes through the startup procedure it will be ready for use. 4. The robor joints can be moved with the arrows on the right side of the keyboard. Move each joint and observe the range of motion. 5.
  • 332. page 332 10.8 LABORATORY - ASEA IRB-1000 ROBOT Purpose: Introduction to robots and programming methods. Overview: Pre-Lab: In-Lab: Submit: 10.9 TUTORIAL - ASEA IRB-1000 ROBOT 1. Look at the robot and controller. Indentify the controller, teach pendant (programming termi- nal) and robot. 2.
  • 333. page 333 11. ROBOT APPLICATIONS The nice definition of a robot by the Robot Institute of America is “A robot is a reprogram- mable multifunctional manipulator designed to move material, parts, tools, or specialized devices through variable programmed motions for the performance of a variety of tasks”. The not-so-nice definition is "Robots are one armed, blind, stupid, deaf, mute, and cannot feel and understand what they are doing". 11.0.1 Overview • Unlike many machines, robots are easy to imagine performing tasks, because of their simi- larity to the human form. This has caused many companies to adopt robots without properly assessing what their strengths and weaknesses are. • The early days of experimentation lead to many failed applications, as well as some notable successes. • A useful dichotomy is, Point-to-Point - A robot that typically only has 2 (or very few) possible positions. These are good for pick and place type operations, and they are often constructed with pneumatic cylinders. Manipulation - A robot that assembles, or moves parts requires good end of path motion, but does not require as much accuracy in the middle of the path. A higher speed between path endpoints is often desired. Path Tracking - When arc welding, gluing, etc. the robot must follow a path with high accuracy, and constant speed. This often results in slower motion, and more sophisticated control software. Operating - The robot will be expected to apply forces to perform work at the end of the tool, such as doing press fits. While the demands for these robots is essentially the same, they must be capable of handling the higher forces required when in work- ing contact with the work. Telerobotics - Acts as a remote extension of human control, often for safety or miniatur- ization purposes. In these cases the robots often mimic the human form, and pro- vide some forms of physical feedback. Services - mail delivery, vacuuming, etc.
  • 334. page 334 Biomedical - prosthetic and orthotic devices. • The number of degrees of freedom of the robot should be matched to the tasks. • Note: 5 d.o.f. robots will allow the tool to reach all points in space if the tool has an axis of symmetry. For example, a welding torch flame has a symmetrical axis. • Some commercial applications that have been done with robots are, - die casting - used for unloading parts from dies, quenching parts, and trimming them with a trim press. The robot may also be used to put inserts into the die. - spot welding - spot welding electrodes are clamped in place, and the weld is made. The robot allows many welds to be done. - arc welding- continuous path robots are used to slowly track a path with a continuous rate, and with control of welding parameters. - investment casting - robots can be used in the pick and place operations involved in mak- ing the molds. - forging- a robot can be used to precisely position the work under the impact hammer, freeing a worker from the handling hot heavy work pieces. - press work- the robot handles loading parts into the press, and removing the resulting work pieces. - spray painting- a very popular application in which the robot sweeps the paint head across the surface to deposit a spray. This process has been coupled with electro- statics to improve efficiency and distribution. - plastic molding - they can be used for loading the hoppers, and unloading the parts. This is most effective when the parts are hard to handle. - foundry process- robots can be used for ladling materials, and preparation of molds. - machine tools- robots can be used for loading and unloading machine tools, and material transfer systems. - heat treatment process - parts can be loaded into the ovens, unloaded from the ovens, quenched and dried by robots. - metal deburring - continuous path robots can be used to track rough edges with a compli- ant tool design. - palletizing process - parts can be placed in boxes, or on skids in preparation for shipping. Most robots have program commands to support this. - brick manufacture - a robot can be used for loading and unloading a kiln, and stacking bricks for shipping. - glass manufacture - a robot can handle the breakable glass with a wide EOAT that pre- vents sagging, etc. The robot can also be used for grinding edges.
  • 335. page 335 11.0.2 Spray Painting and Finishing • Air spraying - air under pressure causes the paint to atomize and be propelled to the article to be painted • Airless spraying - finishing materials, such as paint, are sprayed under considerable hydrau- lic pressure through a fixed orifice, which causes the paint to be atomized directly without the need for air. • Electrostatic spraying - Atomized particles (paint or powder droplets) are electrostatically charged. These are attracted to the object being sprayed by the applied electrostatic field. Consid- erable material savings are achieved since very little of the sprayed material bypasses the object and is lost. Objects being sprayed are kept at a ground potential to achieve a large electrostatic field. • Heating of materials - paint decreases in viscosity when heated and can be sprayed with lower pressures. Less solvent is required and there is less overspray of paint. Heating may be used with any of the preceding systems • Air spraying and electrostatic spraying are the most common methods of application for paints, enamels, powders, and sound absorbing coatings. 11.0.3 Welding • These tasks are characterized by the need for, - smooth motion - conformity to specified paths - consistent tool speed
  • 336. page 336 11.0.4 Assembly • General concepts are, • one or more robots • each robot may perform a variety of sub-assemblies • requires a conveyor and inspection station • A host computer must synchronize robot actions • A bad part rejection function should be available • An organized output should be used, e.g. pallets, or shipping crates. • These tasks are common, but face stiff competition from fixed automation and manual labor. 11.0.5 Belt Based Material Transfer • When a robot is used in a workcell, the raw part is delivered in, worked on, and then moved out. This can be done using moving belts, etc. • Parts are placed directly on the belt, or placed on pallets first. • Belts can travel in straight paths, or in curved paths if flexible belt link designs are used. • If straight belts are used, transfer points can be used at the end to change part/pallet direc- tion • When pallets are used, there is a fixture on top designed to hold the part in an accurate posi- tion so that robots and other equipment will be able to locate the part within some tolerance. • Vision systems may be necessary if part orientation cannot be fixed.
  • 337. page 337 11.1 END OF ARM TOOLING (EOAT) • The best known universal gripper - the human hand • Useful classifications are, - Grippers - multiple/single - internal/external - Tools - compliant - contact - non-contact • End of arm tooling is typically purchased separately, or custom built. 11.1.1 EOAT Design • Typical factors to be considered are, Workpiece to be handled part dimensions mass pre- and post- processing geometry geometrical tolerances potential for part damage Actuators mechanical vacuum magnet etc. Power source of EOAT electrical pneumatic hydraulic mechanical Range of gripping force object mass friction or nested grip coefficient of friction between gripper and part maximum accelerations during motion
  • 338. page 338 Positioning gripper length robot accuracy and repeatability part tolerances Maintenance number of cycles required use of separate wear components design for maintainability Environment temperature humidity dirt, corrosives, etc. Temperature protection heat shields longer fingers separate cooling system heat resistant materials Materials strong, rigid, durable fatigue strength cost and ease of fabrication coefficient of friction suitable for environment Other points interchangeable fingers design standards use of mounting plate on robot gripper flexible enough to accommodate product design change • The typical design criteria are, - low weight to allow larger payload, increase accelerations, decrease cycle time - minimum dimensions set by size of workpiece, and work area clearances - widest range of parts accommodated using inserts, and adjustable motions - rigidity to maintain robot accuracy and reduce vibrations - maximum force applied for safety, and to prevent damage to the work - power source should be readily available from the robot, or nearby - maintenance should be easy and fast - safety dictates that the work shouldn’t drop when the power fails • Other advanced design points, - ensure that part centroid is centered close to the robot to reduce inertial effects. Worst case make sure that it is between the points of contact.
  • 339. page 339 Part robot arm Gripper Better - less chance of slippage - holding pressures/forces/etc are hard to control, try to hold parts with features or shapes robot arm Part Gripper part will be more stable, and well located - compliance can help guide work into out-of-alignment conditions. - sensors in the EOAT can check for parts not in the gripper, etc. - the gripper should tolerate variance in work position with part alignment features - gripper changers can be used to make a robot multifunctional - multiple EOAT heads allow one robot to perform many different tasks without an EOAT change. - *** Don’t try to mimic human behavior. - design for quick removal or interchange of tooling by requiring a small number of tools (wrenches, screwdrivers, etc). - provide dowels, slots, and other features to lead to fast alignment when changing grip- pers. - use the same fasteners when possible. - eliminate sharp corners/edges to reduce wear on hoses, wires, etc. - allow enough slack and flexibility in cables for full range of motion. - use lightweight materials, and drill out frames when possible. - use hard coatings, or hardened inserts to protect soft gripper materials. - examine alternatives when designing EOAT.
  • 340. page 340 - the EOAT should be recognized as a potential bottleneck, and given extra design effort. - use shear pins, and other devices to protect the more expensive components. - consider dirt, and use sealed bearings where possible. - move as much weight away from the tip of the gripper towards the robot. 11.1.2 Gripper Mechanisms • A gripper is specifically EOAT that uses a mechanical mechanism and actuator to grasp a part with gripping surfaces (aka fingers) • Quite often gripper mechanisms can be purchases, and customized fingers attached. • Fingers are designed to, 1. Physically mate with the part for a good grip 2. Apply enough force to the part to prevent slipping µ = coeff. of friction between part and grippe r µn f F g = wgS nf = number of contacting fingers F g = gripper force w = weight of part g = gravity S = factor of safety (for basic applications 2 to 3 should be the absolute minimum, but high speed applications will require more force to resist inertial forces) • Movements of the fingers - pivoting (often uses pivotal linkages) - linear or translational movement (often uses linear bearings and actuators) • Typical mechanisms - linkage actuation - gear and rack - cam
  • 341. page 341 - screw - rope and pulley - miscellaneous - eg. bladder, diaphragm Two Finger Gripper - as the pneu- matic cylinder is actuated, the fingers move together and apart. Parallel finger actuator - as the cylinder is actuated, the fin- gers move together and apart in parallel.
  • 342. page 342 Two Fingered Pneumatic Actuated - as the cylinder is actuated, it translates to the fingers opening or clos- ing. The extra links help increase holding force. Two Finger Internal Gripper - as the cylinder is actuated, the fingers move outward. 11.1.2.1 - Vacuum grippers • Suction cups can be used to grip large flat surfaces. The cups are, - typically made of soft rubber or plastic - typically round, or oval shapes • A piston operated vacuum pump (can give a high vacuum), or a venturi valve (simpler) can
  • 343. page 343 be used to generate the vacuum. • The surfaces should be large, smooth, clean. • The force of a suction cup depends on the effective area of the vacuum and the difference in the vacuum, and air pressures. F = PA F = maximum gripping force P = difference between vacuum and air pressure A = total effective area of the vacuum • e.g. We have a suction cup gripper with two 5”diameter cups that is to be used to lift 1/4” steel plates cut to 2’ by 3’. How much vacuum pressure must be applied to just hold the plates? Suggest a realistic value. w = 0.28  ------  -- ( in ) × 24 ( in ) × 36 ( in ) = 60.48 ( lb ) lb- 1 -  3 4 in 2 A = 2 π  5 = 2 [ 19.63 ( in ) ] = 39.26 ( in ) 2 2 -- - 2 w 60.48 ( lb ) Minimum to hold plate P = --- = ------------------------- = 1.54 ( psi ) - 2 - A 39.26 ( in ) Assume low moving speed for robot, use factor of safety = 2.0 P S = 2.0 × P = 3.08 ( psi ) Note: this is much less than atmospheric pressure (15 psi), there- fore it is realistic.
  • 344. page 344 • Advantages, - requires only one surface of a part to grasp - a uniform pressure can be distributed over some area, instead of concentrated on a point - the gripper is light weight - many different types of materials can be used • Disadvantages, - the maximum force is limited by the size of the suction cups - positioning may be somewhat inaccurate - time may be needed for the vacuum in the cup to build up 11.1.3 Magnetic Grippers • Can be used with ferrous materials • Electromagnets, - easy to control, requires a power supply, and a controller - polarity can be reversed on the magnet when it is put down to reverse residual magne- tism • Permanent magnets, - external power is not required - a mechanism is required to separate parts from the magnet when releasing - good for environments that are sensitive to sparks • Advantages, - variation in part size can be tolerated - ability to handle metal parts with holes - pickup times fast - requires only one surface for gripping - can pick up the top sheet from a stack • Disadvantages, - residual magnetism that remains in the workpiece - possible side slippage
  • 345. page 345 11.1.3.1 - Adhesive Grippers • Can handle fabrics and other lightweight materials • These grippers are basically a sticky surface on the end of the robot • As the adhesive gripper is repeatedly used, it loses stickiness, but a tape roll can be used to refresh the sticky surface. 11.1.4 Expanding Grippers • Some parts have hollow cavities that can be used to advantage when grasping. • A bladder can be inserted into a part, and then inflated. This forms a friction seal between the two, and allows manipulation. When done the pressure is released, and the part freed.
  • 346. page 346 • Expanding grippers can also be used when gripping externally. bladders inflate inwards 11.1.5 Other Types Of Grippers • Most grippers for manipulation are sold with mounts so that fingers may be removed, and replaced.
  • 347. page 347 • Gripper fingers can be designed to reduce problems when grasping. Self Aligning Finger Pads - small rock- ing pads are placed on the end fingers, these are also covered with a high friction material, such as rubber. These allow some locational inaccu- racy when grasping parts. Multiple Part Gripper - the gripper has a number of holes cut for dif- ferent parts. In this case the grip- per can hold three different radii, and the rubber lining will help hole the part. 11.2 ADVANCED TOPICS 11.2.1 Simulation/Off-line Programming • How a robot interacts with the environment makes it difficult to program off-line. To do this successfully, a complete simulation of the robot workspace is required. • One excellent example of a simulation package is CIMStation by Silma. It allows full con- struction of the robots workspace, and subsequent testing.
  • 348. page 348 • Examples of simulated operation in CIMStation are, - painting - NC code verification - tool and fixture simulation - Design For Manufacturing - process planning - composite tape layup - composite filament layup - spot welding - arc welding - material/work manipulation - collision detection - deburring - inspection - kinematic and dynamic simulation - controller simulation • The simulators available for the robots in the lab allow off-line programming and simula- tions. 11.3 INTERFACING - TTL IO - sourcing/sinking - serial communications 11.4 PRACTICE PROBLEMS
  • 349. page 349 7. Suggest a type of robot suitable for the following tasks. Briefly explain your suggestion. a) placing pallets on rack shelving ans. cartesian - well suited to cartesian layout of shelves. b) electronics assembly ans. scara - will work on a flat table well. c) loading and unloading parts from an NC mill ans. articulated - can easily move around obstructions. 8. Suggest a type of robot suitable for the following tasks. Briefly explain your suggestion. a) a gas pump robot for placing the gas nozzle into the fuel tank. b) for drilling holes in a printed circuit board. c) to vacuum a hotel. 3. We plan to use a pneumatic gripper to pick up a 4 by 8 sheet of glass weighing 40 lbs. Sug- gest a gripper layout and dimensions of the cups. State any assumptions. ans. For stability we want to set up an array of cups. A set of 3 or 4 would be reason- able to help support the sheet. - I will pick 4. Now, the diameter of the cup should be determined. We will assume that the vacuum pressure will be 5 psi below atmosphere, and we will use a factor of safety of 2. 2 FS ( L ) = Nπr P 2 2 ( 40lb ) = 4πr 5psi 4 -- = r 2 - r > 1.128in π 4. A vacuum pump to be used in a robot vacuum gripper application is capable of drawing a
  • 350. page 350 negative pressure of 4.0 psi compared to atmospheric. The gripper is to be used for lifting stain- less steel plates, each plate having dimensions of 15” by 35”, and weighing 52 lbs. Determine the diameter of the suction cups to be used for the gripper if it is decided to use two cups for greater stability. A factor of safety of 1.5 should be used in the computations. 5. Consider the following gripper design problems. a) We plan to use a friction gripper to pick up a 50 lb iron plate. Suggest a gripper design and specify the force required. b) Design an end effector, and describe the path planning approach for a robot unloading sat- ellites from the space shuttle. 11.5 LABORATORY - ROBOT INTERFACING Purpose: Basic robot interfacing Overview: Pre-Lab (individual): 1. Develop a program that will put down and pick up balls at two different point for both robots. 2. Test both programs on-line. 3. Plan for a mode of robot operation either one robot can deposit a ball in a center pickup point, or at their own private pickup points. (Only a single ball will be used) Each robot will have a button connected to it. If the robot button and the other robot has the button, the robot will request the ball from other robot (using an I/O line). A list of the inputs and outputs is given below. Develop a simple diagram showing outputs and inputs to connect two robots and sensors. Develop a state diagram for the operation of both robots. Rewrite the robot programs from step 1 so that they will use the inputs. input #1 ball in my private point input #2 other robot wants ball input #3 ball request button output #1 request ball from other robot In-Lab (groups of 4):
  • 351. page 351 1. The instructor will discuss interfacing issues. 2. Each group should do each of the three parts below in turn. 1a. Test programs on the RV-M1, and add grippers/fixtures as required 1b. Test programs on the RT-3000, and add grippers/fixtures as required 1c. Connect and test the wiring for each of the robots and the interface 2. Integrate all of the equipment for the final task. Submit: 1. Individually developed programs for the robots. 2. Group programs for the robots and PLC. 11.6 LABORATORY - ROBOT WORKCELL INTEGRATION Purpose: Interfacing robots to workcells using PLCs. Overview: Pre-Lab (individual): 1. Develop a program that will draw a square on both robots, and test them on-line. 2. Develop a program that will draw a circle on both robots, and test them on-line. 3. Develop ladder logic for a micrologix that will watch for inputs from both robots. The two inputs will indicate when either of the robot is using the drawing paper. The PLC will also have outputs connected to both robots. Each robot will have two inputs. One input will cause a circle to be drawn, the other will cause the square to be drawn. The PLC will use inputs from push-button switches to indicate when a circle or square is to be drawn. The ladder logic should share the work between the robots. 4. Combine and modify the robot programs so that they will interface to the PLC program. In-Lab (groups of 3): 1. Each group should do one of the tasks below, 1a. Enter and test the program on the RT-3000 robot. Use a voltage source to test the program. 1b. Enter and test the program on the RV-M1 robot. Use a voltage source to test the program. 1c. Enter and test the program on the micrologix. 2. Rotate between the stations until you have done all three modules. 3. Connect the PLC and two robots electrically, and enter and test the programs. Submit: 1. Individually developed programs for the robots and PLC. 2. Group programs for the robots and PLC.
  • 352. page 352 12. SPATIAL KINEMATICS • Basically mechanisms that are 3D (not planar). 12.1 BASICS • When we deal with geometries in two dimensions we have three position variables (dof) for each rigid body (two for position, one for orientation). • When a problem is expanded to three dimensions we then have six position variables (dof) for a rigid body (three for position, and three for orientation). • These added degrees of freedom expand the complexity of the problem solutions. There are a few potential approaches, - look for regularities that simplify the problem (scalar) - vector based approaches (positions) - matrix based approaches (positions and orientations) • Consider the example of the spherical joint - all of the axes of rotation coincide.
  • 353. page 353 12.1.1 Degrees of Freedom • The scalar and vector approaches are easily extended to 3D problems. One significant dif- ference is that the polar notations are no longer available for use. • We can determine the number of degrees of freedom using a simple relationship that is an extension of the Kutzbach criteria,
  • 354. page 354 m = 6 ( n – 1 ) – 5j 1 – 4j 2 – 3j 3 – 2j 4 – j 5 where, m = mobility of the mechanism (d.o.f.) n = number of links j 1, j 2, … = the number of joints with 1, 2, ... dof respectively • Consider the number of degrees of freedom in the linkage below, y C 3” D B 40” A 6” E x 10” z 12.2 HOMOGENEOUS MATRICES • This method still uses geometry to determine the position of the robot, but it is put into an ordered method using matrices.
  • 355. page 355 • Consider the planar robot below, 0.2m 1m TCP θ2 (xT, yT) (x1,y1) 1m θ1 (xb, yb) • The basic approach to this method is, 1. On the base, each joint, and the tool of the robot, attach a reference frame (most often x- y-z). Note that the last point is labels ‘T’ for tool. This will be a convention that I will generally follow. θ2 y y FT F2 y z xz x F1 z x T 0, 1 T 2, T T 1, 2 y θ1 F0 z x 2. Determine a transformation matrix to map between each frame. It is important to do this
  • 356. page 356 by assuming the joints are in their 0 joint positions. Put the joint positions in as variables. T 0, 1 = T 1, 2 = T 2, T = 1 0 0 ∆x trans ( ∆x, ∆y, ∆z ) = 0 1 0 ∆y 0 0 1 ∆z 0 0 0 1 1 0 0 0 rot ( x, θ ) = 0 cos θ sin θ 0 0 – sin θ cos θ 0 0 0 0 1 cos θ 0 – sin θ 0 rot ( y, θ ) = 0 1 0 0 sin θ 0 cos θ 0 0 0 0 1 cos θ sin θ 0 0 rot ( z, θ ) = – sin θ cos θ 0 0 0 0 1 0 0 0 0 1
  • 357. page 357 ASIDE: The structure of these matrices describe the position (P) and orientation of the x (N), y (O), z (A), axes. NX OX AX PX y (O) NY OY AY PY NZ OZ AZ PZ P x (N) 0 0 0 1 z (A) cos θ 1 sin θ 1 0 0 1 0 0 1 T 0, 1 = – sin θ 1 cos θ 1 0 0 0 1 0 0 = rot ( z, θ )trans ( 1, 0, 0 ) 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 cos θ 2 sin θ 2 0 0 1 0 0 1 T 1, 2 = – sin θ 2 cos θ 2 0 0 0 1 0 0 = rot ( z, θ )trans ( 1, 0, 0 ) 2 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0.2 T 2, T = 0 1 0 0 = trans ( 0.2, 0, 0 ) 0 0 1 0 0 0 0 1 3. Multiply the frames to get a complete transformation matrix.
  • 358. page 358 T 0, T = T 0, 1 T 1, 2 T 2, T cos θ 1 sin θ 1 0 0 1 0 0 1 cos θ 2 sin θ2 0 0 1 0 0 1 1 0 0 0.2 T 0, T = – sin θ 1 cos θ 1 0 0 0 1 0 0 – sin θ 2 cos θ 2 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 cos θ 1 sin θ 1 0 0 1 0 0 1 cos θ 2 sin θ 2 0 0 1 0 0 1.2 T 0, T = – sin θ 1 cos θ1 0 0 0 1 0 0 – sin θ2 cos θ 2 0 0 0 1 0 0 0 0 10 0 0 1 0 0 0 1 0 0 0 1 0 0 0 01 0 0 0 1 0 0 0 1 0 0 0 1 cos θ 1 sin θ1 0 0 1 0 0 1 cos θ 2 sin θ 2 0 1.2 cos θ 2 T 0, T = – sin θ 1 cos θ 1 0 0 0 1 0 0 – sin θ 2 cos θ 2 0 – 1.2 sin θ 2 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 cos θ 1 sin θ 1 0 0 cos θ 2 sin θ 2 0 1.2 cos θ2 + 1 T 0, T = – sin θ 1 cos θ1 0 0 – sin θ 2 cos θ 2 0 – 1.2 sin θ 2 0 0 10 0 0 1 0 0 0 01 0 0 0 1 complete the multiplication and simplify to get...... Orientation Position cos ( θ 1 + θ2 ) sin ( θ 1 + θ 2 ) 0 cos θ 1 + 1.2 cos ( θ 1 + θ 2 ) T 0, T = – sin ( θ1 + θ 2 ) cos ( θ 1 + θ 2 ) 0 sin θ 1 + 1.2 sin ( θ 1 + θ 2 ) 0 0 1 0 0 0 0 1 • The position and orientation can be read directly from the homogenous transformation matrix as indicated above.
  • 359. page 359 • To reverse the transform, we only need to invert the transform matrix - this is a direct result of the loop equation. T 0, 1 T 1, 2 T 2, T T T, 0 = I where, I = Identity matrix We can manipulate the equation, ∴T 0, T T T, 0 = I –1 ∴T T, 0 = ( T 0, T ) 12.2.1 Denavit-Hartenberg Transformation (D-H) • Designed as more specialized transforms for robots (based on homogenous transforms) • Zi-1 axis along motion of ith joint • Xi axis normal to Zi-1 axis, and points away from it. • Basic transform is, 1. rotate about Zi-1 by thetai (joint angle) 2. translate along Zi-1 by di (link offset) 3. translate along Xi by ai (link length) 4. rotate about Xi by alphai (link twist)
  • 360. page 360 T i – 1, i = rot ( z i – 1, θ i )trans ( 0, 0, d i )trans ( a i, 0, 0 )rot ( x i, α i ) cos θ i cos α i sin θ i sin α i sin θ i a i cos θ i sin θ i cos α i cos θ i – sin α i cos θ i a i sin θ i T i – 1, i = 0 sin αi cos α i di 0 0 0 1 zi Robot zi Base αi + 1 xi zi + 1 yi xi + 1 yi + 1 di + 1 θi + 1 xi ai + 1 • We can see how the D-H representation is applied using the two link manipulator from before
  • 361. page 361 cos θ 1 – sin θ 1 0 cos θ 1 θi = θ1 T 0, 1 = sin θ1 cos θ 1 0 sin θ1 di = 0 0 0 1 0 ai = 1 0 0 0 1 αi = 0 cos θ 2 – sin θ 2 0 cos θ 2 θi = θ2 T 1, 2 = sin θ2 cos θ 2 0 sin θ2 di = 0 0 0 1 0 ai = 1 0 0 0 1 αi = 0 1 0 0 0.2 θi = 0 di = 0 T 2, T = 0 1 0 0 0 0 1 0 a i = 0.2 0 0 0 1 αi = 0 T 0, T = T 0, 1 T 1, 2 T 2, T cos θ 1 – sin θ 1 0 cos θ 1 cos θ2 – sin θ 2 0 cos θ2 1 0 0 0.2 T 0, T = sin θ 1 cos θ 1 0 sin θ 1 sin θ 2 cos θ2 0 sin θ 2 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 cos ( θ 1 + θ 2 ) sin ( θ 1 + θ 2 ) 0 cos θ 1 + 1.2 cos ( θ 1 + θ2 ) T 0, T = – sin ( θ1 + θ 2 ) cos ( θ 1 + θ 2 ) 0 sin θ 1 + 1.2 sin ( θ 1 + θ 2 ) 0 0 1 0 0 0 0 1 12.2.2 Orientation • The Euler angles are a very common way to represent orientation in 3-space.
  • 362. page 362 • The main problem in representing orientation is that the angles of rotation must be applied one at a time, and by changing the sequence we will change the final orientation. In other words the three angles will not give a unique solution unless applied in the same sequence every time. • By fixing a set of angles by convention we can then use the three angles by themselves to define an orientation. • The convention described here is the Euler angles. • The sequence of orientation is, In order, rot ( θ ), rot ( φ ), rot ( ψ ) where, θ = rotation about z axis φ = rotation about new x axis ψ = rotation about new z axi s • Therefore to reorient a point in space we can apply the following matrix, to the position vec- tors, or axes vectors, (there will be more on these matrices shortly) R x' cos ψ sin ψ 0 1 0 0 cos θ sin θ 0 R x R y' = – sin ψ cos ψ 0 0 cos φ sin φ – sin θ cos θ 0 R y R z' 0 0 1 0 – sin φ cos φ 0 0 1 Rz R x' ( cos θ cos ψ – sin θ cos φ sin ψ ) ( sin θ cos ψ + cos θ cos φ sin ψ ) ( sin φ sin ψ ) R x R y' = ( – cos θ sin ψ – sin θ cos φ cos ψ ) ( – sin θ sin ψ + cos θ cos φ cos ψ ) ( sin φ cos ψ ) R y R z' ( sin θ sin φ ) ( – cos θ sin φ ) ( cos φ ) Rz
  • 363. page 363 • We can find these angles given a set of axis before and after. 1 0.71 x0 = 0 x 1 = 0.71 y0 = y1 = 0 0 12.2.3 Inverse Kinematics • Basically we can find the joint angles for the robot based on the position of the end effector. • This is not a simple problem, and there are few reliable methods. This is partly caused by the non-unique nature of the problem. At best there are typically multiple, if not infinite numbers of equivalent solutions. The 2 dof robot seen before has two possible solutions. • We can do simple inverse kinematics with trigonometry. • If we have more complicated problems, we may try to solve the problem by examining the transform matrix,
  • 364. page 364 cos ( θ 1 + θ 2 ) sin ( θ 1 + θ 2 ) 0 cos θ 1 + 1.2 cos ( θ 1 + θ 2 ) T 0, T = – sin ( θ 1 + θ 2 ) cos ( θ 1 + θ 2 ) 0 sin θ 1 + 1.2 sin ( θ1 + θ 2 ) 0 0 1 0 0 0 0 1 Separate positions and simplify, x T = cos θ 1 + 1.2 cos ( θ 1 + θ 2 ) x T – cos θ 1 ∴------------------------- = cos ( θ 1 + θ 2 ) 1.2 y T = sin θ 1 + 1.2 sin ( θ1 + θ 2 ) y T – sin θ 1 ∴------------------------ = sin ( θ1 + θ 2 ) 1.2 Combine the two to eliminate the compound angles, 2 2 1 = ( cos ( θ1 + θ 2 ) ) + ( sin ( θ 1 + θ 2 ) ) x T – cos θ 1 2 y T – sin θ1 2 ∴1 =  ------------------------- +  ------------------------  1.2   1.2  2 2 2 2 ∴1.44 = x T – 2x T cos θ 1 + ( cos θ 1 ) + y T – 2y T sin θ 1 + ( sin θ 1 ) 2 2 ∴( 0.44 – x T – x T ) = – 2x T cos θ 1 – 2y T sin θ 1 2 2  0.44 – x T – x T ∴ --------------------------------  = ( x T cos θ 1 + y T sin θ1 ) -  –2  ETC..... 12.2.4 The Jacobian
  • 365. page 365 • A matrix of partial derivatives that relate the velocity of the joints, to the velocity of the tool. ∂x T ∂x T ∂x T d- x -------- -------- -------- d- d- ---- ∂θ 1 ∂θ 2 ∂θ 3 ---- θ ---- θ dt T dt 1 dt 1 d- ∂y T ∂y T ∂y T d- d- ---- y = -------- -------- -------- ---- θ = J ---- θ dt T ∂θ 1 ∂θ 2 ∂θ 3 dt 2 dt 2 d- ---- z ∂z T ∂z T ∂z T d- ---- θ d- ---- θ dt T -------- -------- -------- dt 3 dt 3 ∂θ 1 ∂θ 2 ∂θ 3 • The inverse Jacobian is used for motion control · · xT θ1 –1 J · · yT = θ2 · · zT θ3 • Find the Jacobian and inverse Jacobian for the 2 dof robot. θ2 y y FT F2 y z xz x F1 z x T 0, 1 T 2, T T 1, 2 y θ1 F0 z x
  • 366. page 366 Find the Jacobian matrix for the matrix given below. This will give a matrix that relates tool velocity to joint velocities.The joint angles are 30° and 20° for joints 1 and 2, find the joint velocities if the tool velocity is 0.05 m/s cos ( θ 1 + θ 2 ) sin ( θ 1 + θ2 ) 0 cos θ1 + 1.2 cos ( θ1 + θ 2 ) T 0, T = – sin ( θ 1 + θ 2 ) cos ( θ 1 + θ 2 ) 0 sin θ1 + 1.2 sin ( θ 1 + θ 2 ) 0 0 1 0 0 0 0 1 12.3 SPATIAL DYNAMICS • The basic principles of planar dynamics are expanded up for 3D spatial problems. The added dimension adds some complexity that should be addressed. 12.3.1 Moments of Inertia About Arbitrary Axes • Moments of Inertia are normally found for a single axis of rotation. When the object is
  • 367. page 367 rotating about another axis, we must recalculate the moments of inertia. • If we take the moments of inertia for the original axes, and project these values onto new vectors, we can get new values, We start by defining the vector equivalencies for rotated axes, R' = R = iR x + jR y + kR z = i'R' x + j'R' y + k'R' k We can project this vector to the other set of axes, R' x = ( i' ) • ( iR x + jR y + kRk ) = Rx cos θ i'i + Ry cos θ i'j + R z cos θ i'k R' y = ( j' ) • ( iR x + jR y + kRk ) = Rx cos θ j'i + Ry cos θ j'j + R z cos θ j'k R' z = ( k' ) • ( iR x + jRy + kR k ) = R x cos θ k'i + R y cos θ k'j + R z cos θk'k Next we integrate for moment of inertia for the shifted x axis, I x'x' = ∫ ( i' × R'x ) • ( i' × R'x ) dm 2 ∴ = ∫ ( R x cos θ i'i + R y cos θ i'j + R z cos θ i'k ) dm 2 2 2 ∴ = ∫ ( Rx cos θi'i ) + ( Ry cos θi'j ) + ( Rz cos θi'k ) + 2 ( Rx cos θi'i Ry cos θi'j ) + 2 ( R x cos θi'i ( R z cos θ i'k ) ) + 2 ( Ry cos θ i'j ( R z cos θ i'k ) )dm 2 2 2 ∴I x'x' = I xx ( cos θ i'i ) + I yy ( cos θi'j ) + I zz ( cos θ i'k ) + 2I xy ( cos θ i'i cos θi'j ) + 2I xz ( cos θ i'i cos θi'k ) + 2I yz ( cos θ i'j cos θ i'k ) Similarly for the shifted y and z axes, 2 2 2 ∴I y'y' = I xx ( cos θ j'i ) + I yy ( cos θj'j ) + I zz ( cos θ j'k ) + 2I xy ( cos θ j'i cos θj'j ) + 2I xz ( cos θ j'i cos θj'k ) + 2I yz ( cos θ j'j cos θ j'k ) 2 2 2 ∴I z'z' = I xx ( cos θk'i ) + I yy ( cos θ k'j ) + I zz ( cos θ k'k ) + 2I xy ( cos θ k'i cos θ k'j ) + 2I xz ( cos θ k'i cos θ k'k ) + 2I yz ( cos θ k'j cos θ k'k ) Next we integrate for the product of inertia for the shifted x and y axis, I x'y' = ∫ ( i' × R'x ) • ( i' × R'y ) dm
  • 368. page 368 This will lead to, I x'y' = I xx ( – cos θ i'i cos θ j'i ) + I yy ( cos θ i'j cos θ j'j ) + I zz ( – cos θ i'k cos θ j'k ) + I xy ( cos θ i'i cos θj'j + cos θ i'j cos θ j'i ) + I yz ( cos θ i'j cos θ j'k + cos θ i'k cos θ j'j ) + I xz ( cos θ i'k cos θ j'i + cos θi'i cos θ j'k ) I y'z' = I xx ( – cos θ j'i cos θ k'i ) + I yy ( cos θ j'j cos θ k'j ) + I zz ( – cos θ j'k cos θ k'k ) + I xy ( cos θj'i cos θ k'j + cos θ j'j cos θ k'i ) + I yz ( cos θ j'j cos θ k'k + cos θ j'k cos θ k'j ) + I xz ( cos θ j'k cos θk'i + cos θ j'i cos θ k'k ) I x'y' = I xx ( – cos θ k'i cos θ i'i ) + I yy ( cos θ k'j cos θ i'j ) + I zz ( – cos θ k'k cos θ i'k ) + I xy ( cos θk'i cos θ i'j + cos θ k'j cos θ i'i ) + I yz ( cos θ k'j cos θi'k + cos θ k'k cos θ i'j ) + I xz ( cos θ k'k cos θ i'i + cos θ k'i cos θ i'k ) We can define the new coordinate system in terms of translated axes, R x'' = R x' + d x' R y'' = R y' + d y' R z'' = R z' + d z' This can be integrated for the shifted x axis, 2 2 2 2 I x''x'' = ∫ ( Ry'' + Rz'' ) dm = ∫ ( ( Ry' + dy' ) + ( Rz' + dz' ) ) dm 2 2 2 2 ∴ = ∫ ( R y' + 2Ry'd y' + d y' + Rz' + 2R z'd z' + d z' ) dm 2 2 2 2 ∴ = ∫ ( Ry' + R z' ) dm + ∫ ( 2R y'd y' ) dm + ∫ ( 2R z'd z' ) dm + ∫ ( d y' + d z' ) dm 2 2 ∴ = I y'z' + 2mRM y' d y' + 2mRM z' d z' + ( d y' + d z' )m
  • 369. page 369 This eventually leads to, 2 2 I x''x'' = I x'x' + 2mR M y' dy' + 2mR M z' d z' + m ( d y' ) + m ( d z' ) 2 2 I y''y'' = I y'y' + 2mR M x' dx' + 2mR M z' d z' + m ( d x' ) + m ( d z' ) 2 2 I z''z'' = I z'z' + 2mRMx' d x' + 2mRMy' d y' + m ( d x' ) + m ( d y' ) I x''y'' = I x'y' + 2mR M x' dy' + 2mR M y' d x' + md x' d y' I y''z'' = I y'z' + 2mR My' d z' + 2mRMz' d y' + md y' d z' I x''z'' = I x'z' + 2mR Mx' d z' + 2mRMz' d x' + md x' d z' 12.3.2 Euler’s Equations of Motion • We can use Euler’s equations of motion to determine moments produced by angular veloci- ties and accelerations. ∑ MM ij x = I Mxx αx – ( I Myy – I Mzz )ω y ω z ∑ MM ij y = I Myy αy – ( I Mxx – I Mzz )ω x ω z ∑ MM ijz = I Mzz α z – ( I Mxx – I Myy )ω x ω y • These can be used to examine rotating three dimensional masses. Consider the following,
  • 370. page 370 F The disk and shaft shown are rotated at 2000 rpm, and there is an angular acceleration 2” 6” of 20 rev/(sec.sec.). The steel part is held in a cantilevered bearing that can be approximated 1” with the forces shown. 8” 8” F 1” 12.3.3 Impulses and Momentum • Momentum is a convenient alternative to energy in analysis of systems. 12.3.3.1 - Linear Momentum • momentum is defined as,
  • 371. page 371 t2 t2 ∫ F ( t ) dt = ∫ mA ( t ) dt = mV ( t 2 ) – mV ( t 1 ) = L ( t ) t1 t1 Impulse Momentum • If no external forces are applied, momentum remains constant (is conserved). In this case L is a constant. • An impulse is a force applied that will change momentum. 12.3.3.2 - Angular Momentum • Angular momentum is for rotating objects. The rotation about some center tends to make these equations a bit more complicated than linear momentum. • We can start to find this as a velocity times a distance of rotation, and this will lead to the eventual relationships, ∑ MM x = I Mxx α x – I Mxy αy – I Mxz α z + ω y H z – ω z H y ∑ MM y = – I Myx α x + I Myy α y – I Myz α z + ω z H x – ω x H z ∑ MM z = – I Mxzx α x – I Mzy α y + I Mzz αz + ω x H y – ω y H x • These equations show the angular momentum H, along with other familiar terms.
  • 372. page 372 12.4 DYNAMICS FOR KINEMATICS CHAINS • There are a variety of common methods, - Euler-Lagrange - energy based - Newton-Euler - D’Alembert’s equations 12.4.1 Euler-Lagrange • This method uses a Lagrangian energy operator to calculate torques L i ( θ i, ω i ) = K i – P i L ( θ, ω ) = ∑ Ki – ∑ Pi ----  ∂ L i – ∂ L i = Q i d- dt  ∂ ω i ∂ θi  where, L = lagrangian K = kinetic energy of link ‘i’ P = potential energy of link ‘i’ Q = forces and torques • For a typical link,
  • 373. page 373 T mi V Ci V Ci T K i = ---------------------- + ω i I i ω i - 2 where, m = mass of link i V = velocity of center of mass of link i omega = angular velocity of link i I = mass moment of inertia of link i T P i = m i g R Ci where, g = gravity vector R = displacement from base of robot to center of mass of link • If we have used matrices to formulate the problem, we use the Jacobian to find velocities. V Ci = J ( θ )ω ωi • Consider the example below,
  • 374. page 374 0.2m 1m TCP θ2 (xT, yT) 1m M links = 5kg I links = 10 θ1 M tool = 0.5kg I tool = 1 (xb, yb)
  • 375. page 375 12.4.2 Newton-Euler • We can sum forces and moments, and then solve the equations in a given sequence. ∑ Fi – mi Ai = 0 ∑ Mi – Ii ( αi + ωi ) 2 = 0 • These equations can be written in vector form, f i – 1 – fi + mi g – mi Ai = 0 where, f = forces between link i and i+1 A = acceleration of center of mass of link i n i – 1 – n i + r i, Ci × f i – r i – 1, Ci × f i – 1 – I i α i – ω i × ( I i × ω i ) = 0 where, f = forces between link i and i+1 A = acceleration of center of mass of link i • To do these calculations start at the base, and calculate the kinematics up to the end of the manipulator (joint positions, velocities and accelerations). Then work back from the end and find forces and moments. 12.5 REFERENCES Erdman, A.G. and Sandor, G.N., Mechanism Design Analysis and Synthesis, Vol. 1, 3rd Edi-
  • 376. page 376 tion, Prentice Hall, 1997. Fu, Gonzalez, and Lee, Shigley, J.E., Uicker, J.J., “Theory of Machines and Mechanisms, Second Edition, McGraw- Hill, 1995. 12.6 PRACTICE PROBLEMS 1. For the Stanford arm below, θ1 TOP VIEW FRONT VIEW r TCP θ2 d1 y (0,0,0) z x a) list the D-H parameters (Hint: extra “dummy” joints may be required) b) Find the forward kinematics using homogenous matrices. c) Find the Jacobian matrix for the arm. d) If the arm is at θ1 = 45 degrees, θ2 = 45 degrees, r = 0.5m, find the speed of the TCP if the joint velocities are θ’1 = 1 degree/sec, θ’2 = 10 degrees/sec, and r’ = 0.01 m/ sec.
  • 377. page 377 3. Robotics and Automated Manipulators (RAM) has consulted you about a new robotic manipulator. This work will include kinematic analysis, gears, and the tool. The robot is pictured below. The robot is shown on the next page in the undeformed position. The tool is a gripper (fin- ger) type mechanism. Tool The robot is drawn below in the undeformed position. The three positioning joints are shown, and a frame at the base and tool are also shown.
  • 378. page 378 θ1 x0 yT a z0 zT θ2 zT yT xT c b r xT y0 y x0 z0 0 The tool is a basic gripper mechanism, and is shown as a planar mechanism below. As the cylinder moves to the left the fingers close. f Finger d Pneumatic cylinder e g a) The first thing you do is determine what sequence of rotations and translations are needed to find the tool position relative to the base position.
  • 379. page 379 b) As normal, you decide to relate a cartesian (x-y) velocity of the gripper to joint velocities. Set up the calculation steps needed to do this based on the results in question #1. c) To drive the revolute joints RAM has already selected two similar motors that have a max- imum velocity. You decide to use the equations in question #2, with maximum specified tool velocities to find maximum joint velocities. Assume that helical gears are to be used to drive the revolute joints, specify the basic dimensions (such as base circle dia.). List the steps to develop the geometry of the gears, including equations. d) The gripper fingers may close quickly, and as a result a dynamic analysis is deemed neces- sary. List the steps required to do an analysis (including equations) to find the dynamic forces on the fingers. e) The idea of using a cam as an alternate mechanism is being considered. Develop a design that is equivalent to the previous design. Sketch the mechanism and a detailed displacement graph of the cam. f) The sliding joint ‘r’ has not been designed yet. RAM wants to drive the linear motion, without using a cylinder. Suggest a reasonable design, and sketch. 4. For an articulated robot, find the forward, and inverse kinematics using geometry, homog- enous matrices, and Denavit-Hartenberg transformations. 5. Assign Denavit-Hartenberg link parameters to an articulated robot.
  • 380. page 380 6. For the Stanford arm below, θ1 TOP VIEW FRONT VIEW r TCP θ2 d1 y (0,0,0) z x a) list the D-H parameters (Hint: extra “dummy” joints may be required) b) Find the forward kinematics using homogenous matrices. c) Find the Jacobian matrix for the arm. d) If the arm is at θ1 = 45 degrees, θ2 = 45 degrees, r = 0.5m, find the speed of the TCP if the joint velocities are θ’1 = 1 degree/sec, θ’2 = 10 degrees/sec, and r’ = 0.01 m/ sec. 7. Consider the forward kinematic transformation of the two link manipulator below. Given the position of the joints, and the lengths of the links, determine the location of the tool centre point using a) basic geometry, b) homogenous transforms, and c) Denavit-Hartenberg transforma- tions.
  • 381. page 381 Pw(x, y) L2 = 10” theta2 = 45 deg. L1 = 12” y x theta1 = 30 deg. a) For the robot described in question 1 determine the inverse kinematics for the robot. (i.e., given the position of the tool, determine the joint angles of the robot.) Keep in mind that in this case the solution will have two different cases. Determine two different sets of joint angles required to position the TCP at x=5”, y=6”. b) For the inverse kinematics of question #2, what conditions would indicate the robot posi- tion is unreachable? Are there any other cases that are indeterminate? 8 Find the dynamic forces in the system below,
  • 382. page 382 y AB rotates 20rad/s c.c.w. in the xy plane, there are ball joints at B and C, and the collar at D slides along the prismatic C shaft. What are the positions, velocities and accelerations of the links? 3” D B 40” A 6” E x 10” z 9. Examine the robot figure below and, a) assign frames to the appropriate joints.
  • 383. page 383 x z L4 y θ1 y l2 l3 L1 x z
  • 384. page 384 x z ANS. FT y y F3 x z y F1 y x x y z z F2 F0 x z b) list the transformations for the forward kinematics. ans. T 0, 1 = trans ( 0, L 1, 0 ) T 1, 2 = trans ( l 2, 0, 0 )rot ( z, 90° ) T 2, 3 = trans ( l 3, 0, 0 )rot ( z, – 90° + θ 1 ) T 3, T = trans ( L 4, 0, 0 )rot ( z, 90° )rot ( x, 90° ) c) expand the transformations to matrices (do not multiply).
  • 385. page 385 ans. 10 0 0 0 1 0 L1 T 0, 1 = 00 1 0 00 0 1 1 0 0 l2cos 90° sin 90° 0 0 T 1, 2 = 0 1 0 0 – sin 90° cos 90° 0 0 00 1 0 0 0 1 0 00 0 1 0 0 0 1 1 0 0 l3 cos ( – 90° + θ 1 ) sin ( – 90° + θ1 ) 0 0 T 2, 3 = 0 1 0 0 – sin ( – 90° + θ1 ) cos ( – 90° + θ 1 ) 0 0 0 0 1 0 0 0 10 0 0 0 1 0 0 01 1 0 0 L4 cos 90° sin 90° 0 0 1 0 0 0 T 3, T = 0 1 0 0 – sin 90° cos 90° 0 0 0 cos 90° sin 90° 0 0 0 1 0 0 0 1 0 0 – sin 90° cos 90° 0 0 0 0 1 0 0 0 1 0 0 0 1 10. Given the transformation matrix below for a polar robot, cos ( θ ) sin ( θ ) 0 r cos ( θ ) T 0, T = – sin ( θ ) cos ( θ ) 0 r sin ( θ ) 0 0 1 0 0 0 0 1 a) find the Jacobian matrix.
  • 386. page 386 ans. d- ∂x ∂x d- d- ---- x ---- r ---- r dt = ∂ r ∂ θ dt = cos ( θ ) – r sin ( θ ) dt d- ∂y ∂y d- sin ( θ ) r cos ( θ ) ---- θ d- ---- y ---- θ dt ∂r ∂θ dt dt b) Given the joint positions, find the forward and inverse Jacobian matrices. θ = 30° r = 3in ans. J = cos ( 30° ) – 3 sin ( 30° ) = 0.866 –1.5 sin ( 30° ) 3 cos ( 30° ) 0.5 2.598 –1 0.866 0.5 J = – 0.167 0.289 c) If we are at the position below, and want to move the tool at the given speed, what joint velocities are required? ---- x = – 1 in d- ---- y = 2 in ---- - d- ---- - dt s dt s ans. d- ---- r dt = 0.866 0.5 – 1 = 0.134 d – 0.167 0.289 2 0.745 ---- θ - dt 11. Examine the robot figure below and, a) assign frames to the appropriate joints.
  • 387. page 387 θ1 x0 xT a z0 zT yT yT θ2 zT xT c b r y0 y x0 z0 0 b) list the transformations for the forward kinematics. c) expand the transformations to matrices (do not multiply). 12. Given the transformation matrix below for a polar robot, cos ( θ 1 + θ2 ) sin ( θ 1 + θ 2 ) 0 cos θ 1 + 1.2 cos ( θ 1 + θ 2 ) T 0, T = – sin ( θ 1 + θ 2 ) cos ( θ 1 + θ 2 ) 0 sin θ 1 + 1.2 sin ( θ 1 + θ 2 ) 0 0 1 0 0 0 0 1 a) find the Jacobian matrix. b) Given the joint positions, find the forward and inverse Jacobian matrices. θ 1 = 30° θ1 = 40° c) If we are at the position below, and want to move the tool at the given speed, what joint velocities are required?
  • 388. page 388 ---- x = – 1 in d- ---- y = 2 in ---- - d- ---- - dt s dt s 13. Find the forward kinematics for the robots below using homogeneous and Denavit- Hartenberg matrices. y y y x x x y y x x 14. Use the equations below to find the inverse Jacobian. Use the inverse Jacobian to find the joint velocities required at t=0.5s. x = 4 cos ( θ 1 ) + 6 cos ( θ1 + θ 2 ) in. y = 4 sin ( θ1 ) + 6 sin ( θ 1 + θ 2 ) in.
  • 389. page 389 ANS. First, find tool and joint positions, 3 2 P ( 0.5 ) = 3 + ( – 2t + 3t ) 5 = 5.5 5 2 6 α = atan  ------  2 2 6- r = 5.5 + 6  5.5 2 2 2 r – (4 + 6 ) ∴θ 2 = 180 – acos  -------------------------------- 2 2 2 · · r = 4 + 6 – 2 ( 4 ) ( 6 ) cos ( 180 – θ 2 )  –2 ( 4 ) ( 6 )  - sin ( θ 1 – α ) sin ( 180 – θ 2 ) 6 sin ( 180 – θ 2 ) ∴θ 1 = asin  -----------------------------------  + α · --------------------------- = -------------------------------- - - - 6 r  r  Next, the Jacobian, – 4 sin ( θ 1 ) – 6 sin ( θ 1 + θ 2 ) – 6 sin ( θ 1 + θ 2 ) J = 4 cos ( θ 1 ) + 6 cos ( θ1 + θ 2 ) 6 cos ( θ1 + θ 2 ) Substitute and solve d θ –1 ---- 1 = J 7.5 - dt θ 3 2
  • 390. page 390 13. MOTION CONTROL 13.1 KINEMATICS • A robot must be able to map between things that it can control, such as joint angles, to the position of the tool in space. • Describing the position of the robot in terms of joint positions/angles is Joint Space. • Real space is often described with a number of coordinate systems, - cartesian - polar - spherical • Positions can also be specified with respect to the robot base (Robot Coordinates), or glo- bally (World Coordinates). 13.1.1 Basic Terms link/joint coordinates tool coordinates base coordinates • Robot base coordinates don’t move and are often used to specify robot tool position and ori- entation. (centre of the robots world)
  • 391. page 391 • Link/Joint Coordinates - specify where joints, endpoints or centers are located. • Tool coordinates - determine where the tool is and what orientation it is in. • World Coordinates - relates various robots to other robots and devices. • Coordinate transformation - Can map from one set of coordinates to another. Most common method is matrix based. One special case of this is the Denavit-Hartenrberg transformation. 13.1.2 Kinematics 0.2m 1m TCP theta2 (xT, yT) (x1,y1) 1m Note: When defining angles is is more convenient to indicate the positive direc- tion and origin (as shown with the solid theta1 (xb, yb) line for ‘theta 2’). With more classical sketching we would use the dashed line, • Forward kinematics involves finding the endpoint of the robot (xT, yT) given the joint coor- dinates (theta1, theta2) • There a number of simple methods for finding these transformations,
  • 392. page 392 - basic geometry - transformation matrices - Denavit-Hartenberg transformations 13.1.2.1 - Geometry Methods for Forward Kinematics • For simple manipulators (especially planar ones) this method is often very fast and efficient. • The method uses basic trigonometry, and geometry relationships. • To find the location of the robot above, we can see by inspection,
  • 393. page 393 x T = x b + l 1 cos θ 1 + ( l 2 + 0.2 ) cos ( θ 1 + θ 2 ) y T = y b + l 1 sin θ 1 + ( l 2 + 0.2 ) sin ( θ1 + θ 2 ) often set to zero The general form of the operation is as below, ( θ 1, θ 2, … ) → ( x T, y T, z T, θ Tx, θT y, θ Tz ) ASIDE: later we will see that the opposite operation maps from tool coordinates, and is called the inverse kinematics. ( θ 1, θ 2, … ) ← ( x T, y T, z T, θT x, θ Ty, θ Tz ) Also note that the orientation of the tool is included, as well as position, therefore for the example, θ Tx = 0 θTy = 0 θ Tz = θ1 + θ 2 • The problem with geometrical methods are that they become difficult to manage when more complex robots are considered. This problem is overcome with systematic methods. 13.1.2.2 - Geometry Methods for Inverse Kinematics • To find the location of the robot above, we can see by inspection,
  • 394. page 394 Inverse kinematics maps from the tool coordinates to the joint coordinates. ( θ 1, θ 2, … ) ← ( x T, y T, z T, θT x, θ T y, θ Tz ) • Mathematically this calculation is difficult, and there are often multiple solutions. 13.1.3 Modeling the Robot • If modeling only one link in motion, the model of the robot can treat all the links as a single moving rigid body,
  • 395. page 395 θ, ω, α CG, M, J • If multiple joints move at the same time, the model becomes non-linear, in this case there are two approaches taken, 1. Develop a full non-linear controller (can be very complicated). 2. Develop linear approximations of the model/control system in the middle of the normal workspace. 13.2 PATH PLANNING • Basic - “While moving the robot arm from point A to B, or along a continuous path, the choices are infinite, with significant differences between methods used.” 13.2.1 Slew Motion • The simplest form of motion. As the robot moves from point A to point B, each axis of the manipulator travels as quickly as possible from its initial position to its final position. All axis begin moving at the same time, but each axis ends it motion in a length of time that is proportional to the product of its distance moved and its top speed (allowing for acceleration and deceleration) • Note: slew motion usually results in unnecessary wear on the joints and often leads to unan-
  • 396. page 396 ticipated results in the path taken by the manipulator. • Example - A three axis manipulator with revolute joints starts with joint angles (40, 80, - 40)degrees, and must move to (120, 0, 0)degrees. Assume that the joints have maximum absolute accelerations/decelerations of (50, 100, 150) degrees/sec/sec, and the maximum velocities of (20, 40, 50) degrees/sec. Using slew motion, what is the travel time for each joint? Joint angle (degrees) 180 90 time(sec) θ3 θ2 -90 θ1 Joint velocity (degrees/sec) ω max αmax t acc t max t dec
  • 397. page 397 The area under the velocity curve is the distance (angle in this case) travelled. First we can determine the distance covered during acceleration, and deceleration and the time during acceleration, and deceleration. ω max t acc = t dec = ----------- =  20, -------- , -------- = ( 0.4, 0.4, 0.333 )sec. - - 40- 50- αmax  ----- 100 150 50 t acc ω max.vel. θ acc. = θdec. = --------------------------- =  0.4 ( 20 ), 0.4 ( 40 ), 0.333 ( 50 ) = ( 4, 8, 8.33 )deg. - ----------------- ----------------- ----------------------- - - - 2  2 2 2  The next step is to examine the moves specified, θ move = θ end – θ start = ( 120 – 40, 0 – 80, 0 – ( – 40 ) ) = ( 80, – 80, 40 )deg. Remove the angles covered during accel./deccel., and find the travel time at maximum velocity. θ move – 2θ acc 80 – 2 ( 4 ) 80 – 2 ( 8 - 40 – 2 ( 8.333 ) ) t max = ---------------------------------- =  ---------------------- , ---------------------- , --------------------------------  -  - - ω max 20 40 50 t max = ( 3.6, 1.6, 0.46668 )sec. Note: below zero the speeds will never reach maximum velocity t total = t acc + t max + t dec = ( 4.4, 2.4, 1.13 )s before starting to decelerate. 13.2.1.1 - Joint Interpolated Motion • Similar to slew motion, except all joints start, and stop at the same time. In the last example for slew motion, all of the joints would have moved until all stopping simultaneously at 4.4 sec- onds. • This method only demands needed speeds to accomplish movements in least times. 13.2.1.2 - Straight-line motion
  • 398. page 398 • In this method the tool of the robot travels in a straight line between the start and stop points. This can be difficult, and lead to rather erratic motions when the boundaries of the work- space are approached. • NOTE: straight-line paths are the only paths that will try to move the tool straight through space, all others will move the tool in a curved path. • The basic method is, 1. Develop a set of points from the start and stop points that minimize acceleration. 2. Do the inverse kinematics to find the joint angles of the robot at the specified points. • Consider the example below,
  • 399. page 399 Given, P 0 = ( 5, 5, 5 )in. P 1 = ( – 5, – 5, 5 ) t0 = 0 t1 = 2 d- d- ---- P 0 = ( 0, 0, 0 ) ---- P 1 = ( 0, 0, 0 ) dt dt Model the path with a function that allows acceleration/deceleration, in this case a third order polynomial will be used. The equation will be parameterized for sim- plicity (i.e., s = [0,1], where s=0 is the path start, and s=1 is the path end). P ( t ) = P0 + ( P1 – P 0 )s ( t ) d- d- s ( t0 ) = 0 s ( t1 ) = 1 ---- s ( t 0 ) = 0 ---- s ( t 1 ) = 0 dt dt 3 2 d- s ( t ) = At + Bt + Ct + D 2 ---- s ( t ) = 3At + 2Bt + C dt Next, numerical values will be entered to find equation values 3 2 s(0) = A(0) + B(0 ) + C(0) + D = 0 ∴D = 0 3 2 s(2) = A(2) + B(2 ) + C(2) + D = 1 ∴8A + 4B = 1 d- ---- s ( 0 ) = 3A ( 0 ) + 2B ( 0 ) + C = 0 ∴C = 0 dt ∴ – -- A = B d- 3 ---- s ( 2 ) = 3A ( 2 ) + 2B ( 2 ) + C = 0  2 - dt 8A + 4  – -- A = 1 3 1 3 - ∴A = -- - ∴B = – -- -  2 2 4 This can now be put in the final form, 3 P ( t ) = P 0 + ( P 1 – P 0 )  --- – 3 t  t- 2 -- - 2 4 
  • 400. page 400 13.2.2 Computer Control of Robot Paths (Incremental Interpolation) • Path Planning is a simple process where the path planning methods described before (such as straight line motion) are used before the movement begins, and then a simple real-time lookup table is used. • The path planner puts all of the values in a trajectory table. • The on-line path controller will look up values from the trajectory table at predetermined time, and use these as setpoints for the controller. • The effect of the two tier structure is that the robot is always shooting for the next closest ‘knot-point’ along the path.
  • 401. page 401 Desired configuration Set point Off-line Trajectory table Current table Kinematic path Transforms Configuration planning Done before motion begins Done during motion, and all other times Time based interrupt Servo motor routine runs routine for each axis Interrupt Choose new Clock point from trajectory table Read θ desired Set-point table θ desired Compute error Output actuator Return signal • The above scheme leads to errors between the planned, and actual path, and lurches occur when the new setpoints are updated for each servo motor.
  • 402. page 402 speed actual position trajectory table time trajectory table time step position required actual time • The quantization of the desired position requires a decision of what value to use, and this value is fixed for a finite time. • The result is that the path will tend to look somewhat bumpy,
  • 403. page 403 The desired path tends to deviate from the points in the trajectory table, and the tool tends to follow a path like In this case an that pictured below. Moreover this scheme extra step is will lead to uneven acceleration over added to knot 5 end compensate for the path segments knot 4 the position errors Path segments knot 3 knot 2 knot 1 start **Note: this occurs with straight-line motion also 13.3 PRACTICE PROBLEMS 1. a) A stepping motor is to be used to actuate one joint of a robot arm in a light duty pick and place application. The step angle of the motor is 10 degrees. For each pulse received from the pulse train source the motor rotates through a distance of one step angle. i) What is the resolution of the stepper motor? ii) Relate this value to the definitions of control resolution, spatial resolution, and accu- racy, as discussed in class. b) Solve part a) under the condition that the three joints move at different rotational veloci- ties. The first joint moves at 10 degrees/sec., the second joint moves at 25 degrees/sec, and the third joint moves at 30°/sec. 2. A stepping motor is to be used to drive each of the three linear axes of a cartesian coordi- nate robot. The motor output shaft will be connected to a screw thread with a screw pitch of 0.125”. It is desired that the control resolution of each of the axes be 0.025” a) to achieve this control resolution how many step angles are required on the stepper motor?
  • 404. page 404 b) What is the corresponding step angle? c) Determine the pulse rate that will be required to drive a given joint at a velocity of 3.0”/ sec. 3. For the stepper motor of question 6, a pulse train is to be generated by the robot controller. a) How many pulses are required to rotate the motor through three complete revolutions? b) If it is desired to rotate the motor at a speed of 25 rev/min, what pulse rate must be gen- erated by the robot controller? 4. A stepping motor is to be used to actuate one joint of a robot arm in a light duty pick and place application. The step angle of the motor is 10 degrees. For each pulse received from the pulse train source the motor rotates through a distance of one step angle. a) What is the resolution of the stepper motor? b) Relate this value to the definitions of control resolution, spatial resolution, and accu- racy, as discussed in class. 5. Find the forward kinematics for the robots below using geometry methods. y y y x x x y y x x 6. Consider the forward kinematic transformation of the two link manipulator below.
  • 405. page 405 Pw(x, y) L2 = 10” theta2 = 45 deg. L1 = 12” y x theta1 = 30 deg. a) Given the position of the joints, and the lengths of the links, determine the location of the tool centre point using basic geometry. b) Determine the inverse kinematics for the robot. (i.e., given the position of the tool, determine the joint angles of the robot.) Keep in mind that in this case the solution will have two different cases. c) Determine two different sets of joint angles required to position the TCP at x=5”, y=6”. d) What mathematical conditions would indicate the robot position is unreachable? Are there any other cases that are indeterminate? 7. Find a smooth path for a robot joint that will turn from θ= 75° to θ = -35° in 10 seconds. Do this by developing an equation then calculating points every 1.0 seconds along the path for a total motion time of 10 seconds.
  • 406. page 406 ans. 3 2 θ ( t ) = At + Bt + Ct + D θ ( 0 ) = 75 θ ( 10 ) = – 35 d- 2 d- d- ---- θ ( t ) = 3At + 2Bt + C ---- θ ( 0 ) = 0 ---- θ ( 10 ) = 0 dt dt dt Solving 3 2 75 = A ( 0 ) + B ( 0 ) + C ( 0 ) + D 3 2 – 35 = A ( 10 ) + B ( 10 ) + C ( 10 ) + D 2 0 = 3A ( 0 ) + 2B ( 0 ) + C 2 0 = 3A ( 10 ) + 2B ( 10 ) + C For A, B, C, D we get 3 2 θ ( t ) = ( 0.22 )t + ( – 3.3 )t + ( 75 ) t (sec) theta(t) 0 75 1 71.92 2 63.56 3 51.24 4 36.28 5 20 6 3.72 7 -11.24 8 -23.56 9 -31.92 10 -35 8. A jointed arm robot has three rotary joints, and is required to move all three axes so that the first joint is rotated through 50 degrees; the second joint is rotated through 90 degrees, and the third joint is rotated through 25 degrees. Maximum speed of any of these rotational joints is 10 degrees/sec. Ignore effects of acceleration and deceleration and, a) determine the time required to move each joint if slew motion (joint motion is indepen- dent of all other joints) is used.
  • 407. page 407 b) determine the time required to move the arm to a desired position and the rotational velocity of each joint, if joint interpolated motion (all joints start and stop simulta- neously) is used. c) Solve question 4 under the condition that the three joints move at different rotational velocities. The first joint moves at 10 degrees/sec., the second joint moves at 25 degrees/sec, and the third joint moves at 30°/sec. 9. Consider the following motion planning problem. a) A jointed arm robot has three rotary joints, and is required to move all three axes so that the first joint is rotated through 50 degrees; the second joint is rotated through 90 degrees, and the third joint is rotated through 25 degrees. Maximum speed of any of these rotational joints is 10 degrees/sec. Ignore effects of acceleration and decel- eration and, b) determine the time required to move each joint if slew motion (joint motion is indepen- dent of all other joints) is used. c) determine the time required to move the arm to a desired position and the rotational velocity of each joint, if joint interpolated motion (all joints start and stop simulta- neously) is used. 10. We are designing motion algorithms for a 2 degree of freedom robot. To do this we are developing sample calculations to explore the basic process. a) We want to move the tool in a straight line through space from (3”, 5”) to (8”, 7”). Develop equations that will give a motion that starts and stops smoothly. The motion should be complete in 1 second. ANS. 3 2 P ( t ) = 3 + ( – 2t + 3t ) 5 5 2 b) Find the velocity of the tool at t=0.5 seconds. ANS. d ---- P ( t ) = 7.5 - dt 3
  • 408. page 408 c) Plot out the tool position, joint positions and velocities as functions of time. 11. Why do robots not follow exact mathematical paths? 12. We are designing motion algorithms for a 2 degree of freedom robot. To do this we are developing sample calculations to explore the basic process. We want to move the tool in a straight line through space from (8”, 7”) to (3”, 5”). Develop equations that will give a motion that starts and stops smoothly. The motion should be complete in 2 seconds. Show all derivations. 13. 13.4 LABORATORY - AXIS AND MOTION CONTROL Purpose: To . Overview: . Pre-Lab: To be determined. In-Lab: 1. To be determined. Submit (individually): 1. To be determined.
  • 409. page 409 14. CNC MACHINES • Computer Numerical Control machines use a computer to guide a process that might other- wise be done manually. 14.1 MACHINE AXES 14.2 NUMERICAL CONTROL (NC) • The use of numerical data to drive a machine for processes such as, - milling - turning - drilling - grinding - shot peening - tube bending - flame cutting - automated knitting machines - automatic riveting - etc. • Basic components of NC systems, - program - controller unit - machine tool • Most suited to, - parts are processed frequently in small lot sizes - complex part geometry - close tolerances on workpart - many operations on part in processing - large amounts of metal to be removed - engineering design will possibly change - parts that are too expensive for mistakes
  • 410. page 410 • The methods for developing NC programs include, - manual part programming - computer-assisted part programming - computer generated programs • The manual and computer aided methods use various NC programming languages, - APT (Automatically Programmed Tools) - AUTOSPOT (Automatic System for Positioning Tools) - SPLIT (Sundstrand Processing Language Internally Translated) - COMPACT II - ADAPT (ADaptation of APT) - EXAPT (Extended Subset of APT) - UNIAPT • These languages are used by a parts programmer to define the motion of the cutting tool. • The languages may be preprocessed, and then used for a number of various control types, such as, - punched paper tape - Computer Numerical Control (CNC) - Direct Numerical Control (DNC) • The automatic methods work with geometry created in a CAD program. 14.2.1 NC Tapes • NC Programs are preprocessed on computers, and punched onto paper or mylar tapes. • Simple NC machines can use a tape reader to direct the machine. • Problems, - required storage, transportation, and manual loading of NC tapes - has to reread the tape for each new part - tapes tend to wear, and become dirty, thus causing misreadings
  • 411. page 411 - the readers are slow, and can cause ‘dwell marks’ on complex pieces - the mechanical parts in the readers reduced reliability - testing had to be done on the NC machine - no program editing abilities (increased lead time) • The end of tapes was the result of two competing developments - DNC used remote computers to replace tape readers, these were displaced in most cases by CNC - CNC allowed the use of a local computer to overcome problems with tapes, and the problems with distant computers. While CNC was used to enhance tapes for a while, they eventually allowed the use of other storage media, and currently pro- gram transfer media are not required. 14.2.2 Computer Numerical Control (CNC) • A computer controller is used to drive an NC machine directly. • Characteristics are, - controls a single machine - located very close to machine tool - allows storage/retrieval/entry of NC programs without preprocessing of NC code • Advantages of CNC, - program is only entered into memory once, so it is more reliable - the programs can be tested and altered at the machine - increased flexibility and control options on the local computer - easy to integrate into FMS systems • The Background, - the problems with NC tapes were approached using DNC networks - the communication problems with DNC systems became obvious, and local computers were added to act as tape readers which would read tapes once, and play them back to the NC machine indefinitely - CNC controllers began using other storage media like magnetic tapes, and floppy disks - CNC now offers features like, - local programming, - communication over interfaces, - hard disk storage, - program simulation
  • 412. page 412 - etc. • ASIDE: Direct Numerical Control is similar to CNC, except a remote computer is used to control a number of machines. This gives the advantage of more computer power. This approach is no longer popular, as the dropping cost of computers offsets any advantages. • Some companies use proprietary NC Languages, such as the example of DYNA Mill NC code shown later • These machines are often programmed by downloading NC code from a computer, or man- ually programming the controller computer. • Future trends involve, - adaptive feed rates to increase speeds as the metal removal rate varies - tool wear detection - 14.2.3 Direct/Distributed Numerical Control (DNC) • Uses a few methods, - the oldest methods used modems, and a mainframe which emulated a tape reader, to con- trol the NC machine (no storage) - a more recent advance used a local computer which acts as a storage buffer. Programs are downloaded from the main DNC computer, and then the local controller feeds instructions to the hardwired NC machine, as if they have been read from tape. - the newer methods use a central computer which communicates with local CNC comput- ers (also called Direct Numerical Control) • DNC controllers came before CNC machines, but as computer technology improved it became practical to place a computer beside the NC machine, and DNC changed in form. • Characteristics of modern DNC systems are, - uses a server (with large storage capacity) to store a large number of part programs
  • 413. page 413 - the server will download part programs on demand to local machines - may have abilities to, - display and edit part programs - transmit operator instructions and other data needed at the machines - collect and process machine status information for management purposes • Advantages are, - eliminates the need for NC tapes (the advantages are obvious) - design changes are immediate - NC programs may be edited quickly - can be used to support an FMS system - increase efficiency of individual machine tools - more shop up-time than with stand alone machines - simplifies implementation of group technology, computer aided process planning, and other CIM concepts - reduces peripheral costs with NC tapes • A Brief History, • Mid 60’s - concept proved by Cincinnati Milacron and G.E. - telephone links used to send instructions from large computers to hard wired NC machines. Basically replaced a tape reader. • 1970 - several commercial DNC systems announced. • Mid 70’s - Aerospace companies used DNC because of the large number of distributed machines in their facilities. • Initial resistance to DNC technology was (previously) based on, - high cost of computer hardware - the number of machines which could be controlled by one computer was limited - computer software was limited for maintenance, scheduling, control, and data collection - a backup computer was usually required - was hard to justify on the basis of downloading parts programs • when downloading programs there are two popular opinions, - a program should only be downloaded in part, this accommodates easy engineering changes in a real-time environment. - many programs should be downloaded to the local controller to provide protection against system failure, and eliminating the cost of real-time response in the DNC central computer.
  • 414. page 414 14.3 EXAMPLES OF EQUIPMENT • The number of NC machines available commercially will be well into the thousands. 14.3.1 EMCO PC Turn 50 • This is a small desktop lathe capable of turning parts in metal. • The basic physical specifications are, Cutting Volume radial travel 48mm rad. axial travel 228mm Max. Holding Vol- radial 30-65mm ume axial 300mm 12mm by 12mm Max. Tool Size max 80mm dia. Chuck 130-3000 rpm Spindle 0.001mm Resolution 0-750 mm/min Feed <=600N below 500mm/min Feed Force 100/110/230VAC, 0-6KVA Power 840 by 695 by 345 mm • The basic sequence of operations for this machine are, 1. Unpack components. 2. Connect devices to power, air supply, and attach interface cables.
  • 415. page 415 3. Install RS-485 card in PC. 4. Install software. 5. Test basic system (Done initial setup here). 6. Start and initialize lathe and PC with software. 7. Setup tools for new job. Find zero positions/offsets, and enter values for turret. 8. Load NC code. 9. Simulate program. 10. Load stock and close automatic chuck. 11. Close door. 12. Run program on Lathe. 13. Open door and open chuck. 14. If cutting a similar part go to step 8, if doing a new setup go to step 7. 14.3.2 Light Machines Corp. proLIGHT Mill • This is a small desktop lathe capable of turning parts in metal. • The basic physical specifications are,
  • 416. page 416 Cutting Volume Max. Holding Volume Max. Tool Size Spindle 200-5000 rpm Resolution Feed 50ipm x,y and 40ipm z Feed Force Power Dimensions Weight Controller IBM compatible computer Control Interface IBM compatible computer Programming G-Codes and Dos software Spindle 1 H.P. • The basic sequence of operations for this machine are, 1. Unpack components. 2. Connect devices to power, air supply, and attach interface cables. 3. Install software. 4. Test basic system (Done initial setup here). 5. Start and initialize mill and PC with software. 6. Setup tool for new job. Find zero position/offset. 7. Load NC code. 8. Simulate program. 9. Run program on Mill. 10. If cutting a similar part go to step 7, if doing a new setup go to step 6.
  • 417. page 417 14.4 PRACTICE PROBLEMS 1. 14.5 TUTORIAL - EMCO MAIER PCTURN 50 LATHE (OLD) • The lathe is shipped with software that is meant to emulate shop floor interfaces. We don’t have the standard keyboard, so we need to use special key stroke sequences on the PC keyboard. • Procedure: 1. Connect the air supply to the lathe and make sure that the regulator on the lathe is between 25 and 75 psi - 50 psi is good. Ensure that the lath is connected to the PC with the DNC cable. The computer card must also have a terminator on the second connector - this is an empty connector. Turn on the lathe, and the PC. 2. Once the PC is booted, run the emco control software. The screen may come up with warnings. If these warnings don’t disappear when you hit ‘ESC’ call the instructor. 3. First we must zero the lathe. To do this first hit ‘F1’ and then ‘F7?-ZRN’. A small label ‘ZRN’ should appear near the bottom of the screen. Press ‘4’ on the number pad of the keyboard - the lathe should move in the ‘x’ direction. Next, press ‘8’ on the keyboard, the lathe should move in the ‘z’ direction. After all motion has stopped the lathe is calibrated, and it will be put in jog mode. 4. You can move the lathe with the keys on the number pad as well as perform other func- tion. 4 - move carriage left 6 - move carriage right 2 - cross slide out 8 - move cross slide in <SFT>7 - turn spindle on <SFT>6 - turn spindle off <SFT>2 - turn on/off chip blower <SFT>1 - turn tool turret +/- - increase/decrease feed 5. You can now put the mill in MDI mode by pressing ‘F1’ then ‘F6?-MDI’. Push the door open and hold it for a second, it will then stay open. Clear the error on the screen with ‘ESC’ and press <SFT>~ the chuck should open and close. Mount a work piece and then close the door.
  • 418. page 418 6. Put the computer in program mode ---------------- 14.6 TUTORIAL - PC TURN 50 LATHE DOCUMENTATION: (By Jonathan DeBoer) • SETUP: The lathe is controlled by a computer through an RS485 port. RS485 is a serial data bus that can be chained from one device to another and must be terminated. The controlling computer must be running Windows 3.1 or 3.11 and must have the RS485 card installed. Windows 95 will not get along with the interface card, and the soft- ware refuses to use an RS232 port with an RS485 adapter. The machine should have as few peripherals as possible; if one device happens to use any of the IRQs/ DMAs/IO ports as the RS485 card, there will be problems. So remove sound cards, extra interface cards, etc. The RS485 card has two DB9F connectors on the back, plug the cable from the lathe in one and a terminator in the other. Install WinNC (the control software) under Windows 3.1. There are two disks; the installer and a machine data disk. The lathe needs to be plugged in to the computer, to a power outlet (of course), and to an air supply at 50-75 psi (less than 50 and there isn't enough pressure to open the door). A pressure gauge is on the left side of the machine, all plugs/etc are on the right. • POWER ON/OFF: To Turn On: Turn on the computer and machine. To turn on the machine, turn the key on the right side. On the computer, launch Windows if neccisary. Once windows is running, launch WinNC. Make sure NumLock is on before launching WinNC. WinNC will then establish communication with the machine. To Turn Off: To just shut off the lathe but not the computer, just turn the key on the lathe. An error will come up in WinNC indicating it lost RS485 communication. Not to worry; when the lathe is turned back on later, hit ESC and the error will go away. To turn off both, exit WinNC by hitting Alt-F4 and then exit Windows. Then Simply switch off both the machine and the computer. • OPERATION: Some notes: The EMCO software is distinguished by having the most counter-intuitive, unnatu- ral, information-withholding, and ornery interface known to man. Most techni- cal references available are in German. The software periodically pops up error messages for minor and major errors.
  • 419. page 419 Errors can be dismissed by pressing ESC. If they don't go away, there is a prob- lem that needs to be looked into. At the bottom of the screen is a menu of options you can select with the F3-F7 keys. This is called the "softkey list" by the Emco documentation, and will henceforth be referred to as the "menu". A note on coordinates: The X axis is into/out of the material. X = 0 should be the center of rotation. As long as X is a positive value, moving along X in the positive is moving the tool out of the material and away from center. Moving along X in the negative is moving into the material and toward center. The Z axis is along the length of the part (along the axis of rotation). Moving along Z in the negative direction is moving toward the spindle head (to the left, facing the machine). Moving along Z in the positive direction is moving away from the spindle head (to the right, facing the machine). Modes: The software is ruled by modes. What mode the software is in determines what it can do and what it displays. If something doesn't work or doesn't look right, check what mode the software is in. Remember operational modes are set independently of display modes. The operational mode can be EDIT but pro- grams cannot be edited until the view mode is set to PRGRM, and vice versa. Hit F1 to get a menu of operational modes: ZRN mode is used for zeroing the tool position. This should be done the first thing after the machine is turned on. JOG is used for manual control of the lathe. MDI is used for changing tools, opening chuck, etc. (actually, you can do all this with JOG) EDIT is used for editing, loading, and exporting programs. AUTO is used for running programs. Hit F12 to get display modes: Note: when you switch view modes, the menu changes. The default is ALARM mode, which displays operator messages and alarms. Hit F3 to display alarms, F5 to display operator messages. POS mode displays positions. Hit F3 to display the current absolute posi- tion, F4 for the current relative position, and F5 for a variety of details. PRGRM mode displays the program. Hit F3 to display the program code, hit F4 for a list of all the programs available. If the operational mode is EDIT, you can also edit the code when you hit F3 OFFSET is used for displaying and changing offset values. Hit F3 for wear adjustment and F4 for geometry. These are both parameters for tools. Data for up to 16 tools can be stored at once. Hit F5 for work shift. This is how the working reference point is set. See below. PARAM is used for changing setup parameters and viewing system infor- mation. Hit F3 for setup see below for details. Hit F4 for diagnostics on the RJ485 port and the software version.
  • 420. page 420 GRAPH is used to simulate output with a graph The fact that all these modes must share the menu can cause confusion. Remember that if you should be seeing a menu and you aren't, the menu you are looking for may be "behind" the one you are seeing. For exam- ple, when you switch to a display mode, you should see the menu for that display mode. If you hit F1, that menu is "covered up" by the menu to select an operational mode. Once you select something from that menu, you will see the view mode's menu again. Keyboard control: Note on keyboard control: Many of the keys outlined in the manual are for Ger- man keyboards only and are mapped differently on US keyboards. Use this as reference, NOT the manual: Alt-F4 - Exit ESC - Dismiss error message F1 - mode menu F3 thru F7 - select item from current menu F11 - scroll through menus when they are too wide to fit on the screen (like the MORE key on a Ti-85 calculator) F12 - function key menu Ctrl- - open/close chuck (must not be in EDIT mode, door must be open) Ctrl-] - open/close door (spindle must be off) Ctrl-1 - change tool (must not be in EDIT or ZRN mode, door must be closed) Ctrl-2 - Turn on/off blower Ctrl-6 - Turn off spindle (JOG mode) Ctrl-7 - Turn on spindle (JOG mode, door must be shut) arrows - move cursor in the editor on the numeric keypad: 4 - move -Z in JOG mode, or zero Z axis in ZRF mode 6 - move +Z in JOG mode, or zero Z axis in ZRF mode 2 - move -X in JOG mode, or zero X axis in ZRF mode 8 - move +X in JOG mode, or zero X axis in ZRF mode 5 - zero both axis in ZRF mode Parameter setup: There are several screens of setup parameters, you can scroll through the pages with the up and down arrow keys and set these parameters: On the first page: INCH =: Sets the unit system. Hit 0 for metric (mm), hit 1 for English (inches) I/O =: Sets the device for I/O (exporting programs, etc). Hit 1 or 2 for COM port 1 or 2. Hit A for the a: drive (root directory). Hit B for B drive (root directory). Hit C for the hard drive, the c:WinNCfan0.tprg directory, or whatever is specified as the path. On the third page:
  • 421. page 421 Baudrate, data bits, stop bits, etc. can be set up for the COM ports On the sixth page: GEAR =: Sets the gear for the spindle. See the manual. PATH =: Sets the working path, the default is c:WinNCfan0.tprg. It would be wise not to change this. • REFERENCE POINTS: Setting the working reference point (that is, setting 0,0): The working reference point is the point that your programs will consider to be 0,0 and should be placed at the center of the point where the part enters the jaws of the chuck. The working reference point is defined in terms of the machine refer- ence point. The machine reference point is the center of the face of the spindle head. This is the center of the point where the chuck is fastened to the spindle head, NOT the face of the chuck. The X zero reference is already at the center of rotation. Don't change it. To set the Z zero reference, do this: Hit F12 and select POS view mode. Hit F3 in the POS view mode to select absolute view. Hit F1 and select JOG mode Now, move the tool holder so that it's left edge is at the point which should be 0 in the Z direction. If you want zero to be the first point of the material that is out of the jaws of the chuck, VERY CAREFULLY move the tool holder (NOT the tool)so that it is just touching the jaws of the chuck. The manual suggests using a piece of paper. Place a sheet of paper between the tool holder and the jaws of the chuck. When the sheet of paper is pinched between the two and can't move, stop moving the tool holder. Look at the value for Z on the screen, it would be wise to write it down on a sheet of scrap paper. Hit F12 and select OFFSET mode. Hit F5 for work shift. Type the negative of the value for Z you wrote down as a Z code. That is, type "Z" followed by "-" followed by the value you wrote down. Your zero reference has been set. however, you still need to calibrate the tools. Tool offset setup: Tools must be matched with tool properties in programs. You can have as many as 16 sets of tool properties, and the PC Turn 50 has three tool holders. Thus, a command in a program to change tools should be of the form "T0316" where T is the command to change tools, the first two numbers are the tool to switch to, and the second two numbers are the tool offset description to use. To get the Z offset: Hit F1 and select JOG mode. Having gotten the Z zero reference, rotate the tool into position and then move the tool to the zero position just as the tool holder was moved to the zero position when setting the zero reference.
  • 422. page 422 Hit F12 and select OFFSET mode. Hit F4 for Geometry settings. Properties for up to 16 tools can be stored at once, and are listed on this screen. Use the arrow keys to move the cursor to the tool description number 1-16 that the X offset is to be stored in. Hit Z and then hit enter. The Z offset will be saved in that tool description number. To get the X offset: Hit F1 and select JOG mode. Measure the radius of any round part and place it in the chuck. CAREFULLY move the tool so the tip is just touching the surface of the material. Hit F12 and select POS mode. Hit F3 for absolute position display. Observe the value for X. Subtract the value of the radius of the sample part and write this value down. Hit F12 and select OFFSET mode. Hit F4 for Geometry settings. Use the arrow keys to move the cursor to the tool description number 1-16 that the X offset is to be stored in. Type "X" followed by the value you wrote down, then hit Enter. The X off- set will be saved in that tool description. • PROGRAMMING: Multiple programs (up to 9499) can be stored on the hard drive of the computer itself and be used by WinNC. They are treated as subprograms, and addressed with O codes. So a program name is O0001 or O4365, etc. Creating/opening/exporting programs: Hit F1 and select EDIT mode from the menu Hit F12 and select PRGRM mode Type Oxxxx where xxxx is a number between 1 and 9499 and is the number of the program. Then: To create a program, hit Enter. If the number specified already exists, nothing will happen. To open an existing program, hit down arrow. If the number specified does not exist, nothing will happen. To delete a program, hit Delete. If the number specified does not exist, nothing will happen. To export a program, hit F9. If the number specified does not exist, nothing will happen. The program will be exported to the device specified by the I/O param- eter under the settings menu (see above). If the export device is a disk, the file name will be oprgxxxx where xxxx is the program number Running a program: Hit F1 and select AUTO mode. Hit F12 and select PRGRM mode. Open the program: type Oxxxx where xxxx is the program number and hit down arrow.
  • 423. page 423 Hit 0 on the numeric keypad (this is RESET) Hit Enter on the numeric keypad. (this is RUN) Loading a program: The interface for this is unusable and completely undocumented. Do this instead: Exit WinNC by hitting Alt-F4. Open the Windows File Manager, and copy the G-code file from your disk to the c:WinNCfan0.tprg directory. rename the file o1, o2, o4567, or whatever you want the new program number to be. Now when you get back into WinNC, the file will be there as if you had created a program by that number right in WinNC. Notes on the editor: The editor is a basic text editor with some restrictions to make sure you enter valid codes. Type a "word" (that is, a code: N00, G01, X5.395, etc.) and hit enter. Hit enter twice to start a new line. You can use the cursor to move about and insert text. It's a bit hard to control, but fairly intuitive. Notes on G-codes for the PC Turn 50: The PC Turn 50 takes a fairly standard set of G codes, which is the only thing cov- ered well in the manual. Note that WinNC and the PC Turn 50 use command definition set C in the manual. There are several things worth noting. O codes are not allowed, as they are used for identifying programs. There are only two axis, X and Z, so all the 3d aspect of G codes do not apply. Keep in mind most tools are designed to cut only in one direction in the Z axis. There are some G codes relatively unique to the PC Turn 50. G20, G21, G24, and G33 are new cycles for turning and threading for example. • STEP BY STEP TUTORIAL: assumes you have written a G-code file. 1. Switch on the lathe with the key. 2. Switch on the computer, launch Windows File Manager. 3. Copy the G-code file from your disk to the c:WinNCfan0.tprg directory and rename it o---- where ---- is a number that isn't already being used. 4. Exit the File Manager, launch WinNC. 6. Close the door if necessary with Ctrl-] 5. Hit F1 to bring up the operating mode menu, and hit F7 for ZRN mode. 6. On the numeric keypad, hit 5 to move the tool to the machine's reference point. The machine should then go to JOG mode. 7. Set zero references and tool offsets if they haven't been set already. See above for details. 8. Open the door with Ctrl-], then open the chuck with Ctrl-. 9. Place a part to turn in the chuck's jaws and close the chuck with Ctrl-. Close the door. 8. Hit F1 to bring up the operating mode menu, and hit F4 for EDIT mode. 7. Hit F12 to bring up the view mode menu, and hit F4 for PRGRM mode. 8. Type what you renamed your file to, ("O0042" for example) and hit the down arrow key. Your program should be displayed on screen.
  • 424. page 424 9. Hit F1 and hit F3 for AUTO mode. 10. Hit 0 on the numeric keypad to reset, and then hit Enter on the numeric keypad to run the file. 11. Once the program is done, hit F1 and hit F5 for MDI mode. 12. Open the door, then open the chuck and remove the finished part. 13. Close the door, exit WinNC with Alt-F4, exit Windows, and turn off the computer and lathe. 14.6.1 LABORATORY - CNC MACHINING Purpose: The students will be introduced to the basics of CNC equipment. Overview: A simple tutorial will be used to introduce the students to the CNC equipment in the labo- ratory. The students will develop a simple G-code program to cut their initials on the mill and a candle stick on the lathe. Both programs can be simulated off-line, and then tested in the laboratory. You will also be introduced to automatic part pro- gramming software. Pre-Lab: 1. Review the course material on CNC machines, and specifics for the PC-turn 50, and Pro-light machines. 2. Use netscape to explore the NC machines in the laboratory. 3. Develop by hand a program to cut your initials using the Pro-light NC mill. The initials will be cut on a 2” square piece of aluminum. Correct speeds and feed should have also been determined. 4. Develop by hand a program to cut a candlestick in brass with a 1” dia on the PC-turn 50 lathe. Correct speeds and feed should have also been determined. 5. Simulate both programs before arriving at the laboratory. In-Lab: 1. In the lab you will be shown how to set up the NC lathe and mill, fixture parts, and set the origin. 2. You will then individually enter and manufacture your parts. 3. Learn how to use MasterCAM, SmartCAM, or ProEngineer to produce NC code. Tuto- rial manuals will be provided in the lab. Submit: 1. Part programs for both parts. 2. Digital photographs of both parts. 3. A simple part program generated on the software of your choice.
  • 426. page 426 15. CNC PROGRAMMING • We need to be able to direct the position of the cutting tool. As the tool moves we will cut metal (or perform other processes). • Obviously if we plan to indicate positions we will need to coordinate systems. • The coordinates are almost exclusively cartesian and the origin is on the workpiece. • For a lathe, the infeed/radial axis is the x-axis, the carriage/length axis is the z-axis. There is no need for a y-axis because the tool moves in a plane through the rotational center of the work. Coordinates on the work piece shown below are relative to the work. Head Tail Stock WARNING: Be cautious, z the x axis is intuitively the radius of the workpiece. But, x y many systems use the dimen- sion as a diameter. Make sure • For a tool with a vertical spindle the x-axis is the cross feed, the y-axis is the in-feed, and the z-axis is parallel to the tool axis (perpendicular to the table). Coordinates on the work piece shown below relative to the work.
  • 427. page 427 z y x • For a tool with a horizontal spindle the x-axis is across the table, the y-axis is down, and the z-axis is out. Coordinates on the work piece shown below relative to the work. y z x • Some common programming languages include, (note: standards are indicated with an *) ADAPT - (ADaptation of APT) A subset of APT *APT - (Automatically Programmed Tool) A geometry based language that is compiled into an executable program. AUTOSPOT - A 2D language developed by IBM. Later combined with ADAPT. COMPACT/COMPACTII - A higher level language designed for geometrical definitions of parts, but it doesn’t require compilation. EXAPT - A european flavor of APT *G-Codes (EIA RS-274 G&M codes) MAPT - (Microcomputer APT) - Yet another version of APT UNIAPT - APT controller for smaller computer systems Other Proprietary languages
  • 428. page 428 • These languages have many similarities, but the syntax varies. 15.1 G-CODES • This language was originally designed to be read from paper tapes. As a result it is quite simple. • The language directs tool motion with simple commands • Note, I show programs with spaces to improve readability, but these are not necessary. • A basic list of ‘G’ operation codes is given below. These direct motion of the tool. G00 - Rapid move (not cutting) G01 - Linear move G02 - Clockwise circular motion G03 - Counterclockwise circular motion G04 - Dwell G05 - Pause (for operator intervention) G08 - Acceleration G09 - Deceleration G17 - x-y plane for circular interpolation G18 - z-x plane for circular interpolation G19 - y-z plane for circular interpolation G20 - turning cycle or inch data specification G21 - thread cutting cycle or metric data specification G24 - face turning cycle G25 - wait for input #1 to go low (Prolight Mill) G26 - wait for input #1 to go high (Prolight Mill) G28 - return to reference point G29 - return from reference point G31 - Stop on input (INROB1 is high) (Prolight Mill) G33-35 - thread cutting functions (Emco Lathe) G35 - wait for input #2 to go low (Prolight Mill) G36 - wait for input #2 to go high (Prolight Mill) G40 - cutter compensation cancel G41 - cutter compensation to the left G42 - cutter compensation to the right
  • 429. page 429 G43 - tool length compensation, positive G44 - tool length compensation, negative G50 - Preset position G70 - set inch based units or finishing cycle G71 - set metric units or stock removal G72 - indicate finishing cycle (EMCO Lathe) G72 - 3D circular interpolation clockwise (Prolight Mill) G73 - turning cycle contour (EMCO Lathe) G73 - 3D circular interpolation counter clockwise (Prolight Mill) G74 - facing cycle contour (Emco Lathe) G74.1 - disable 360 deg arcs (Prolight Mill) G75 - pattern repeating (Emco Lathe) G75.1 - enable 360 degree arcs (Prolight Mill) G76 - deep hole drilling, cut cycle in z-axis G77 - cut-in cycle in x-axis G78 - multiple threading cycle G80 - fixed cycle cancel G81-89 - fixed cycles specified by machine tool manufacturers G81 - drilling cycle (Prolight Mill) G82 - straight drilling cycle with dwell (Prolight Mill) G83 - drilling cycle (EMCO Lathe) G83 - peck drilling cycle (Prolight Mill) G84 - taping cycle (EMCO Lathe) G85 - reaming cycle (EMCO Lathe) G85 - boring cycle (Prolight mill) G86 - boring with spindle off and dwell cycle (Prolight Mill) G89 - boring cycle with dwell (Prolight Mill) G90 - absolute dimension program G91 - incremental dimensions G92 - Spindle speed limit G93 - Coordinate system setting G94 - Feed rate in ipm (EMCO Lathe) G95 - Feed rate in ipr (EMCO Lathe) G96 - Surface cutting speed (EMCO Lathe) G97 - Rotational speed rpm (EMCO Lathe) G98 - withdraw the tool to the starting point or feed per minute G99 - withdraw the tool to a safe plane or feed per revolution G101 - Spline interpolation (Prolight Mill) • M-Codes control machine functions and these include, M00 - program stop M01 - optional stop using stop button M02 - end of program M03 - spindle on CW M04 - spindle on CCW
  • 430. page 430 M05 - spindle off M06 - tool change M07 - flood with coolant M08 - mist with coolant M08 - turn on accessory #1 (120VAC outlet) (Prolight Mill) M09 - coolant off M09 - turn off accessory #1 (120VAC outlet) (Prolight Mill) M10 - turn on accessory #2 (120VAC outlet) (Prolight Mill) M11 - turn off accessory #2 (120VAC outlet) (Prolight Mill) or tool change M17 - subroutine end M20 - tailstock back (EMCO Lathe) M20 - Chain to next program (Prolight Mill) M21 - tailstock forward (EMCO Lathe) M22 - Write current position to data file (Prolight Mill) M25 - open chuck (EMCO Lathe) M25 - set output #1 off (Prolight Mill) M26 - close chuck (EMCO Lathe) M26 - set output #1 on (Prolight Mill) M30 - end of tape (rewind) M35 - set output #2 off (Prolight Mill) M36 - set output #2 on (Prolight Mill) M38 - put stepper motors on low power standby (Prolight Mill) M47 - restart a program continuously, or a fixed number of times (Prolight Mill) M71 - puff blowing on (EMCO Lathe) M72 - puff blowing off (EMCO Lathe) M96 - compensate for rounded external curves M97 - compensate for sharp external curves M98 - subprogram call M99 - return from subprogram, jump instruction M101 - move x-axis home (Prolight Mill) M102 - move y-axis home (Prolight Mill) M103 - move z-axis home (Prolight Mill) • Other codes and keywords include, Annn - an orientation, or second x-axis spline control point Bnnn - an orientation, or second y-axis spline control point Cnnn - an orientation, or second z-axis spline control point, or chamfer Fnnn - a feed value (in ipm or m/s, not ipr), or thread pitch Innn - x-axis center for circular interpolation, or first x-axis spline control point Jnnn - y-axis center for circular interpolation, or first y-axis spline control point Knnn - z-axis center for circular interpolation, or first z-axis spline control point Lnnn - arc angle, loop counter and program cycle counter Nnnn - a sequence/line number Onnn - subprogram block number Pnnn - subprogram reference number
  • 431. page 431 Rnnn - a clearance plane for tool movement, or arc radius, or taper value Qnnn - peck depth for pecking cycle Snnn - cutting speed (rpm), spindle speed Tnnn - a tool number Unnn - relative motion in x Vnnn - relative motion in y Wnnn - relative motion in z Xnnn - an x-axis value Ynnn - a y-axis value Znnn - a z-axis value ; - starts a comment (proLight Mill), or end of block (EMCO Lathe) • The typical sequence of one of these programs is, 1. Introductory functions such as units, absolute coords. vs. relative coords., etc. 2. Define coordinates. 3. Feeds, speeds, etc. 4. Coolants, doors, etc. 5. Cutting tool movements and tool changes 6. Shutdown • A program is given for the sample part below. Complete the last few lines.
  • 432. page 432 7” 1” 1” 1” 1” 1” Notes: 2” 1.5” 1. Drawing not to scale 2. NC origin set to bot- 3” tom left of both views 3” 3. the available tools are, #1 5/8” dia. drill #2 1/2” dia. mill .5” y 2” 1.5” x 2 holes 5/8”dia. all rounds 1/4” rad. .5” 1” 2” z x N10 G70 G90 T01 M06 ; set to inches & absolute coords and tool #1 N20 G00 X1.000 Y2.000 Z2.200 ; move to above first hole N30 F12.0 S480 M03 ; set speeds and feeds N40 G81 Z-0.100 R2.200 ; drill first hole N50 G81 Y4.000 Z-0.100 R2.200 ; drill second hole N60 M05 T02 M06 F50 S2400 M03 ; change to milling cutter and set speeds and N70 G00 X3.500 Y-0.600 Z2.200 feeds N80 G00 Z1.000 ; move toward long slot cut N90 G01 Y7.200 ; move to right depth N100 G00 X4.000 ; cut slot length Note: The program above will cut the 1” slot too narrow. How can we fix
  • 433. page 433 • The following is an example of circular interpolation. This is valid for both milling and turning. Note that here we move to the start point, the command indicates the direction (clockwise or counterclockwise). The I, J values indicate the center of rotation, and the X, Y values indicate the point to stop at. We can also cut circular paths on other planes by resetting the cutting planes (G17, G18, G19). (2,5) N10G01X6Y1; MOVE TO (6, 1) N11G03X2Y5I2J1; CUT CIRCULAR PATH (2, 1) (6, 1) (0, 0) • When cutting, it is useful to change our point of reference. When doing mathematics we tend to dimension relative to a main origin (absolute). In fact a machine will need to have coordi- nates specified with reference to a main origin. But when we examine parts we tend to refer to local origins for features. (Consider how you dimension details on a drawing.) These relative points refer to as local origins. We can also do moves as distances to the next point.
  • 434. page 434 (3, 3) N0010G90 ; PUT IN ABSOLUTE MODE N0011G01X1Y2 ; MOVE TO (1,2) N0012G01X2Y2 ; MOVE TO (2,2) (2, 2) (3, 2) N0013G91 ; PUT IN INCREMENTAL MODE N0014G01X1 ; MOVE TO (3,2) (1, 2) (0, 0) • When using the prolight mill we can add program elements to request that an external device (ie robot) load or unload parts. We will assume that the robot has been connected to the robotic interface port available. This port has four inputs and two outputs. The example below assumes that the input #1 indicates a part has been dropped off and the mill can start. Output #1 will be turned on to request that the robot pick up a part and load new stock. N20M26 ; SEND OUTPUT TO REQUEST ROBOT LOAD A PART N21G26 ; WAIT UNTIL THE INPUT FROM THE ROBOT INDICATES PART HERE N22M25 ; TURN OFF REQUEST TO ROBOT N23G00.... ; START CUTTING THE PART ........ N89G00..... ; END PART CUTTING • In previous examples we calculated the cutter offsets by hand. Modern NC machines keep a record of the tool geometry. This can then be used to automatically calculate offsets (you don’t need to put the tool size in the program). • The best way to think of tool compensation is when cutting a profile, should we be to the left or right of the line.
  • 435. page 435 G42 G41 G00 X1.000 Y1.000 G00 X1.000 Y1.000 G01 Y2.000 G01 Y2.000 G01 X2.000 G01 X2.000 G01 Y1.000 G01 Y1.000 • In the previous example we notice how the shape is distorted by how the cutter navigates the corners. There are additional commands to help with these problems. M97 - compensate for corners larger M96 - compensate for corners than step (requires more time) G41 G41 G01 X4.000 G01 X4.000 G01 X1 Y1 M97 G01 X1 Y1 M96 • Typical commanded cycles include,
  • 436. page 436 - rectangular pocket milling - circular pocket milling - slot or elongated hole milling - peck drilling - tapping • For practice, develop the part program for the component shown below y 5 P4 4 L3 L2 3 C1 2 P1 1 L1 P3 x P2 1 2 3 4 5 6 7 15.2 APT • This language allows tools to be programmed using geometrical shapes. This puts less bur- den on the programmer to do calculations in their heads.
  • 437. page 437 • APT programs must be converted into low level programs, such as G-codes. • An example of an APT program is given below. y 5 P4 4 L3 L2 3 C1 2 P1 1 L1 P3 x P2 1 2 3 4 5 6 7 P0=POINT/0,-1.0,0 P1=POINT/6.0,1.125,0 P2=POINT/0,0,0 P3=POINT/6.0,0,0 P4=POINT/1.75,4.5,0 L1=LINE/P2,P3 C1=CIRCLE/CENTER,P1,RADIUS,1.125 L2=LINE/P4,LEFT,TANTO,C1 L3=LINE/P2,P4 PL1=PLANE/P2,P3,P4 FROM/P0 GO/TO,L1,TO,PL1,PAST,L3 GORGT/L1,TANTO,C1 GOFWD/C1,PAST,L2 GOFWDL2,PAST,L3 GOLFT/L3,PAST,L1 GOTO/P0 • Some samples of the geometrical and motion commands follow. These are not complete, but are a reasonable subset.
  • 438. page 438 • GEOMETRY: The simplest geometrical construction in APT is a point p=POINT/x,y,z - a cartesian point p=POINT/l1,l2 - intersection of two lines p=POINT/c - the center of a circle p=POINT/YLARGE,INTOF,l,c - the largest y intersection of a line and a circle *Note: we can use YSMALL,XLARGE,XSMALL in place of YLARGE • GEOMETRY: Lines are one of the next simplest definitions, l=LINE/x1,y1,z1,x2,y2,z2 - endpoint cartesian components l=LINE/p1,p2 - endpoints l=LINE/p,PARLEL,l - a line through a point and parallel to another line l=LINE/p,PERPTO,l - a line through a point and perpendicular to a line l=LINE/p,LEFT,TANTO,c - a line from a point, to a left tangency point on a circle l=LINE/p,RIGHT,TANTO,c - a line from a point, to a right tangency point on a circle l=LINE/LEFT,TANTO,c1,LEFT,TANTO,c2 - defined by tangents to two circles l=LINE/LEFT,TANTO,c1,RIGHT,TANTO,c2 - defined by tangents to two circles l=LINE/RIGHT,TANTO,c1,LEFT,TANTO,c2 - defined by tangents to two circles l=LINE/RIGHT,TANTO,c1,RIGHT,TANTO,c2 - defined by tangents to two circles • GEOMETRY: Circles are very useful for constructing geometries c=CIRCLE/x,y,z,r - a center and radius c=CIRCLE/CENTER,p,RADIUS,r - a center point and a radius c=CIRCLE/CENTER,p,TANTO,l - a center and a tangency to an outside line c=CIRCLE/p1,p2,p3 - defined by three points on the circumference c=CIRCLE/YLARGE,l1,YLARGE,l2,RADIUS,r - tangency to two lines and radius *Note: we can use YSMALL,XLARGE,XSMALL in place of YLARGE • GEOMETRY: More complex geometric constructions are possible PLANE/ - defines a plane QUADRIC/a,b,c,d,e,f,g,h,i,j - define a polynomial using values GCONIC/a,b,c,d,e,f - define a conic by equation coefficients LCONIC/p1,p2,... - defines a conic by lofting (splining) points RLDSRF/ - a ruled surface made of two splines POLCON/ - define a surface using cross sections PATERN/ - will repeat a motion in a linear or circular array • Once we have constructed points, lines and circles we can then proceed to direct the tool to follow the path. • MOTION: We can use the basic commands to follow the specified geometry
  • 439. page 439 FROM/p - specify a start point FROM/x,y,z - specify a start point GOTO/p - move to a final point GOTO/x,y,z - move to a final point GOTO/TO,p - move until the tool touches a point GOTO/TO,l - move until the tool touches a line GOTO/TO,c - move until the tool touches a circle GOLFT/l1,TO,l2 - go on the left of l1 until the tool touches l2 GORGT/l1,TO,l2 - go on the right of l1 until the tool touches l2 GOBACK/l1,TO,l2 - reverses direction along l1 to l2 GOBACK/l1,TO,c1 - reverses direction along l1 to c1 GOUP/l1,TO,l2 - goes up along l1 to l2 GODOWN/1l,TO,l2 - goes down along l1 to l2 GODLTA/x,y,z - does a relative move Note: TO can be replaced with PAST, ON to change whether the tool goes past the struc- ture, or the center stops on the structure. • MOTION: The following commands will create complex motion of the tool POCKET/ - will cut a pocket PSIS/ - will call for the part surface • As would be expected, we need to be able to issue commands to control the machine. • CONTROL: The following instructions will control the machine outside the expected cut- ting tool motion. CUTTER/n1,n2 - defines diameter n1 and radius n2 of cutter MACHIN/n,m - uses a post processor for machine ‘n’, and version ‘m’ COOL/ANT/n - either MIST, FLOOD or OFF TURRET/n - sets tool turret to new position TOLER/n - sets a tolerance band for cutting FEDRAT/n - sets a feedrate n SPINDL/n,CW - specifies n rpm and direction of spindle • We can also include some program elements that are only used for programming • PROGRAM: The following statements are programming support instructions REMARK - starts a comment line that is not interpreted $$ - also allows comments, but after other statements NOPOST - turns off the post processor that would generate cutter paths CLPRNT - prints a sequential history of the cutter center location
  • 440. page 440 SQRTF(n) - calculates the floating point square root FINI - stop program PARTNO/n - allows the user to specify the part name LOOPST and LOOPND - loop instructions RESERV/n,m - defines an array of size ‘n’ by ‘m’ JUMPTO/n - jump to line number • Note: variables can also be defined and basic mathematical operations can be performed. • Note: macro functions are also available. 15.3 PROPRIETARY NC CODES
  • 441. page 441 • NC code Example (for the Dyna Milling Machine) 000 START INS 01 Start Program in inches 001 TD = 0.125 Set Tool Diameter 002 FRXY = 10 003 FRZ = 4 Set Feed Rates 004 SETUP > zcxyu Set Absolute Zero Position 005 GOY -.625 006 GOZ -.125 Move to Start Position 007 GRa -180 A 008 ZERO AT 009 X .634 010 Y .5 B 2.00” 011 GOr .125 012 a 90 013 GRa -30 B 014 > REF COODS 30° Y 015 ZERO AT 0.50” 016 X 1.50 Z C 017 Y 0 C X 018 GOr .125 D 019 a 60 0.50” A 020 GRa -60 E 021 > REF COODS F 022 ZERO AT 023 X 1.5 024 Y -0.3 0.20”R D 025 GOr .125 026 a 0 027 GRa -90 E 028 GRX -1.3 F 029 END End Program 15.4 GRAPHICAL PART PROGRAMMING • Basically,
  • 442. page 442 1. Part geometry is entered in 2D or 3D. 2. Tool geometry and machine tool type are entered. 3. Speeds and feeds are entered or calculated based on tool and work material. 4. Inside/outside of geometry, and initial stock sizes are selected. 5. Cutter paths are generated. 6. Cutter paths are converted to a machine specific language (eg, G-codes). • These programs are usually built into better CAD systems or are available as stand alone software • Some machine tools have these programmers built into the controller. 15.5 NC CUTTER PATHS • When we have simple features, paths are easy to generate. These features include, - steps - pockets - holes - etc. • Typically paths for these will repeat as shown below,
  • 443. page 443 • For complex surfaces we want to contour appropriately. These surfaces will almost always be represented with spline patches. • Recall that a spline patch can be represented parametrically
  • 444. page 444 (u=0,v=1) (u=1,v=1) xp p ( u, v ) = y p zp (u=0,v=0) (u=1,v=0) • A simple algorithm to cut the surface is shown below. dirn_flag = 1; a direction flag n=10 ; number of passes to cut the surface step=1.0/n ; step sizes for u and v directions start=step/2 ; the start offset in the u and v directions [xp,yp,zp] = p(start,start) ; calculate the start position print(“G00 X”,xp,” Y”,yp,” Z”,zp+0.2) ; move the tool to above the start position for i=0 to (n-1) ; will increment in the u direction for j=0 to (n-1) ; will increment in the v direction ; calculate next point if dirn_flag=-1 then [xp,yp,zp]=p(start+i*step,start+j*step) if dirn_flag=1 then [xp,yp,zp]=p(start+i*step,start+(n-j)*step) print(“G01 X”,xp,” Y”,yp,” Z”,zp) ; instruction to cut to next point next j ; make next step in v direction until done dirn_flag = -dirn_flag ; reverse direction to cut in opposite direction next i ; move to next cut line in the u direction print(“G00 Z”,zp+0.2) ; move the tool to above the end position 15.6 NC CONTROLLERS • NC control programs are essentially quite simple. The source code for a basic controller is given below.
  • 445. page 445 ********** Add in C-code for AMP project 15.7 PRACTICE PROBLEMS 1. Examine the part below. It is set up so that the origin is at the bottom left. The cutting tool has a diameter of 1/2”, and the material is 1/8” thick. T R2.000” 2.500” 2.000” 5.500” 2.000” a) Write the equations needed to find the tangency point on the top left of the piece. ans. 2 2 2 ( x T – 5.5 ) + ( y T – 4.5 ) = 2 2 2 2 2 2 2 L AT = xT + yT = 2 + ( 5.5 + 4.5 ) b) Develop an NC program to mill the part. The program should be complete and include all instructions required. If necessary, assume a location for the tangency point.
  • 446. page 446 ans. N10 G70 G90 T01 M06 N20 F20 S2000 M03 N30 G00 X-0.0 Y-0.25 N40 G01 Z-0.25 N50 G01 X5.75 N60 G01 Y1.75 N70 G01 X7.75 N80 G01 Y4.5 2. Examine the part below. It is set up so that the origin is at the bottom left corner. The cut- ting tool has a diameter of 1/2”, and the material is 1/8” thick. Develop an NC program to mill the part. The program should be complete and include all instructions required. T R2.000” 2.500” 2.000” 5.500” 2.000” 3. 15.8 LABORATORY - CNC INTEGRATION Purpose:
  • 447. page 447 Integration of CNC equipment. Overview: Students will develop programs to load and unload the NC machines with robots, and then produce parts. Pre-Lab: 1. Use your NC programming software to generate an NC program to cut the top 1/2” of a 3” radius ball on the mill. Test the program on-line. 2. Use the NC generation software to cut a 1/4” deep, 2”long oval into the surface of a 1” brass bar. Test the program on-line. 3. Simulate both programs before arriving at the laboratory. 4. Develop a robot program to load/unload the NC mill with the RV-M1. Test the program on-line 5. Develop a program for the RT-3000 to load/unload the lathe. Test the program on-line. In-Lab: 1. In the lab test the programs on the different devices in groups of 3 2. One group of (6?) should connect the RV-M1 to the Mill, and the other group should connect the RT-3000 to the lathe. 3. The groups that did the connection should split into smaller groups and modify the pro- grams on the robots and NC machines. Submit: 1. Your individual NC and robot programs. 2. The final group NC and robot programs.
  • 448. page 448 16. DATA AQUISITION 16.1 INTRODUCTION An analog value is continuous, not discrete, as shown in figure 17.1. In the previous chapters, techniques were discussed for designing logical control systems that had inputs and outputs that could only be on or off. These systems are less common than the logical control systems, but they are very important. In this chapter we will examine analog inputs and outputs so that we may design continuous control systems in a later chapter. Voltage logical continuous t Figure 17.1 - Logical and Continuous Values Typical analog inputs and outputs for PLCs are listed below. Actuators and sensors that can be used with analog inputs and outputs will be discussed in later chapters. Inputs: • oven temperature • fluid pressure • fluid flow rate Outputs: • fluid valve position • motor position • motor velocity This chapter will focus on the general principles behind digital-to-analog (D/A) and analog- to-digital (A/D) conversion. The chapter will show how to output and input analog values with a PLC.
  • 449. page 449 16.2 ANALOG INPUTS To input an analog voltage (into a PLC or any other computer) the continuous voltage value must be ’sampled’ and then converted to a numerical value by an A/D converter. Figure 17.2 shows a continuous voltage changing over time. There are three samples shown on the figure. The process of sampling the data is not instantaneous, so each sample has a start and stop time. The time required to acquire the sample is called the ’sampling time’. A/D converters can only acquire a limited number of samples per second. The time between samples is called the sampling period ’T’, and the inverse of the sampling period is the sampling frequency (also called sampling rate). The sampling time is often much smaller than the sampling period. The sampling frequency is specified when buying hardware, but for a PLC a maximum sampling rate might be 20Hz. Voltage is sampled during these time periods voltage time T = (Sampling Frequency)-1 Sampling time Figure 17.2 - Sampling an Analog Voltage A more realistic drawing of sampled data is shown in Figure 17.3. This data is noisier, and even between the start and end of the data sample there is a significant change in the voltage value. The data value sampled will be somewhere between the voltage at the start and end of the sample. The maximum (Vmax) and minimum (Vmin) voltages are a function of the control hard-
  • 450. page 450 ware. These are often specified when purchasing hardware, but reasonable ranges are; 0V to 5V 0V to 10V -5V to 5V -10V to 10V The number of bits of the A/D converter is the number of bits in the result word. If the A/D con- verter is ’8 bit’ then the result can read up to 256 different voltage levels. Most A/D converters have 12 bits, 16 bit converters are used for precision measurements. V(t) V max V ( t2 ) V ( t1 ) V min t τ t1 t2 where, V ( t ) = the actual voltage over ti e m τ = sample interval for A/D converter t = time t 1, t 2 = time at start,end of sample V ( t 1 ), V ( t 2 ) = voltage at start, end of sample V min, V max = input voltage range of A/D co vre n etr N = number of bits in the A/D converter Figure 17.3 - Parameters for an A/D Conversion The parameters defined in Figure 17.3 can be used to calculate values for A/D converters.
  • 451. page 451 These equations are summarized in Figure 17.4. Equation 17.1 relates the number of bits of an A/ D converter to the resolution. Equation 17.2 gives the error that can be expected with an A/D con- verter given the range between the minimum and maximum voltages, and the resolution (this is commonly called the quantization error). Equation 17.3 relates the voltage range and resolution to the voltage input to estimate the integer that the A/D converter will record. Finally, equation 17.4 allows a conversion between the integer value from the A/D converter, and a voltage in the com- puter. N (17.1) R = 2 V max – V min V ERROR =  ---------------------------- (17.2) -  2R V in – V min V I = INT  ---------------------------- R - (17.3) V  max – V min V V C =  ----I ( V max – V min ) + V min - (17.4)  R where, R = resolution of A/D co vre n etr V I = the integer value representing the input voltage V C = the voltage calculated from the integer value V ERROR = the maximum quantization error Figure 17.4 - A/D Converter Equations Consider a simple example, a 10 bit A/D converter can read voltages between -10V and 10V. This gives a resolution of 1024, where 0 is -10V and 1023 is +10V. Because there are only 1024 steps there is a maximum error of ±9.8mV. If a voltage of 4.564V is input into the PLC, the A/D converter converts the voltage to an integer value of 746. When we convert this back to a voltage the result is 4.570V. The resulting quantization error is 4.570V-4.564V=+0.006V. This error can be reduced by selecting an A/D converter with more bits. Each bit halves the quantization error.
  • 452. page 452 Given, N = 10 V max = 10V V min = – 10V V in = 4.564V Calculate, N R = 2 = 1024 V max – V min V ERROR =  ---------------------------- = 0.0098V -  2R V in – V min V I = INT  ---------------------------- R = 746 - V  max – V min V V C =  ----I ( V max – Vmin ) + V min = 4.570V -  R Figure 17.5 - Sample Calculation of A/D Values If the voltage being sampled is changing too fast we may get false readings, as shown in Fig- ure 17.6. In the upper graph the waveform completes seven cycles, and 9 samples are taken. The bottom graph plots out the values read. The sampling frequency was too low, so the signal read appears to be different that it actually is, this is called aliasing.
  • 453. page 453 Figure 17.6 - Low Sampling Frequencies Cause Aliasing The Nyquist criterion specifies that sampling frequencies should be at least twice the fre- quency of the signal being measured, otherwise aliasing will occur. The example in Figure 17.6 violated this principle, so the signal was aliased. If this happens in real applications the process will appear to operate erratically. In practice the sample frequency should be 4 or more times faster than the system frequency. f AD > 2f signal where, f AD = sampling frequency f signal = maximum frequency of the input There are other practical details that should be considered when designing applications with analog inputs; • Noise - Since the sampling window for a signal is short, noise will have added effect on the signal read. For example, a momentary voltage spike might result in a higher than normal reading. Shielded data cables are commonly used to reduce the noise levels. • Delay - When the sample is requested, a short period of time passes before the final sam- ple value is obtained. • Multiplexing - Most analog input cards allow multiple inputs. These may share the A/D converter using a technique called multiplexing. If there are 4 channels using an A/
  • 454. page 454 D converter with a maximum sampling rate of 100Hz, the maximum sampling rate per channel is 25Hz. • Signal Conditioners - Signal conditioners are used to amplify, or filter signals coming from transducers, before they are read by the A/D converter. • Resistance - A/D converters normally have high input impedance (resistance), so they affect circuits they are measuring. • Single Ended Inputs - Voltage inputs to a PLC can use a single common for multiple inputs, these types of inputs are called ’single’ ended inputs. These tend to be more prone to noise. • Double Ended Inputs - Each double ended input has its own common. This reduces prob- lems with electrical noise, but also tends to reduce the number of inputs by half.
  • 455. page 455 ASIDE: This device is an 8 bit A/D converter. The main concept behind this is the succes- sive approximation logic. Once the reset is toggled the converter will start by setting the most significant bit of the 8 bit number. This will be converted to a voltage ‘Ve’ that is a function of the ‘+/-Vref’ values. The value of ‘Ve’ is compared to ‘Vin’ and a sim- ple logic check determines which is larger. If the value of ‘Ve’ is larger the bit is turned off. The logic then repeats similar steps from the most to least significant bits. Once the last bit has been set on/off and checked the conversion will be complete, and a done bit can be set to indicate a valid conversion value. Vin above (+ve) or below (-ve) Ve Vin + - +Vref successive 8 approximation D to A clock converter logic Ve reset done -Vref 8 data out Quite often an A/D converter will multiplex between various inputs. As it switches the voltage will be sampled by a ‘sample and hold circuit’. This will then be converted to a digital value. The sample and hold circuits can be used before the multiplexer to collect data values at the same instant in time. Figure 17.7 - A Successive Approximation A/D Converter 16.3 ANALOG OUTPUTS Analog outputs are much simpler than analog inputs. To set an analog output an integer is converted to a voltage. This process is very fast, and does not experience the timing problems
  • 456. page 456 with analog inputs. But, analog outputs are subject to quantization errors. Figure 17.11 gives a summary of the important relationships. These relationships are almost identical to those of the A/ D converter. N (17.5) R = 2 V max – V min V ERROR =  ---------------------------- (17.6) -  2R V desired – V min VI = INT  ----------------------------------- R (17.7)  V  max – V min V V output =  ----I ( V max – V min ) + V min (17.8) -  R where, R = resolution of A/D co vre n etr V ERROR = the maximum quantization error V I = the integer value representing the desired voltage V output = the voltage output using the integer value Figure 17.11 - Analog Output Relationships Assume we are using an 8 bit D/A converter that outputs values between 0V and 10V. We have a resolution of 256, where 0 results in an output of 0V and 255 results in 10V. The quantiza- tion error will be 20mV. If we want to output a voltage of 6.234V, we would specify an output integer of 160, this would result in an output voltage of 6.250V. The quantization error would be 6.250V-6.234V=0.016V.
  • 457. page 457 Given, N = 8 V max = 10V V min = 0V V desired = 6.234V Calculate, N R = 2 = 256 V max – V min V ERROR =  ---------------------------- = 0.020V -  2R V in – V min V I = INT  ---------------------------- R = 160 - V  max – V min V V C =  ----I ( V max – Vmin ) + V min = 6.250V -  R The current output from a D/A converter is normally limited to a small value, typically less than 20mA. This is enough for instrumentation, but for high current loads, such as motors, a cur- rent amplifier is needed. This type of interface will be discussed later. If the current limit is exceeded for 5V output, the voltage will decrease (so don’t exceed the rated voltage). If the cur- rent limit is exceeded for long periods of time the D/A output may be damaged.
  • 458. page 458 ASIDE: 5KΩ 10KΩ V– V ss MSB bit 3 - V + 20KΩ + + bit 2 0 Computer Vo 40KΩ bit 1 - 80KΩ LSB bit 0 First we write the obvious, V + = 0 = V– Next, sum the currents into the inverting input as a function of the output voltage and the input voltages from the computer, Vb3 V b2 Vb1 V b0 Vo -------------- + -------------- + -------------- + -------------- = ----------- - - - - - 10KΩ 20KΩ 40KΩ 80KΩ 5KΩ ∴V o = 0.5V b3 + 0.25V b2 + 0.125V b1 + 0.0625Vb 0 Consider an example where the binary output is 1110, with 5V for on, ∴V o = 0.5 ( 5V ) + 0.25 ( 5V ) + 0.125 ( 5V ) + 0.625 ( 0V ) = 4.375V Figure 17.12 - A Digital-To-Analog Converter 16.4 REAL-TIME PROCESSING Any computer running a process should use a real-time operating system. The purpose of a real-time operating system is primarily to ensure that a process runs within a specified time inter- val, normally a small fraction of a system. This capability is often not a common part of most
  • 459. page 459 operating systems, but it is relatively easy to add. When it is not a real-time process, it common for another process to monopolize the processor and cause erratic delays. When this happens the control program may not respond to a control event for a second or more. This would generally be a bad thing in a time critical system. - need to be able to specify how often a process runs. - RTLinux - system clock for slower processes. 16.5 DISCRETE IO 16.6 COUNTERS AND TIMERS 16.7 ACCESSING DAQ CARDS FROM LINUX Listing 16.1 - DAS08 Driver Header File (das08_io.h) #include "../include/global.h" #ifndef _DAS08__ #define _DAS08__
  • 460. page 460 #define CARDBASE 0x300 #define ADCHIGH 0 // AD Data Registers #define ADCLOW 1 /* A/D Status and Control Register */ #define ADCSTATUS2 /* Auxiliary port on analog bus */ #define PORTAUX 2 /* Programmable Gain Register */ #define GAIN 3 /* Counter Load & Read Registers */ #define LOADREAD14 #define LOADREAD25 #define LOADREAD36 #define CCONFIGPORT7// Counter Control Register /* D/A 0 Control Registers */ #define DAC0LOW 8 #define DAC0HIGH9 /* D/A 1 Control Registers */ #define DAC1LOW 10 #define DAC1HIGH11 /* 82C55 Digital I/O Registers */ #define PORTA 12 #define PORTB 13 #define PORTC 14 #define PORTCL 12345 /* real port is 0x30e bits 0-3 */ #define PORTCH 6789 /* real port is 0x30e bits 4-7 */ /* 82C55 Control Register */ #define DCONFIGPORT15 #define DIGITALOUT 1 #define DIGITALIN 2 #define HIGHONLASTCOUNT 0 #define ONESHOT 1 #define RATEGENERATOR2 #define SQUAREWAVE3 #define SOFTWARESTROBE4 #define HARDWARESTROBE5 /* Range Codes */ #define BIP10VOLTS0x08 #define BIP5VOLTS0x00 #define BIP2PT5VOLTS0x02 #define BIP1PT25VOLTS0x04 #define BIPPT625VOLTS0x06 #define UNI10VOLTS0x01 #define UNI5VOLTS0x03 #define UNI2PT5VOLTS0x05 #define UNI1PT25VOLTS0x07 class das08{ protected: public: int base; // card setup information
  • 461. page 461 int chan0; int chan1; int portA; // port data directions int portB; int portCL; int portCH; int *data_portA;// hooks to global values int *data_portB; int *data_portCL; int *data_portCH; int *data_portXI; int *data_portXO; int *data_AI0; int *data_AI1; int *data_AI2; int *data_AI3; int *data_AI4; int *data_AI5; int *data_AI6; int *data_AI7; int *data_AO0; int *data_AO1; das08(); ~das08(); int configure(char*); int connect(); int scan(); int disconnect(); int DConfigPort(int, int); int DIn(int, int*); int DBitIn(int, int, int*); int DOut(int, int); int DBitOut(int, int, int); int C8254Config(int, int); int CLoad(int, int); int CIn(int, int*); int AIn(int, int*); int AOut(int, int); }; #endif Listing 16.2 - DAS08 Driver File (das08_io.cpp) #include <errno.h> #include <signal.h> #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/wait.h> #include <netinet/in.h>
  • 462. page 462 #include <netdb.h> #include <sys/time.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <unistd.h> #include <sys/io.h> #include "das08_io.h" #include "../include/process.h" int bits[]={0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; das08::das08(){ base = CARDBASE;// default cardbase chan0 = BIP10VOLTS;// default AD ranges chan1 = BIP10VOLTS; portA = DIGITALIN; portB = DIGITALIN; portCH = DIGITALIN; portCL = DIGITALIN; } das08::~das08(){ } int das08::configure(char *file_name){ int error; FILE *fp_in; char params[200]; error = NO_ERROR; if((fp_in = fopen(file_name, "r")) != NULL){ fgets(params, 200, fp_in); while(feof(fp_in) == 0){ if((params[0] != ’#’) && (strlen(params) > 3)){ if(params[0] == ’B’){ base = atoi(&(params[1])); } else if(strncmp("A0", params, 2) == 0){ if(strncmp("BIP10VOLTS", &(params[2]), 10) == 0){ chan0 = BIP10VOLTS; } else if(strncmp("BIP5VOLTS", &(params[2]), 9) == 0){ chan0 = BIP5VOLTS; } else if(strncmp("BIP2PT5VOLTS", &(params[2]), 12) == 0){ chan0 = BIP2PT5VOLTS; } else if(strncmp("BIP1PT25VOLTS", &(params[2]), 13) == 0){ chan0 = BIP1PT25VOLTS; } else if(strncmp("BIPPT625VOLTS", &(params[2]), 13) == 0){ chan0 = BIPPT625VOLTS; } else if(strncmp("UNI10VOLTS", &(params[2]), 10) == 0){ chan0 = UNI10VOLTS; } else if(strncmp("UNI5VOLTS", &(params[2]), 9) == 0){ chan0 = UNI5VOLTS; } else if(strncmp("UNI2PT5VOLTS", &(params[2]), 12) == 0){ chan0 = UNI2PT5VOLTS; } else if(strncmp("UNI1PT25VOLTS", &(params[2]), 13) == 0){ chan0 = UNI1PT25VOLTS;
  • 463. page 463 } else { error_log(MINOR, "Unrecognized DAS08 analog A0 output range"); error = ERROR; } } else if(strncmp("A1", params, 2) == 0){ if(strncmp("BIP10VOLTS", &(params[2]), 10) == 0){ chan1 = BIP10VOLTS; } else if(strncmp("BIP5VOLTS", &(params[2]), 9) == 0){ chan1 = BIP5VOLTS; } else if(strncmp("BIP2PT5VOLTS", &(params[2]), 12) == 0){ chan1 = BIP2PT5VOLTS; } else if(strncmp("BIP1PT25VOLTS", &(params[2]), 13) == 0){ chan1 = BIP1PT25VOLTS; } else if(strncmp("BIPPT625VOLTS", &(params[2]), 13) == 0){ chan1 = BIPPT625VOLTS; } else if(strncmp("UNI10VOLTS", &(params[2]), 10) == 0){ chan1 = UNI10VOLTS; } else if(strncmp("UNI5VOLTS", &(params[2]), 9) == 0){ chan1 = UNI5VOLTS; } else if(strncmp("UNI2PT5VOLTS", &(params[2]), 12) == 0){ chan1 = UNI2PT5VOLTS; } else if(strncmp("UNI1PT25VOLTS", &(params[2]), 13) == 0){ chan1 = UNI1PT25VOLTS; } else { error_log(MINOR, "Unrecognized DAS08 analog A1 output range"); error = ERROR; } } else if(strncmp("PAI", params, 3) == 0){ portA = DIGITALIN; } else if(strncmp("PAO", params, 3) == 0){ portA = DIGITALOUT; } else if(strncmp("PBI", params, 3) == 0){ portB = DIGITALIN; } else if(strncmp("PBO", params, 3) == 0){ portB = DIGITALOUT; } else if(strncmp("PCLI", params, 4) == 0){ portCL = DIGITALIN; } else if(strncmp("PCLO", params, 4) == 0){ portCL = DIGITALOUT; } else if(strncmp("PCHI", params, 4) == 0){ portCH = DIGITALIN; } else if(strncmp("PCHO", params, 4) == 0){ portCH = DIGITALOUT; } else { error_log(MINOR, "DAS08 argument not recognized"); error = ERROR; } } fgets(params, 200, fp_in); } fclose(fp_in); } return error; } int das08::connect(){ int error; error = NO_ERROR; if(ioperm(base, 16, 1) == 0){
  • 464. page 464 DConfigPort(PORTA, portA); DConfigPort(PORTB, portB); DConfigPort(PORTCL, portCL); DConfigPort(PORTCH, portCH); } else { error = ERROR; error_log(MINOR, "Could not connect to DAS08 board - memory is probably in use"); } return error; } int das08::scan(){ int error; error = NO_ERROR; // update digital ports if(portA == DIGITALIN){DIn(PORTA, data_portA); } else {DOut(PORTA, data_portA[0]);} if(portB == DIGITALIN){DIn(PORTB, data_portB); } else {DOut(PORTB, data_portB[0]);} if(portCL == DIGITALIN){DIn(PORTCL, data_portCL); } else {DOut(PORTCL, data_portCL[0]);} if(portCH == DIGITALIN){DIn(PORTCH, data_portCH); } else {DOut(PORTCH, data_portCH[0]);} DOut(PORTAUX, data_portXO[0]); DIn(PORTAUX, data_portXI); // Update analog inputs AIn(0, data_AI0); AIn(1, data_AI1); AIn(2, data_AI2); AIn(3, data_AI3); AIn(4, data_AI4); AIn(5, data_AI5); AIn(6, data_AI6); AIn(7, data_AI7); // Update analog outputs AOut(0, data_AO0[0]); AOut(1, data_AO1[0]); return error; } int das08::disconnect(){ int error; error = NO_ERROR; if(ioperm(base, 16, 0) != 0){ error = ERROR; error_log(MINOR, "Could not release the DAS08 board - memory is probably in use"); } return error; } int das08::DConfigPort(int Port, int Direction){
  • 465. page 465 // This command configures a port as an input or output. // The Direction field can be either DIGITALIN or DIGITALOUT // depending on whether the port is to be configured as an // input or output. Valid ports are PORTA, PORTB, PORTCL and // PORTCH. Direction bit can be either DIGITALIN or DIGITALOUT. int error, mask, OldByte, NewByte; //printf("Configuring port %d with direction %d n", Port, Direction); error = NO_ERROR; OldByte = inb(DCONFIGPORT + base); /*read the current register*/ if(Direction == DIGITALIN){ /* determine mask for DIGITALIN */ if(Port == PORTA){ mask = 0x10; } else if(Port == PORTB){ mask = 0x02; } else if(Port == PORTC){ mask = 0x09; } else if(Port == PORTCL){ mask = 0x01; Port = PORTC; } else if(Port == PORTCH){ mask = 0x08; Port = PORTC; } else { error_log(MINOR, "Digital port must be PORTA, PORTB, PORTC, PORTCL or PORTCH"); error = ERROR; mask = 0; } NewByte = OldByte | mask; /* new data for register */ } else if(Direction == DIGITALOUT){ /* determine mask for DIGITALOUT */ if(Port == PORTA){ mask = 0xef; } else if(Port == PORTB){ mask = 0xfd; } else if(Port == PORTC){ mask = 0xf6; } else if(Port == PORTCL){ mask = 0xfe; Port = PORTC; } else if(Port == PORTCH){ mask = 0xf7; Port = PORTC; } else { error_log(MINOR, "Digital port must be PORTA, PORTB, PORTC, PORTCL or PORTCH"); error = ERROR; } NewByte = OldByte & mask; /* new value for register */ } else { error_log(MINOR, "Direction must be set to DIGITALIN or DIGITALOUT"); error = ERROR; } if(error == NO_ERROR){ //printf("port thingy %d %d n", NewByte, DCONFIGPORT); outb(NewByte, DCONFIGPORT + base); /* write config data to register */ } return error; /* no errors detected */ } int das08::DBitIn(int Port, int BitNum, int *BitData){ // This function determines whether a bit within the // requested port is set. The value (1 or 0) is returned // in the variable pointer sent to the function. Port may // be PORTA, PORTB, PORTCL or PORTCH. BitNum must be in the // range 0-7. int error, mask = 0, data; error = NO_ERROR; if((Port == PORTCL) || (Port == PORTCH)){ data = inb(PORTC + base); } else { data = inb(Port + base);} //printf("GOT %d %d %d %d n", Port, data, BitNum, BitData[0]);
  • 466. page 466 if((Port == PORTA) || (Port == PORTB) || (Port == PORTC)){ if((BitNum >= 0) && (BitNum <= 7)){ mask = bits[BitNum]; } else { error_log(MINOR, "Bit numbers should be between 0 and 7"); error = ERROR; } } else if((Port == PORTCL) || (Port == PORTAUX)) { if((BitNum >= 0) && (BitNum <= 3)){ mask = bits[BitNum]; } else { error_log(MINOR, "Bit numbers should be between 0 and 3"); error = ERROR; } } else if(Port == PORTCH) { if((BitNum >= 4) && (BitNum <= 7)){ mask = bits[BitNum]; } else { error_log(MINOR, "Bit numbers should be between 4 and 7"); error = ERROR; } } else if(Port == DCONFIGPORT) { mask = bits[BitNum]; } else { error_log(MINOR, "Input port not recognized"); error = ERROR; } if(error == NO_ERROR){ BitData[0] = 0; if((mask & data) != 0) BitData[0] = 1; } return error; } int das08::DBitOut(int Port, int BitNum, int BitValue){ // This function sets a bit of the requested port to either // a zero or a one. Port may be PORTA, PORTB, PORTCL or // PORTCH. BitNum must be in the range 0 - 7. BitValue // must be 1 or 0. int error, mask, NewByte, OldByte; error = NO_ERROR; if((Port == PORTCL) || (Port == PORTCH)){ OldByte = inb(PORTC + base); } else { OldByte = inb(Port + base); } if((Port == PORTAUX) && (BitValue == 1)){ mask = bits[BitNum+4]; NewByte = OldByte | mask; //printf("ddo %x %x n", mask, OldByte); } else if((Port == PORTAUX) && (BitValue == 0)) { mask = bits[BitNum+4]; NewByte = OldByte & ~mask; } else if(((Port==PORTA) || (Port==PORTB) || (Port == PORTC)) && (BitValue==1)){ mask = bits[BitNum]; NewByte = OldByte | mask; }else if(((Port==PORTA) || (Port==PORTB) || (Port==PORTC)) && (BitValue == 0)){ mask = bits[BitNum];
  • 467. page 467 NewByte = OldByte & ~mask; } else if((Port == PORTCL) && (BitValue == 1)){ mask = bits[BitNum]; NewByte = OldByte | mask; } else if((Port == PORTCL) && (BitValue == 0)){ mask = bits[BitNum]; NewByte = OldByte & ~mask; } else if((Port == PORTCH) && (BitValue == 1)){ mask = bits[BitNum]; NewByte = OldByte | mask; } else if((Port == PORTCH) && (BitValue == 0)){ mask = bits[BitNum]; NewByte = OldByte & ~mask; } else { error = ERROR; } if((Port == PORTCL) || (Port == PORTCH)) Port = PORTC; //printf("OUT %d %dn", NewByte, Port + base); if(error == NO_ERROR) outb(NewByte, Port + base); return error; } int das08::DIn(int Port, int *Value){ // This function reads the byte value of the specified port // and returns the result in the variable pointer sent to the // function. Valid ports are PORTA, PORTB, PORTCL and PORTCH. int error; // int result; // int BitData; int temp; error = NO_ERROR; // if(Port == PORTA){ // result = DBitIn(DCONFIGPORT, 4, &BitData); // } else if(Port == PORTB){ // result = DBitIn(DCONFIGPORT, 1, &BitData); // } else if(Port == PORTC){ // result = DBitIn(DCONFIGPORT, 0, &BitData) // + DBitIn(DCONFIGPORT, 3, &BitData); // } else if(Port == PORTCL){ // result = DBitIn(DCONFIGPORT, 0, &BitData); // } else if(Port == PORTCH){ // result = DBitIn(DCONFIGPORT, 3, &BitData); // } else if(Port == PORTAUX){ // } else { // error_log(MINOR, "ERROR: Port not recognized"); // error = ERROR; // } ////////////// //printf("sss %d %d n", Port, result); // if((error == NO_ERROR) && (BitData == 0)){ // error_log("ERROR: Port not configured for read"); // error = ERROR; // } if(error == NO_ERROR){ if(Port == PORTCL){ temp = inb(PORTC + base);/* read the port data */ Value[0] = (temp & 0x0f);/* mask off the high bits */ } else if(Port == PORTCH){
  • 468. page 468 temp = inb(PORTC + base);/* read the port data */ Value[0] = (temp & 0xf0);/* mask off the low bits */ } else if(Port == PORTAUX){ Value[0] = 0x7 & (int)((inb(Port + base) / 16)); } else { Value[0] = 0xff & inb(Port + base);/* read the port data */ } } return error; } int das08::DOut(int Port, int ByteValue){ // This function writes the byte value to the specified port. // Valid ports are PORTA, PORTB, PORTCL and PORTCH. int error; error = NO_ERROR; if(Port == PORTAUX){ ByteValue = (0x07 & inb(Port+base)) | (ByteValue * 16); } if((ByteValue > 255) || (ByteValue < 0)){ error = ERROR; } //printf("Writing byte %d to port %dn", ByteValue, Port); if(error == NO_ERROR){ if(Port == PORTCL){ outb((ByteValue & 0x0f), PORTC + base); } else if(Port == PORTCH){ outb((ByteValue & 0xf0), PORTC + base); } else { outb(ByteValue, Port + base); /* write the port data */ } } return error; /* no errors detected */ } int das08::C8254Config(int CounterNum, int Config){ int error, NewByte, // TempByte, BCD, mask, counter; // int temp; error = NO_ERROR; /* BCD = 0xfe - 16-bit binary count BCD = 0xf1 - 4 decade Binary Coded Decimal */ BCD = 0xfe; switch (Config){ case HIGHONLASTCOUNT:mask = 0xf1; break; case ONESHOT: mask = 0xf3; break; case RATEGENERATOR:mask = 0xf5; break; case SQUAREWAVE: mask = 0xf7; break; case SOFTWARESTROBE:mask = 0xf9; break; case HARDWARESTROBE:mask = 0xfb; break; default: error = ERROR;; break; } switch (CounterNum){
  • 469. page 469 case 1: counter = 0x3f; break; case 2: counter = 0x7f; break; case 3: counter = 0xbf; break; default: error = ERROR; break; } if(error == NO_ERROR){ NewByte = (BCD & mask) & counter; //printf("The value of TempByte & mask is --> %x.n", NewByte); outb(NewByte, CCONFIGPORT + base); } return error; } int das08::CLoad(int CounterNum, int value) { char LoadValue[6]; int error; int TempByte, TempByte1, Register, CounterMask; int WriteLowByteMask1 = 0x20;/* RL1 | */ int WriteLowByteMask2 = 0xef;/* RL0 & */ int WriteHighByteMask1 = 0xdf;/* RL1 & */ int WriteHighByteMask2 = 0x10;/* RL0 | */ char LowByte[5]; char HighByte[5]; long HighByteValue, LowByteValue; int test; error = NO_ERROR; switch (CounterNum){ case 1: Register = LOADREAD1; CounterMask = 0x3f; break; case 2: Register = LOADREAD2; CounterMask = 0x7f; break; case 3: Register = LOADREAD3; CounterMask = 0xbf; break; default: error = ERROR; break; } HighByte[0] = LoadValue[0]; HighByte[1] = LoadValue[1]; HighByte[2] = LoadValue[2]; HighByte[3] = LoadValue[3]; LowByte[0] = ’0’; LowByte[1] = ’x’; LowByte[2] = LoadValue[4]; LowByte[3] = LoadValue[5]; if(error == NO_ERROR){ HighByteValue = (int)strtol(HighByte, NULL, 0); LowByteValue = (int)strtol(LowByte, NULL, 0); TempByte = (CounterMask | WriteLowByteMask1) & WriteLowByteMask2; TempByte1 = TempByte & 0xf0; //printf("The value in config low is --> %x.n", TempByte1); outb(TempByte1, CCONFIGPORT + base); outb(LowByteValue, Register + base); //printf("The register chosen is --> %x.n", Register); test = inb(Register + base); //printf("The value read in counter low is --> %x.n", test); TempByte = (0x30 & WriteHighByteMask1) | WriteHighByteMask2; //printf("The value in config high is --> %x.n", TempByte); outb(TempByte, CCONFIGPORT + base); outb(HighByteValue, Register + base); outb(TempByte, CCONFIGPORT + base); test = inb(Register + base);
  • 470. page 470 //printf("The value in counter high is --> %x.n", test); } return error; } int das08::CIn(int CounterNum, int *CountValue){ int error; int TempByte, Register; int ReadLowByteMask1 = 0x20;/* RL1 | */ int ReadLowByteMask2 = 0xef;/* RL0 & */ int ReadHighByteMask1 = 0xdf;/* RL1 & */ int ReadHighByteMask2 = 0x10;/* RL0 | */ int CountValue1, CountValue2; error = NO_ERROR; switch (CounterNum){ case 1: Register = LOADREAD1; break; case 2: Register = LOADREAD2; break; case 3: Register = LOADREAD3; break; default: error = ERROR; break; } if(error == NO_ERROR){ TempByte = (0x3f | ReadLowByteMask1) & ReadLowByteMask2; outb(TempByte, CCONFIGPORT + base); CountValue1 = inb(Register + base); //printf("The low value is --> %x.n", CountValue1); TempByte = (0x3f & ReadHighByteMask1) | ReadHighByteMask2; outb(TempByte, CCONFIGPORT + base); CountValue2 = inb(Register + base); //printf("The high value is --> %x.n", CountValue2); } return error; } int das08::AIn(int ADChannel, int *Value){ // This function requires three arguments to perform the // analog to digital conversion. ADChannel must be in the // range 0-7 and Range must be a valid range code // i.e. BIP5VOLTS. The value of the conversion will be // returned to the address specificed through the pointer // variable. This value will be in the range 0-4095. int error; int value1, value2, value3, curr_status, new_status, ADbusy; int ADCmask1, ADCmask2; int ADValue_low, ADValue_low1, ADValue_low2, ADValue_high; int EOC = 1; error = NO_ERROR; curr_status = inb(ADCSTATUS + base); /* current value in status */ switch(ADChannel){ case 0:ADCmask1 = 0xf8;ADCmask2 = 0x00;break; case 1:ADCmask1 = 0xf9;ADCmask2 = 0x01;break; case 2:ADCmask1 = 0xfa;ADCmask2 = 0x02;break; case 3:ADCmask1 = 0xfb;ADCmask2 = 0x03;break; case 4:ADCmask1 = 0xfc;ADCmask2 = 0x04;break; case 5:ADCmask1 = 0xfd;ADCmask2 = 0x05;break;
  • 471. page 471 case 6:ADCmask1 = 0xfe;ADCmask2 = 0x06;break; case 7:ADCmask1 = 0xff;ADCmask2 = 0x07;break; default:error = ERROR;; break; /* error */ } if(error == NO_ERROR){ outb(chan0, GAIN + base); /* set the gain/range value */ new_status = (curr_status & ADCmask1) | ADCmask2; outb(new_status, ADCSTATUS + base); /* set the channel number */ outb(0x00, ADCLOW + base); /* start a 12 bit A/D conversion */ } while((error == NO_ERROR) && (EOC == 1)){ /* check for end of conversion */ ADbusy = inb(ADCSTATUS + base); /* read status register */ if(ADbusy >= 128){ EOC = 1; /* A/D still converting */ } else { EOC = 0; /* A/D done converting */ } } if(error == NO_ERROR){ ADValue_low = inb(ADCLOW + base); /* get the lower eight bits */ ADValue_high = inb(ADCHIGH + base); /* get the upper four bits */ switch(ADValue_high){ case 0x00:value1 = 0;break; case 0x80:value1 = 1;break; case 0x40:value1 = 2;break; case 0xc0:value1 = 3;break; case 0x20:value1 = 4;break; case 0xa0:value1 = 5;break; case 0x60:value1 = 6;break; case 0xe0:value1 = 7;break; case 0x10:value1 = 8;break; case 0x90:value1 = 9;break; case 0x50:value1 = 10;break; case 0xd0:value1 = 11;break; case 0x30:value1 = 12;break; case 0xb0:value1 = 13;break; case 0x70:value1 = 14;break; case 0xf0:value1 = 15;break; default:error = ERROR;break; } ADValue_low1 = (ADValue_low & 0x0f); /* mask off bits 4-7 */ switch(ADValue_low1){ case 0x00:value2 = 0;break; case 0x01:value2 = 16;break; case 0x02:value2 = 32;break; case 0x03:value2 = 48;break; case 0x04:value2 = 64;break; case 0x05:value2 = 80;break; case 0x06:value2 = 96;break; case 0x07:value2 = 112;break; case 0x08:value2 = 128;break; case 0x09:value2 = 144;break; case 0x0a:value2 = 160;break; case 0x0b:value2 = 176;break; case 0x0c:value2 = 192;break; case 0x0d:value2 = 208;break; case 0x0e:value2 = 224;break; case 0x0f:value2 = 240;break; default:error = ERROR;break; }
  • 472. page 472 ADValue_low2 = (ADValue_low & 0xf0); /* mask off bits 0-3 */ switch(ADValue_low2){ case 0x00:value3 = 0;break; case 0x10:value3 = 256;break; case 0x20:value3 = 512;break; case 0x30:value3 = 768;break; case 0x40:value3 = 1024;break; case 0x50:value3 = 1280;break; case 0x60:value3 = 1536;break; case 0x70:value3 = 1792;break; case 0x80:value3 = 2048;break; case 0x90:value3 = 2304;break; case 0xa0:value3 = 2560;break; case 0xb0:value3 = 2816;break; case 0xc0:value3 = 3072;break; case 0xd0:value3 = 3328;break; case 0xe0:value3 = 3584;break; case 0xf0:value3 = 3840;break; default: error = ERROR; /* error - unknown conversion result */ } *Value = value1+value2+value3; /* total value for conversion */ } return error; /* no errors detected */ } int das08::AOut(int DAChannel, int DAValue){ // This function performs a digital to analog conversion // routine. The DAChannel must be either 0 or 1 and the // digital value must be in the range 0-4095. int error; int low, high, DACLOW, DACHIGH; error = NO_ERROR; switch(DAChannel){ case 0:DACLOW = DAC0LOW;DACHIGH = DAC0HIGH;break; case 1:DACLOW = DAC1LOW;DACHIGH = DAC1HIGH;break; default:error = ERROR;break; } /* The following table converts the digital value into three hex values encompassing two 8-bit registers. The layout of the registers follow: low - DA7 DA6 DA5 DA4 DA3 DA2 DA1 DA0 high - x x x x DA11 DA10 DA9 DA8 */ if(DAValue <= 255){ low = DAValue; high = 0x00; } else if((DAValue >= 256) && (DAValue <= 511)){ low = DAValue - 256; high = 0x01; } else if((DAValue >= 512) && (DAValue <= 767)) { low = DAValue - 512; high = 0x02; } else if((DAValue >= 768) && (DAValue <= 1023)) { low = DAValue - 768; high = 0x03; } else if((DAValue >= 1024) && (DAValue <= 1279)) {
  • 473. page 473 low = DAValue - 1024; high = 0x04; } else if((DAValue >= 1280) && (DAValue <= 1535)) { low = DAValue - 1280; high = 0x05; } else if((DAValue >= 1536) && (DAValue <= 1791)) { low = DAValue - 1536; high = 0x06; } else if((DAValue >= 1792) && (DAValue <= 2047)) { low = DAValue - 1792; high = 0x07; } else if((DAValue >= 2048) && (DAValue <= 2303)){ low = DAValue - 2048; high = 0x08; } else if((DAValue >= 2304) && (DAValue <= 2559)){ low = DAValue - 2304; high = 0x09; } else if((DAValue >= 2560) && (DAValue <= 2815)){ low = DAValue - 2560; high = 0x0a; } else if((DAValue >= 2816) && (DAValue <= 3071)){ low = DAValue - 2816; high = 0x0b; } else if((DAValue >= 3072) && (DAValue <= 3327)){ low = DAValue - 3072; high = 0x0c; } else if((DAValue >= 3328) && (DAValue <= 3583)){ low = DAValue - 3328; high = 0x0d; } else if((DAValue >= 3584) && (DAValue <= 3839)){ low = DAValue - 3584; high = 0x0e; } else if((DAValue >= 3840) && (DAValue <= 4095)){ low = DAValue - 3840; high = 0x0f; } else{ error = ERROR; /* error - D/A value must be 0-4095 */ } if(error == NO_ERROR){ outb(low, DACLOW + base); /* write the low byte value */ outb(high, DACHIGH + base); /* write the high byte value */ } return error; /* no errors detected */ } Listing 16.1 - DAS08 Driver Test File (testdaq.cpp) #include <stdio.h> #include <stdlib.h> #include <string.h> #include "das08_io.h" int ChooseCounter(); int ChooseConfig(); int ChooseDir(int DirectNum);
  • 474. page 474 #define QUERY 350 #defineCHOOSE_PORT 351 #defineCHOOSE_COUNTER352 #define CHOOSE_CONFIG353 #defineCHOOSE_DIRECTION 354 int query(int, char*, int); int main(){ int choice; das08 *A; int value; A = new das08(); A->configure("das08.conf"); A->connect(); do{ printf("nn------------ DAS08 Test Harness Menu --------------n"); printf("1. Digital Configuren"); printf("2. Digital Input Bitn"); printf("3. Digital Input Wordn"); printf("4. Digital Output Bitn"); printf("5. Digital Output Wordnn"); printf("6. Counter Configuren"); printf("7. Counter Load Valuen"); printf("8. Counter Input Valuenn"); printf("9. Analog Input Valuen"); printf("10. Analog Output Valuenn"); printf("11. Quitnn"); printf("Select: "); scanf("%d", &choice); if(choice == 1){ A->DConfigPort(query(CHOOSE_PORT, NULL, 0), query(CHOOSE_DIRECTION, NULL, 0)); } else if(choice == 2){ A->DBitIn(query(CHOOSE_PORT, NULL, 0), query(QUERY, "Choose a bit (0-7): ", 0), &value); printf("The Bit Value is [%d] n", value); } else if(choice == 3){ A->DIn( query(CHOOSE_PORT, NULL, 0), &value); printf("The Value is [%d] or [%d]hexn", value, value); } else if(choice == 4){ A->DBitOut(query(CHOOSE_PORT, NULL, 0), query(QUERY, "Choose a bit (0-7): ", 0), query(QUERY, "Choose a value (0 or 1): ", 0)); } else if(choice == 5){ A->DOut( query(CHOOSE_PORT, NULL, 0), query(QUERY, "Choose a value (-128 to 127): ", 0)); } else if(choice == 6){ A->C8254Config(query(CHOOSE_COUNTER, NULL, 0), query(CHOOSE_CONFIG, NULL, 0)); } else if(choice == 7){ A->CLoad( query(CHOOSE_COUNTER, NULL, 0),
  • 475. page 475 query(QUERY, "Enter a value in the form 0x____ : ", 0)); } else if(choice == 8){ A->CIn( query(CHOOSE_COUNTER, NULL, 0), &value); printf("The Counter value was [%d]n", value); } else if(choice == 9){ A->AIn( query(QUERY, "Enter Channel Number (0-7): ", 0), &value); printf("The value is [%d]n", value); } else if(choice == 10){ A->AOut( query(QUERY, "Enter Channel Number (0-1): ", 0), query(QUERY, "Enter Value (0- 4095): ", 0)); } else if(choice == 11){ } else { printf("ERROR: Choice not recognizedn"); } } while(choice != 11); A->disconnect(); delete A; } int query(int type, char *text, int def){ char work[20]; int value; if(type == QUERY){ printf("%s [%d]: ", text, def); scanf("%s", work); printf("<%s>n", work); if(strlen(work) == 0){ return def; } else { return atoi(work); } } else if(type == CHOOSE_PORT){ printf("Which port (1=A, 2=B, 3=C, 4=CH, 5=CL, 6=AUX): "); scanf("%d", &value); if(value == 1) return PORTA; if(value == 2) return PORTB; if(value == 3) return PORTC; if(value == 4) return PORTCL; if(value == 5) return PORTCH; if(value == 6) return PORTAUX; return ERROR; } else if(type == CHOOSE_COUNTER){ printf("Which counter (1, 2, 3): "); scanf("%d", &value); if((value >= 1) || (value <= 3)) return value; return ERROR; } else if(type == CHOOSE_CONFIG){ printf("Which mode (1=HighOnLastCount, 2=OneShot, 3=RateGenerator, 4=SquareWave, 5=SoftwareStrobe, 6=HardwareStrobe): "); scanf("%d", &value); if(value == 1) return HIGHONLASTCOUNT; if(value == 2) return ONESHOT; if(value == 3) return RATEGENERATOR; if(value == 4) return SQUAREWAVE; if(value == 5) return SOFTWARESTROBE; if(value == 6) return HARDWARESTROBE; return ERROR; } else if(type == CHOOSE_DIRECTION){ printf("Which direction (1=In, 2=Out): ");
  • 476. page 476 scanf("%d", &value); if(value == 1) return DIGITALIN; if(value == 2) return DIGITALOUT; return ERROR; } else { return ERROR; } } void error_log(int code, char *string){ printf("ERROR %d: %s n", code, string); } 16.8 SUMMARY • A/D conversion will convert a continuous value to an integer value. • D/A conversion is easier and faster and will convert a digital value to an analog value. • Resolution limits the accuracy of A/D and D/A converters. • Sampling too slowly will alias the real signal. • Analog inputs are sensitive to noise. • The analog I/O cards are configured with a few words of memory. • BTW and BTR functions are needed to communicate with the analog I/O cards. 16.9 PRACTICE PROBLEMS 1. You need to read an analog voltage that has a range of -10V to 10V to a precision of +/-0.05V. What resolution of A/D converter is needed? (ans. 10V – ( – 10V ) 7 bits = 128 R = --------------------------------- = 200 - 0.1V 8 bits = 256 The minimum number of bits is 8. 2. We are given a 12 bit analog input with a range of -10V to 10V. If we put in 2.735V, what will the integer value be after the A/D conversion? What is the error? What voltage can we calcu- late?
  • 477. page 477 (ans. N = 12 R = 4096 V min = – 10V V max = 10V V in = 2.735V V in – V min V I = INT  ---------------------------- R = 2608 - V –V  max min V V C =  ----I ( V max – Vmin ) + V min = 2.734V  R- 3. We need to select a digital to analog converter for an application. The output will vary from -5V to 10V DC, and we need to be able to specify the voltage to within 50mV. What resolution will be required? How many bits will this D/A converter need? What will the accuracy be? (ans. A card with a voltage range from -10V to +10V will be selected to cover the entire range. 10V – ( – 10V ) R = --------------------------------- = 400 - minimum resolution 0.050V 8 bits = 256 9 bits = 512 10 bits = 1024 The A/D converter needs a minimum of 9 bits, but this number of bits is not commonly available, but 10 bits is, so that will be selected. V max – V min 10V – ( – 10V ) V ERROR =  ---------------------------- = --------------------------------- = ± 0.00976V - -  2R 2 ( 1024 ) 4. Write a program that will input an analog voltage, do the calculation below, and output an ana- log voltage. V out = ln ( V in ) 5. Develop a program to sample analog data values and calculate the average, standard deviation, and the control limits. The general steps are listed below. 1. Read sampled inputs. 2. Randomly select values and calculate the average and store in memory. Calculate the standard deviation of the stored values. 3. Compare the inputs to the standard deviation. If it is larger than 3 deviations from the mean, halt the process. 4. If it is larger than 2 then increase a counter A, or if it is larger than 1 increase a second counter B. If it is less than 1 reset the counters. 5. If counter A is =3 or B is =5 then shut down. 6. Goto 1.
  • 478. page 478 m UCL = X + 3σ X = ∑ Xj X j=1 LCL = X – 3σ X 16.10 LABORATORY - INTERFACING TO A DAQ CARD Purpose: To use a data aquisition card to aquire data. Overview: The daq card will be placed into a Linux computer and then controlled with the drive pro- grams listed in this chapter. Pre-Lab: 1. Visit the computer boards web site (www.computerboards.com) and review the manual for the DAS-08 ISA board. In-Lab: 1. Complete the tutorial for the DAS-08 DAQ card. 2. Modify the tutorial program so that the analog input value from the board is read once a second and written to a database. Submit (individually): 1. The program developed during the laboratory.
  • 479. page 479 17. VISIONS SYSTEMS • Vision systems are suited to applications where simpler sensors do not work. 17.1 OVERVIEW • Typical components in a modern vision system.
  • 480. page 480 Lighting Scene Camera lens iris CCD control electronics Computer Action or Reporting Image Processing Frame Grabber Software (Robot, Software (Filtering, Hardware Network, PLC, etc) Segmentation and (A/D converter Recognition) and memory) 17.2 APPLICATIONS • An example of a common vision system application is given below. The basic operation involves a belt that carries pop (soda) bottles along. As these bottles pass an optical sensor, it trig- gers a vision system to do a comparison. The system compares the captured image to stored images of acceptable bottles (with no foreign objects or cracks). If the bottle differs from the acceptable images beyond an acceptable margin, then a piston is fired to eject the bottle. (Note:
  • 481. page 481 without a separate sensor, timing for the piston firing is required). Here a PLC is used as a com- mon industrial solution controller. - All of this equipment is available off-the-shelf ($10K-$20K). In this case the object lighting, backgrounds and contrast would be very important. Light Light Emitter Stuff! Detector Light Source Stuff! Camera Stuff! Pneumatic Piston Stuff! Stuff! Pneumatic Solenoid Vision Module Programmable Logic Controller (aka PLC) Air Exhaust Air Supply 17.3 LIGHTING AND SCENE • There are certain features that are considered important in images, - boundary edges - surface texture/pattern - colors - etc
  • 482. page 482 • Boundary edges are used when trying to determine object identity/location/orientation. This requires a high contrast between object and background so that the edges are obvious. • Surface texture/pattern can be used to verify various features, for example - are numbered buttons in a telephone keypad in the correct positions? Some visually significant features must be present. • Lighting, - multiple light sources can reduce shadows (structured lighting). - back lighting with luminescent screens can provide good contrast. - lighting positions can reduce specular reflections (light diffusers help). - artificial light sources provide repeatability required by vision systems that is not possi- ble without natural light sources. 17.4 CAMERAS • Cameras use available light from a scene. • The light passes through a lens that focuses the beams on a plane inside the camera. The focal distance of the lens can be moved toward/away from the plane in the camera as the scene is moved towards/away. • An iris may also be used to mechanically reduce the amount of light when the intensity is too high. • The plane inside the camera that the light is focussed on can read the light a number of ways, but basically the camera scans the plane in a raster pattern. • An electron gun video camera is shown below. - The tube works like a standard CRT, the electron beam is generated by heating a cathode to eject electrons, and applying a potential between the anode and cathode to accelerate the electrons off of the cathode. The focussing/ deflecting coils can focus the beam using a similar potential change, or deflect the beam using a
  • 483. page 483 differential potential. The significant effect occurs at the front of the tube. The beam is scanned over the front. Where the beam is incident it will cause electrons to jump between the plates pro- portional to the light intensity at that point. The scanning occurs in a raster pattern, scanning many lines left to right, top to bottom. The pattern is repeated some number of times a second - the typ- ical refresh rate is on the order of 30Hz electron accelerator photon heated cathode scanning electron beam anode focus and signal deflection coils • Charge Coupled Device (CCD) - This is a newer solid state video capture technique. An array of cells are laid out on a semiconductor chip. A grid like array of conductors and insulators is used to move a collection of charge through the device. As the charge moves, it sweeps across the picture. As photons strike the semiconductor they knock an electron out of orbit, creating a negative and positive charge. The positive charges are then accumulated to determine light inten- sity. The mechanism for a single scan line is seen below.
  • 484. page 484 Li-1 Li Li+1 control electrodes -V +V -V oxide insulator - e- - -e e- e- - e e e e- - e- e- p-type semiconductor e e- - e- e- e e- p+ The charge is trapped in this location by voltages on the control electrodes. This location corresponds to a pixel. An incident photon causes an electron to be liber- ated. photon Li-1 Li Li+1 Li+2 -V 0V +V -V e- - - e- The charges can be ee ee- - e- - - moved to the next pixel e- - e e- e- e e- e- - location by changing the e e electrode voltages
  • 485. page 485 The description of moving the charge is for a single scan line, this can be expanded to consider the entire CCD. charge moves this way L11 L10 L9 L8 L7 L6 L5 L4 L3 L2 e- -e- L1 e e- - e L0 n-type barriers to control charge (on bottom) • Color video cameras simply use colored filters to screen light before it strikes a pixel. For an RGB scan, each color is scanned 3 times.
  • 486. page 486 17.5 FRAME GRABBER • A simple frame grabber is pictured below, pixel digital video intensities values signal signal fast A/D RAM splitter Computer bus line start address picture start generator • These items can be purchased for reasonable prices, and will become standard computer components in the near future. 17.6 IMAGE PREPROCESSING • Images are basically a set of pixels that are often less than a perfect image representation. By preprocessing, some unwanted variations/noise can be reduced, and desired features enhanced. • Some sources of image variation/noise, - electronic noise - this can be reduced by designing for a higher Signal to Noise Ratio (SNR). - lighting variations cause inconsistent lighting across an image. - equipment defects - these cause artifacts that are always present, such as stripes, or pixels stuck off or on.
  • 487. page 487 17.7 FILTERING • Filtering techniques can be applied, - thresholding - laplace filtering - fourier filters - convolution - histograms - neighborhood averaging 17.7.1 Thresholding • Thresholding basically sets a transition value. If a pixel is above the threshold, it is switched fully on, if it is below, it is turned fully off. Original Image e.g. Threshold = 2 1 2 3 4 1 7 7 7 5 6 7 5 7 7 7 7 3 7 7 4 7 7 7 7 2 3 1 2 7 7 1 7 an array of pixel brightness e.g. Threshold = 5 It can be difficult to set a good 1 1 1 1 threshold value, and the results are prone 7 7 7 7 1 7 7 1 to noise/imperfections in the image. 1 1 1 1 17.8 EDGE DETECTION
  • 488. page 488 • An image (already filtered) can be checked to find a sharp edge between the foreground and background intensities. • Let’s assume that the image below has been prefiltered into foreground (1) and background (0). An edge detection step is then performed. Actual Scene Thresholded Image Edge Detected Image 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A simple algorithm might create a new image (array) filled with zeros, then look at the original image. If any pixel has a vertical or horizontal neighbor that is 0, then the 17.9 SEGMENTATION • An image can be broken into regions that can then be used for later calculations. In effect this method looks for different self contained regions, and uses region numbers instead of pixel intensities.
  • 489. page 489 Actual Scene 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 Thresholded 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 1 Segmented 1 1 1 1 1 1 1 3 3 4 3 1 1 1 1 1 1 1 1 1 3 3 3 1 1 1 1 1 1 1 1 1 1 1 1 1 • A simple segmentation algorithm might be, 1. Threshold image to have values of 1 and 0. 2. Create a segmented image and fill it with zeros (set segment number variable to one). 3. Scanning the old image left to right, top to bottom. 4. If a pixel value of 1 is found, and the pixel is 0 in the segmented image, do a flood fill for the pixel onto the new image using segment number variable. 5. Increment segment # and go back to step 3. 6. Scan the segmented image left to right, top to bottom. 7. If a pixel is found to be fully contained in any segment, flood fill it with a new segment as in steps 4 and 5.
  • 490. page 490 17.9.1 Segment Mass Properties • When objects are rotated in the vision plane it may become difficult to use simple measures to tell them apart. At this point global attributes, such as perimeter lengths, length/width ratios, or areas can be used. • The centroid of a mass can be determined with the expression for the x direction (y is iden- tical) ˜ = ∑ M i x- = 1 ˜ n -- ∑ x i i ˜ x ----------------- - ∑ Mi n i=1 where, ˜ x = the x centroid from the left of the screen ˜ n = the number of elements inthesegment ˜ x i = the distance from the left of the screen to the pixel centre • Area is simply the sum of all pixels in the segment, A = ∑ pi where, A = Area of image (in pixels) p i = 1 if the pixel is in the segment • Perimeter is the number of pixels that can be counted around the outside of an object.
  • 491. page 491 e.g. 0 8 Area = 21 Perimeter = 16 x Centroid = 3.5 0 1 1 1 1 1 1 1 0 y Centroid = 1.5 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 4 • Compactness can be a measure of mass distribution, 2 P C = ----- - A where, C = compactness P = perimeter A = area • Another measure of mass distribution is thickness, D min Dmax T min = ----------- T max = ----------- - A A where, T = thickness Dmin/Dmax = smallest/largest diameters A = Area 17.10 RECOGNITION 17.10.1 Form Fitting
  • 492. page 492 • It can sometimes help to relate a shape to some other geometric primitive using compact- ness, perimeter, area, etc. - ellipse - square - circle - rectangle 17.10.2 Decision Trees • In the event that a very limited number of parts is considered, a decision tree can be used. The tree should start with the most significant features first, then eventually make decisions on the least significant. Typical factors considered are, - area - hole area - perimeter - maximum, minimum and average radius - compactness • An example of a decision tree is given below. (Note: this can be easily implemented with if- then rules or Boolean equations) Part A C<10 Dmin<0.1 Part B Dmin>=0.1 Part C C>=10 Part D C>=20 A>=20 Part E A<20
  • 493. page 493 Bar Codes • Bar codes are a common way to encode numbers, and sometimes letters. • The code is sequential left to right, and is characterized by bars and spaces of varied widths. The bar widths corresponds to a numerical digits. These are then encoded into ASCII characters. • To remain noise resistant there are unused codes in the numerical sequence. If any value scanned is one of the unused values the scan is determined to be invalid. • There are different encoding schemes. Code 39/Codabar - these use bars of two different widths for binary encoding Code 128 - these use different bar widths uses proportional widths to encode a range of values UPC (Universal Product Code) - EAN (European Article Numbering) - • The example below shows how a number is encoded with a bar code.
  • 494. page 494 17.11 PRACTICE PROBLEMS 1. Consider a circle and an ellipse that might be viewed by a vision system. The circle has a 4” radius, whereas the ellipse has a minor and major radius of 2” and 4”. Compare the two defini- tions using form factors (compactness and thickness) and show how they differ.
  • 495. page 495 ans. circle circle R = 4 R1 = 2 R2 = 4 D min = 8 D max = 8 D min = 4 D max = 8 2 A = πR = 50.3 A = πR 1 R 2 = 25.1 2 2 P = π ( 2R ) = 25.1 R1 + R2 P ≈ 2π ----------------- = 19.9 - 2 Compactness values differ 2 2 P P C = ----- = 12.5 - C = ----- = 15.8 - A A the min/max values are the same for the circle D min D min T min = T max = ----------- = 0.16 T min = ----------- = 0.16 A A D max T max = ----------- = 0.32 - A 2. Describe image resolution in vision systems. ans. Resolution of a video image describes the number of rows and columns of pixels in a video image. A higher resolution means that there are more rows of pixels in the images, and therefore we can distinguish smaller details. 3. An image has been captured from a video camera, and stored in the matrix below.
  • 496. page 496 64 87 54 64 12 35 22 36 36 57 76 24 84 26 63 74 84 187 201 234 195 222 198 25 54 78 197 198 34 75 218 74 25 9 84 202 194 213 192 79 37 25 57 98 93 95 91 89 a) Use a threshold of 100 to filter the image. ANS. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 b) Perform an edge detection on the thresholded image.
  • 497. page 497 ANS. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 c) Segment the image into distinct regions. ANS. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 2 2 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 d) Calculate the compactness and thickness for the region above the threshold. ANS. 2 3- 6- ( 22 ) - T = ----- OR ----- C = ------------ 13 13 13 e) Calculate form factors including perimeter, area, centroid, compactness and minimum and maximum thickness.
  • 498. page 498 4. We have four part shapes (as listed below) that will be arriving on a conveyor. We want to develop a decision tree for the vision system to tell them apart. We also need to find their cen- troids relative to the top left of the image so that a robot may pick them up. Isosceles triangle 6” per side Rectangle 2” by 8” Triangle with side lengths 8”, 5” and 4” Circle 5” Radius ans. First, calculate the form factors Form Area Perim Com- Tmin eter pact isosceles tri- 15.5 0.333 angle 9 18 20.78 3 rectangle 16 20 25 0.125 A > 40 circle A < 40 Tmin < 0.18 rectangle Tmin > 0.18 C > 28 odd triangle C < 28 isosceles triangle
  • 499. page 499 17.12 TUTORIAL - LABVIEW BASED IMAQ VISION 1. Locate the appropriate hardware and software for the laboratory. This includes a video camera with an appropriate lens attached. A BNC cable to connect to the computer. A computer with the National Instruments IMAQ PCI-1408 vision card and IMAQ software installed. 2. We will start by verifying that the vision system is working properly. To do this run the “IMAQ Configuration Utility”. You should see a screen that shows the computer and PCI-1408 card. Click on the ‘+’ to the left of the card and you should see four input channels appear. The first of these is ‘channel 0’, click on it. Next, select “Aquire”, “Grab”, a window should appear that shows a video feed. Adjust/focus the lens until a clear image appears. Note that the lens attached is a TV lens. For small distances (less than 2-3 feet) the lens will be very sensitive to focus, when a longer focus is used it will be much less sensitive. Explore the software settings for the camera. Feel free to change values, but record the original value so that it may be changed back. When you feel comfortable that the video images are being captured properly, continue to the next step. 3. Run Labview, and open a “New vi”. Construct the vi below to capture an image and display it on the screen. Panel Diagram test IMAQ snap (From left to right) First create a string, and enter ‘test’ or something else. Next create the ‘IMAQ’ icon using “IMAQ Vision”, “Management”, “IMAQ”. This will create a generic place to store images. At this point the image size, etc is not important. Now that we have a place to store the image, we can grab images from the camera with the ‘snap’ icon found at “Image Aquisition”, “Snap”. Finally we can display the images using the last icon found at “IMAQ
  • 500. page 500 Vision”, “Display (basics)”, “IMAQ WindDraw”. Connect these together and run the vi. You should see an image from the camera. Notice that these icons are doing a lot that is not on the screen. The vision add-on to Labview does not fully follow the philosophy of graphical pro- gramming. Things like the display window are not shown in the panel where they should be. These ‘cheats’ are necessary because of the huge amount of data required for vision tasks. Take some time to explore the other vision tools, and try modifying the vision program. 4. Close the vi and do not save changes to any other vi (this could save some settings per- manantly). Next, use “Open vi” and open “examples”, “vision”, “barcodedemo.vi”. Run the vi. An image of a barcode should appear. Use the mouse to put a rectangle over the bar code. Then accept the Region of Interest “ROI”. After this the program will use images saved on disk to test the routine. The codes should match the displayed images. Stop the vi and look at the dia- gram to see the general operation - it is set up to use a sequence. Notice that the first frame in the sequence pulls an image from a file, and displays it on the screen. The next couple of frames deal with getting the region of interest. The fourth sequence (3 of 0 to 4) captures images and decodes the barcodes. The last sequence is used to release the vision memory, etc. Notice that the images are being supplied by a function called “simu GRAB”, replace this with the normal snap routine and run the program (put a vi in front of the camera). You should now see the images, but they are not decoded properly. Notice that the barcode icon has an integer digit input of ‘3’, you will need to change this value to get the barcodes to decode properly. 5. Close the vi (don’t save any changes). Open the example vi “caliperdemo.vi”, and run the vi. This vi can be used to check the presence of objects. Draw lines across the image. Each point where the line goes from light/dark or dark/light an edge will be detected. If the line is accepted you will see it appear on the list, you will want to change the number of edges. You can have more than one test line. When done run the test and see how it behaves. Look at the diagram for the vi and modify it to use the camera (as you did for the barcode reader). 17.13 LABORATORY - VISION SYSTEMS FOR INSPECTION Purpose: A vision system will be explored and implemented in the laboratory setting. Overview: The vision system is based on Labview. A dedicate PC will be used in the cell to process the vision commands. Using labview the PC can then be connected to the Soft PLC controller. Pre-Lab: 1. Review labview programming using tutorials found at the national instruments site (www.natinst.com). In-Lab:
  • 501. page 501 1. Complete the Labview vision tutorial. 2. Modify the appropriate test program to read bar codes, and save them to a file 3. Modify the appropriate test program to read a dimension of arbitrary parts and write the dimension to a serial port. Submit: 1. Printouts of the modified test programs.
  • 502. page 502 18. INTEGRATION ISSUES 18.1 CORPORATE STRUCTURES • First consider the major functions within a company, - Production - Materials - Process Planning - Design - Customer Orders / Service - Marketing - Accounting - Management • All of these functions generate and use common information which must be communicated between departments. • Since computers handle information, we must be aware of what we get, and what we pro- duce. 18.2 CORPORATE COMMUNICATIONS • Previous paper based systems provided support for data transfer between departments, and provided a good basis for the introduction of computers • ASIDE: Computers can make a good system better, but they will always make a bad system worse. This is because a system which is not well defined and poorly understood cannot be pro- grammed, or optimized. • Characteristics of paper based manufacturing systems,
  • 503. page 503 - Multiple copies of same information. - Revising information is hard when multiple copies exist. - Delays for the transfer of paper. - Easy to lose paper. - Paper is not interactive. - Paper requires bulky storage. • Computers overcome and reduce the problems above, but introduce some technological challenges, - Creating programs to support corporate functions. - Software to support interdepartmental communication and data sharing. - Hardware to support the software.
  • 504. C u sto m er M arketin g an d S ales A cco untin g M FG Transit R M & E n erg y C o m pan y C onfirm S ales C o sts A nnual S ales O rder F orecast S up plier / P ro d uc tio n A ccoun ting C o st Ven do r P ro cess M anage C redit L im it R elease Invoice and O ther P o licy O rder Invoice O rd ers P rod uct T ran sp o rt 1 C o sts S h ip p in g C o st M anag e P ay m en t 9 O rd er P ro du ct R elea se O rder In vo ic e S h ippin g P rodu ction Availability A ccep ted 8 S u pp lier M anage O rd er P e rfo rm an ce P ro cu rem en t S ch edu le R e serv atio n R elease To S h ip 5 P ro ductio n page 504 S hip 2 P ack O ut S c he du le S h ipp ing C onfirm D ocum en ts Invoice and Inventory B alance P urchasing S u p plier D ata P urchase O rder R eq In v en to ry M an age L o n g Te rm C o st O B J P rodu ct S ched ule O rder R eq M aterial an d E n erg y W aiv ers R eq u irem en ts C u sto m er C ap acity P erfo rm an ce Q A R esu lt In vento ry Incom ing & C o sts M an ag e P a rts 7 C o m m un ication R M & E n erg y STDS A ssum e R aw M aterial Inc om ing M anage an d E n erg y M a terial an d P rodu ction Q u ality E n erg y R eq d QA 6 4 3 R esults R e qm ts R eq m ts M a terial an d E n ergy Inv en to ry O rde r R eq u est A pp ro v als D ata M ark eting E xternal E ntities M eth o d s K now and S ales M ark etin g O rd er H ow S tatu s C orporate • This figure below shows various departments, and the information flow [source - ??? P lant F un ctional E ntities and S ales R& D
  • 505. page 505 • Requirements for interfacing corporate management and staff functional entities to the fac- tory [source - find] R equire- m ents ACCT factuing policies M anu- M anpow er H um an RES FA C TO RY L E V E L 0.0 R equire- Policies m ents MGMT SALES M KTG CORP and K now - H ow RD&E C ontracts Vendor PURCH E xternal E ntities • Assumed functional hierarchy computer system structure for a large manufacturing com-
  • 506. page 506 plex [source - find] Orders Management Plant Sales Data Management Presentation Information Communications with other areas Level4 Operational and Plant Production Production Scheduling and Supervision Operational Management supervisory systems Communications Inter-area with other Supervisor’s Coordination Level3 Console (Shop coordination) Supervisor’s Work Cell (Direct Numerical Communications control systems Level2 Console Control) with other Operator’s Work Station Console (Computerized numerical Control) Level 1 Dedicated Programmable Logic Controllers PROCESS
  • 507. CORP [source - find] MGMT Corporate Performance reporting External operational Entities performance Policies MKTG Human PURCH RD&E and ACCT page 507 SALES RES raw material, energy Requests for Status of Manpower Cost and spare parts information, Production performance reporting orders plant tests orders data and reqmts FACTORY LEVEL 0.0 • Report interfacing to corporate management and staff functional entities from the factory
  • 508. page 508 • The Shop Floor Production Model (SFPM): [ source - find] Level Sub-Activity Responsibility Supervise shop Supervising and coordinating 4 Section/ floor production process the production and supporting the Area jobs and obtaining and allocating resources to the jobs. Coordinate shop Sequencing and supervising 3 Cell floor production the jobs at the shop floor produc- process tion process Command shop Directing and coordinating the 2 Station floor production process shop floor production process Execute shop floor Executing the job of shop 1 Equipment production process floor production according to com- mands The ISO Reference Model for Factory Automation adds a couple of layers [ source - find] Level/ Area of Con- Responsibility Basic Functions Hierarchy trol 6/ Managing the Achieving the Corporate management Enterprise corporation enterprise’s mission Finance and managing the Marketing and sales corporation Research and Development
  • 509. page 509 Level/ Area of Con- Responsibility Basic Functions Hierarchy trol 5/ Planning Pro- Implementing Product design and production Facility or duction the enterprise func- engineering plant tions and planning Production management (upper and scheduling pro- level) duction Resource management (upper level) Procurement (upper level) Maintenance management (upper level) 4/ Allocating and Coordinating Production management (lower Section or supervising materi- production and level) area als and resources obtaining and allocat- Procurement (lower level) ing resources to jobs Resource management (lower level) Maintenance management (lower level) Shipping Waste material treatment 3 / Cell Coordinating Sequencing and Shop floor production (cell level) multiple machines supervising shop and operations floor jobs and super- vising various sup- porting services 2 / Station commanding Directing and Shop floor production (station machine sequences coordinating the level) and motion activity of the shop floor equipment
  • 510. page 510 Level/ Area of Con- Responsibility Basic Functions Hierarchy trol 1 / Equip- Activating Taking action on Shop floor production (equip- ment sequences and commands to the ment level) motion shop floor equipment
  • 511. page 511 • A LAN (Computer Network) Hierarchy for Shop Floor Control [source - find] E n te rp rise L A N L ev e l 6 : E n terp rise F ac to ry B ac k b o n e L A N L ev e l 5 : F ac ility o r P lan t S ec tio n S e ctio n S ec tio n C o n tro lle r A C o n tro lle r B C o n tro ller C sim ila r to A sim ila r to A S ec tio n A L A N L ev e l 4 : S ec tio n o r A re a C ell C ell C o n tro ller A C o n tro lle r B C e ll A L A N C ell B L A N L ev e l 3 : C e ll D e v ic e D e v ic e D e v ice D e v ice L ev e l 2 : C o n tro ller A C o n tro ller B C o n tro lle r A C o n tro ller B S tatio n L ev e l 1 : E q u ip m en t D ev ic e D e v ice D ev ice D e v ic e D ev ice D e v ic e D e v ice D ev ic e D e v ice D ev ice D e v ic e D ev ice
  • 512. page 512 • Typical Architecture for Manufacturing Components [ update] Item Equipment Workstation Cell EXAM- Lathe, Mill, T-10 Robot tended Variable Mission PLES Bridgeport Series I Machine Center, Car- System, Several Inte- IBM 7545 Robot trac Material Handling grated workstations Hardware System Mark Century Allen-Bradley Windows NT, Controller 2000, Accuramatic PLC-5, IBM-PC, etc. SUN workstation, etc. Hardware 9000, Custom-single- board system. Type Con- Single-board pro- PLC, PC, Mini- PC, Microcom- troller cessors, Machine tool computer puter, Super-MiniCom- controller, Servo-Con- puter troller, etc Language Assembler, Part C, Ladder logic, C, LISP, FOR- Application programming, Robot Pascal and other TRAN, and other high programming, etc. sequential languages level languages Memory/ 8k-128k RAM 32M RAM, >1M 128M RAM, Size Require- plus custom ROM, Hard Drive >1Gigabyte Hard drive ments EPROM, etc. Response < 10-3 sec < 1 sec < 20 sec Time Machines/ 1-1 connect 1-many 1-many Interconnects 1-[1,8] Machine 1-[1-15] worksta- tools, tions 1-[1-50] Material handling
  • 513. page 513 • Functional Breakdown of Control Architecture Equipment Workstation Cell Planning Tool selection, parame- •Resource allocation Batching, Workload ter specification, tool path jobs balancing between worksta- refinement, GMT code, tool •Batch splitting and tions, Requirements planning assignment to slots, job setup equipment load balancing Task allocation to planning workstations Planning Milliseconds - Minutes Minutes - Hours/Days Hours - Days/weeks Horizon Schedul- •Operation sequencing •Sequence equipment •Assignment of due ing at individual equipment level subsystems dates to individual worksta- •Deadlock detection tions and avoidance •Look ahead ES/simu- •Gantt chart or E.S. lation based scheduling based scheduling •Optimization based •Buffer management tech •Batch sequencing Control •Interface to worksta- •Monitor equipment Organizational control tion controller states and execute part and of workstations, Interface •Physical control information flow actions with MPS, generation of (motion control at NC and based on states reports, etc. robot pick and place level) •Synchronize actions •Execution of control between equipment (eg. programs (APT, AML, etc.) robot & machine while load- ing/unloading parts) • Ladder logic execu- tion • In all of these models we must consider the value of the information being passed. At the low level control stages, information that is more than a few seconds old may be completely
  • 514. page 514 worthless, while the same information at the higher level may be valuable for quality tracking months later. • We can draw part of a simple flow chart that illustrates a simple CIM system. The elements shown include a PLC, NC machine, and stand alone sensors. These are all integrated by a single computer running cell control software. Operation Cell status and plans quality reports Cell Controller (IBM PC) NC NC Quality Programs Status Measurements CNC Actuators, CNC Actuators, Gauges Controller Structure, Controller Sensors and Meters Sensors 18.3 COMPUTER CONTROLLED BATCH PROCESSES • The nature of Batch processes, - Batch processes deal with discrete quantities of raw materials or products. - batch processes allow the tracking of these discrete quantities of materials or products - batch processes allow more than one type of product to be processed simultaneously, as
  • 515. page 515 long as the products are separated by the equipment layout. - Batch processes entail movement of discrete product from processing area to processing area - Batch processes have recipes (or processing instructions) associated with each load of raw material to be processed into product. - Batch processes have more complex logic associated with processing than is found in continuous processes - Batch processes often include normal steps that can fail, and thus also include special steps to be taken in the event of a failure. • The nature of steps in a batch process, - Each step can be simple or complex in nature, consisting of one or more operations - Generally, once a step is started it must be completed to be successful. - It is not uncommon to require some operator approval before leaving one step and start- ing the next. - There is frequently provision for non-normal exits to be taken because of operator inter- vention, equipment failure or the detection of hazardous conditions. - Depending on the recipe for the product being processed, a step may be bypassed for some products. - The processing operations for each step are generally under recipe control, but may be modified by operator override action. • A typical process step Operator or Operator or Operator Recipe Hold at Recipe Bypass Abort Completion Command Command Command Yes No Perform Step Hold Previous Bypass Step at step No Next Step Operation completion Step Yes Fault Detected or Operator Abort Fault Exit to pre-defined step
  • 516. page 516 18.4 PRACTICE PROBLEMS 1. List 5 industries that are well suited to integration, and 5 that are not. Indicate why you think so. 2. In an automated factory there as many as six levels of control. Discuss the equipment available in the lab and how this relates to the 6 level model of factor floor control. ans. The lab equipment (right now) only satisfies the first couple of levels. You can 3. Information drives an automated factory from the initial entry of geometry in CAD, to the final production of parts with CAM. Discuss how data networks support this and the impact of open network standards. 4. 18.5 LABORATORY - WORKCELL INTEGRATION Purpose: All of the components explored in the laboratories of previous weeks will be integrated into a final working cell. Overview: Pre-Lab:
  • 517. page 517 To be determined. In-Lab: 1. To be determined. Submit (individually): 1. To be determined.
  • 518. page 518 19. MATERIAL HANDLING • Basic purpose is to provide automatic transfer of workparts between automated machines, and interface with individual work stations. 19.1 INTRODUCTION • Basic layouts for material handling include, - lines - stations arranged along a fixed part transfer path. - batch - stations are grouped by function and batches of raw materials/WIP are brought in batches - job shop - individual parts are carried through one or more stages by one worker - job site - equipment is brought to the work • These transfer systems can also be categorized by their timing approach, - synchronous - the entire line moves parts with a fixed period cycle. This is well suited to mass production of similar products. - asynchronous - parts are moved as completed or needed. Often buffers are required, but this is more tolerant of problems than synchronous systems. - continuous - the product flows by without stopping • Basic Requirements, • Random, independent movement of palletized workparts between workstations in the FMS - pallets can flow from any station to any other - parts are mounted in pallet fixtures - pallets can move independently to avoid interference • Temporary storage or banking of workparts - queues allow parts to wait for machines, thus increasing efficiency • Convenient access for loading and unloading workparts - easy to do manual load/unload. - automatic loading/unloading of parts at workstations - can load/unload from either side of system • Compatible with computer control • Provision for future expansion
  • 519. page 519 - modular extensions to system are desirable • Adherence to all applicable industrial codes - safety, noise, etc. • Access to machine tools - allow unobstructed floor level access to each workstation • Operation in shop environment - must be reliable when exposed to metal chips, cutting fluids, oil, dirt, etc. • Common type of Material handling systems - power roller conveyors - power and free overhead conveyors - shuttle conveyors - floor “towline” systems
  • 520. page 520 - robots (in a limited sense) - indexing (geneva mechanism) - walking beam 19.2 VIBRATORY FEEDERS • When small parts are hard to orient we can dump them in a vibratory feeder. • The vibrations cause parts to ‘hop’ forward. • Various cutouts, tracks, etc are added to sort parts.
  • 521. page 521 19.3 PRACTICE QUESTIONS 1. What are pallets used for? (ans. to acts as holders for work that is being transported) 2. List possible methods for guiding an AGV. (ans. guide wire, vision, painted lines, chain) 19.4 LABORATORY - MATERIAL HANDLING SYSTEM • For this lab the class will be divided into two halves. One group will do part A, the other group will do part B. Both groupswill have to work together for a successful lab. • System Objective: When done the system should be able to pass a shuttle in a continuous loop. 19.4.1 System Assembly and Simple Controls Purpose: The SoftPLC and devicenet will be used to control the material handling system Lock and go stations. Overview: The material handling system is designed in a modular format. Each of the track sections can be disassembled and reassembled in other configurations. In total there are, 4 turnstations 6 straight track sections (2 have stands for suspending overhead gear) 2 90 degree track sections 1 conveyor system for a straight track section 12 shuttles The material handling system will be outfitted with the devicenet based controls system to move the shuttles around the system. This system will be added to in later labs. The shuttles are actuated using solenoid valves for an air supply. By actuating the “lock and go” stations the cart can be stopped, or ejected.
  • 522. page 522 Pre-Lab: Examine the system components and determine (as a group) how the system will work. Implement ladder logic to control the system. In-Lab: 1. Connect the track sections. 2. Connect solenoid valves to the “lock an go” stations - except on the turnstations. Add sensors to detect the presence of a shuttle 3. Wire the solenoid valves to the softPLC and write the ladder logic required to control the stations. Submit: 1. All design work.
  • 523. page 523 19.5 AN EXAMPLE OF AN FMS CELL 19.5.1 Overview • A workcell has been constructed using one light industrial robot, and one NC milling machine. Some automated fixtures are also used. • All of the devices in the workcell are controlled from a single Sun computer. This is an engineering workstation with UNIX. Thus, it is capable of multitasking (running more than one program at once). • Software drivers, interfaces, and applications have been developed, to aid in teaching and demonstration. • The following pages will describe the interfacing in the workcell, as an example of the con- nection between process control computers and a plant floor computer. A project in development will be discussed for networking Plant Floor (and higher) computers.
  • 524. page 524 FMS Cell Connection Diagram Plant Floor Control & Up (Network Based Level) Ethernet Ethernet Sun Computer (“Sunbane”) Sun Computer (“RA”) RS 232 Interface Level RS 232 RS 232 RS 232 IBM PC Compatible (Running CAM/CAM Software) Process Controllers CRS Robot Controller Dyna Controller Microbot Controller Sensors and Actuator Level rocesses Conveyor Belt DYNA NC CRS Plus Robot Pneumatic Vice Milling Machine Microbot Teach Mover
  • 525. page 525 19.5.2 Workcell Specifications • Workcell Layout NC Milling Conveyor NC Milling Machine Machine Robot Controller Pneumatic Vice gripper Pneumatic Vice Robot Controller Controller Sun 3/60 Computer • Devices: 1 Sun Computer 2. CRS-Plus robot • A five axis, articulated robot arm • Communicates over an RS232 serial data line • Interprets a language called RAPL • Has 16 Digital I/O lines • Uses a pneumatically controlled gripper • The robot controller is 8088 based 3. DYNA-Mite Milling Machine • A 3-axis 2.5D milling machine • Uses a proprietary NC code • Can be run locally, or remotely (over RS232 serial communication lines) • Programs may be executed as they are entered, or when they are completely ordered • Can handle objects of dimensions 6” by 5” by 4”
  • 526. page 526 • Can machine plexiglass, wax, aluminum, steel (at low feed rates) 4. Pneumatic Vice • Has a maximum opening of 4 inches • Has a maximum travel of 1 inches • Controlled by a pneumatic solenoid • Pneumatic solenoid controlled from CRS-Plus robot controller 5. Conveyor • A former undergraduate student project • Activated electronically by the CRS-Plus robot controller 6. Fixtures (for making customized keytags) • These are highly specific to the task being performed • Parts Feeder - Provides a structured environment so that the robot may easily pick up the parts. • Robot Gripper - Designed to provide a reasonable reach into the vice (and parts feeder), and to firmly grasp the workpiece. • Vice Fixture - Designed to hold the workpiece at a level fixed height, and has a location for drill through of the keytag. This part does not effect the travel of the vice. 19.5.3 Operation of The Cell
  • 527. page 527 • Developed/Proprietary software in the workcell User Interface User Interface Programming Routines (written with the Sunview Window Interface Library) Module on Sun Device Robot Vice Conveyor DynaMill Specific Control Control Control Control Routines Subroutines Subroutines Subroutines Subroutines on Sun Serial Software Interface Written Routines Serial Communication Subroutines on Sun Controllers and proprietary DynaMill Hardware CRS-Plus Robot Controller Controller Operating Purchased Systems or Built CRS-Plus Pneumatic Conveyor DynaMill Hardware Milling Robot Vice Belt Machine High Level User Interface ( or application program) Low Level Device Drives and Communication Routines Hardware and Controllers Supplied by Manufacturers (except Conveyor)
  • 528. page 528 2.1.4 - Example of Robot and Vice Software Driver Use void demo() { static double a1, a2, a3, a4, a5; Set up Robot crs_init(); Set speed to 40% of Maximum crs_speed(40.0); crs_open(); Open the Gripper crs_close(); Close the Gripper conv_on(); Turn on Conveyor crs_xy_r_move(-5.0, -5.0, 0.0); crs_xy_status(&a1, &a2, &a3, &a4, &a5); Move Robot with relative conv_off(); Cartesian Coordinates crs_xy_a_move(a1+3.0, a2+2.0, a3); Return Cartesian Position of crs_depart(-2.0); End Effector crs_depart(2.0); Turn off Conveyor crs_home(); crs_r_move(0.0, 10.0, 0.0, 0.0, 0.0); crs_speed(100.0) Move Robot to absolute Cartesian Position vice_closed(); Move robot gripper 2” forward crs_a_move(-90.0, 0.0,0.0,0.0,0.0); vice_open(); Move robot gripper 2” backward } Move robot to home position Move robot in relative joint coordinates Close the Vice Move the Robot in Absolute Joint Coordinates Open the Vice
  • 529. page 529 • NC code Example (for the Dyna Milling Machine) 000 START INS 01 Start Program in inches 001 TD = 0.125 Set Tool Diameter 002 FRXY = 10 003 FRZ = 4 Set Feed Rates 004 SETUP > zcxyu Set Absolute Zero Position 005 GOY -.625 006 GOZ -.125 Move to Start Position 007 GRa -180 A 008 ZERO AT 009 X .634 010 Y .5 B 2.00” 011 GOr .125 012 a 90 013 GRa -30 B 014 > REF COODS 30° Y 015 ZERO AT 0.50” 016 X 1.50 Z C 017 Y 0 C X 018 GOr .125 D 019 a 60 0.50” A 020 GRa -60 E 021 > REF COODS F 022 ZERO AT 023 X 1.5 024 Y -0.3 0.20”R D 025 GOr .125 026 a 0 027 GRa -90 E 028 GRX -1.3 F 029 END End Program
  • 530. page 530 • An Example of the Dyna Mill Software Drivers void demo() { char ret[100]; /* Initialize Dyna Mill and check for failure */ if(dyna_init() == NO_ERROR){ /* Send NC Program to Dyna Mill */ dyna_load(“/usr/people/cim/nc.code/test1.nc”); /* Download program from NC Mill */ dyna_download(“/usr/people/cim/nc.code/test”); /* Send program to mill 1 step at a time */ dyna_step(“/usr/people/cim/nc.code/test2.nc”); } /* Deinitialize mill */ dyna_kill(); }
  • 531. page 531 • A User interface for Workcell Control Robot Control Subwindow Vice and Conveyor Controls Dyna Mill Control Subwindow Key Tag Programs (Also uses Dyna Mill) Programming Master Control
  • 532. page 532 • Actual Communication with devices, via a report window
  • 533. page 533 • Workcell Programming window • Advantages: • UNIX Based system allows easy control of cell in modes which are both parallel and/or concurrent • A blend of high level computers with low level devices allows for a very modular sys- tem, with a variety of computing resources. • Synchronization of processes is very simple. • Allows rapid reconfiguration of the workcell. • This workcell will perform all of the basic CAD/CAM/CIM functions. • The hierarchical design of software tools has simplified the development of new applica- tions. • Disadvantages:
  • 534. page 534 • Many Equipment manufacturers have not considered this type of control (they prefer stand alone modes), and thus their machines lack self calibration features, and soft- ware is made to be user interactive, and batch, but is not very friendly for software applications. • Requires technical people to operate the equipments. 19.6 THE NEED FOR CONCURRENT PROCESSING • An individual computer is not powerful enough to control an entire factory. And, a single program would be too complex. Therefore, there is a need for many computers and programs which interact. • The example below involves two programs. The first program will control the robot, and the second will cut key tags with the NC machine. • While the keytags are being cut, the robot program will move pegs around in the cell. This requires that the control software be very complex, or that two programs be used. • if two programs are used, then some communication is required for sequencing tasks in the work cell. • Concurrent tasks in the workcell use message passing between programs,
  • 535. page 535 Program #1 Program #2 Start Start Call for New Part Is messages Wait for Dyna Mill Yes passed through Part Loaded file #1 Waiting for Part ? Move to Milling Position Load Part Mill out No Keytag Move to Unload Position Call for Unloading Keytag Is Yes Dyna Mill messages Done with passed through Wait for Part ? file #2 Part Unloaded Unload No Part Is Another Yes Name Left ? Swap a Peg No Stop • Strategies for Concurrent processing, involve how the processes are split apart, and how they communicate, - Have a number of processes which communicate directly to one another (point to point). This is synchronous and well suited to real-time control. - Use a buffered message passing system. This allows asynchronous communication between processes running at different speeds, which do not do real-time control. - Remote Procedure Calls allows one program to run other programs remotely. This is suited to well defined problems, but every program must have knowledge of the other computers in the network.
  • 536. page 536 19.7 PRACTICE PROBLEMS 1. What is concurrent (parallel) processing and why is it important for workcell control? (ans. to allow equipment to do other tasks while one machine is processing) 2. What is meant by the term “Device Driver”? (ans. a piece of hardware that allows a connections to a specific piece of hardware)
  • 537. page 537 20. PETRI NETS 20.1 INTRODUCTION Petri nets are useful tools for modelling systems with control flow. In particular they aid in modelling systems with concurrency, and parallelism. A set of routines have been developed at UWO to serve as the basis for a manufacturing simulation. The routines will support a number of various Petri net functions. The basic operation of the Petri net may be simulated. As well the EOR transitions will also be modelled. An attempt has been made to add ‘colors’ to the tokens, but at the present there is insufficient information (i.e., no references) to verify the implementa- tion. The routines have been written in a user friendly way to allow simple application interface. Places and Transitions are specified with textual names. A brief theory of petri nets follows. • These are like state diagrams, except multiple states can be active at the same time. • Other techniques, such as GRAFCET, are based on Petri nets. 20.2 A BRIEF OUTLINE OF PETRI NET THEORY There are four basic elements in a petri net; places, transitions, arcs, and tokens. If we are to think in terms of a factory, tokens are equivalent to work parts. Arcs are the paths the work will follow through the factory. Places are buffers where parts are stored temporarily, and transitions are equivalent to machines where the parts are used to make new parts.
  • 538. page 538 Token Place Arc Transition stock from stock from stock from inventory supplier cutter feeder hopper Bolt Maker Nut Maker Petri Net Model Bolt Hopper Nut Hopper Screwing Machine Finished Part The basic operation is that tokens are introduced to the network, and then transitions are fired in different orders, and thus tokens are created and destroyed at the transitions. The example below follows the petri net for a few cycles. The first figure shows the Petri Net with the initial markings.
  • 539. page 539 this transition was fired this transition was fired
  • 540. page 540 this transition was fired The reader should note that there are a few interesting properties found in Petri nets. • Transitions are fired when all of their inputs are satisfied, and the user specifies that transi- tion. • Most analysis of petri nets uses random firings of the transitions to obtain statistical perfor- mance. Other basic references to the petri net theory are available in Peterson [1981] and Reisig [1985]. 20.3 MORE REVIEW • Ideal for parallel control problems
  • 541. page 541 Token - Indicates place active (control) Place - Indicates part of a system state (as before). If there is a token here, the place is valid, or active. Transition - This will wait until all inputs have a token. Those tokens are destroyed and new tokens are put into all the outputs e.g. An example of basic operation The Petri Net (with no tokens)
  • 542. page 542 Initial State : The tokens are added below, based upon the system Step 1 : One of the states gives up a token (this is arbitrary and depends on the state) transition condition fires Step 2 : Another state gives up a token (again arbitrary) In this case the transition can fire because both input places now have tokens, we are only wait- ing for the condition to occur.
  • 543. page 543 Step 3: Here the conditions of the transition are met. The two input tokens are con- sumed and a new token is created for the output place. Step 4: We see the condition for the transition met. This continues on indefinitely......... • Basic logic functions are shown below,
  • 544. page 544 and exclusive or regulator or action loop/repeat if/wait (state transition) synchronize state machines (only 1 input/output on transitions) • We can model various logic functions with Petri nets,
  • 545. page 545 And - Both inputs must be present to fire Recirculator - keeps only one action at a time Or - one or the other input will start the process If - this state can chose to send the token on either arc Parallel - both processes will run in parallel at the same time • Reachability allows us to determine if a state (set of places) is possible given an initial con- dition. • Boundedness determines whether the number of states will be controlled, or grow/shrink. • Deadlock and liveliness - will the controller find itself unable to continue.
  • 546. page 546 • The procedure for producing ladder logic and other programs from the Petri Nets, is identi- cal to producing Ladder Logic for SFC diagrams.
  • 547. page 547 e.g. Petri Net for a single cup coffee maker money start added cleaning cleaning done cleaning off start water start heater grinder drop cup temp. sensor 3 sec delay heater off stop grinder cup removed filter coffee 10 sec delay pour coffee Try: 1. Add a coffee strength selection to the Petri Net. 2. Draw the petri net above using a Parallel Process Flowchart 3. Develop some ladder logic for the petri net diagram
  • 548. page 548 • Petri nets have been used for the modeling, control and validation of the control model [Teng and Black, 1988] 20.4 USING THE SUBROUTINES 20.4.1 Basic Petri Net Simulation The subroutines are applied in a methodical manner. Before the user can integrate the subrou- tines into their program, they must draw out the petri net, and label all places and transitions. The example given above is illustrated below. p3 p1 t1 p2 t2 t4 p5 t3 p4 After these labels are determined, they are defined using the petri net subroutines. The arcs in the petri net are also defined in the program. There are defined with respect to the transitions. That is to say that an arc is an input to, or output from a transition. After the petri net structure has been defined, tokens may be placed in the places of the net. The tokens are as given in the previous example.
  • 549. page 549 p3 p1 t1 p2 t2 t4 p5 t3 p4 The transitions are then selectively fired in the net, by function calls in the program. This pro- gram also has calls to functions which print the petri net structure after each transition. The code is show below for the example above. #include <stdio.h> #include <stdlib.h> #include <string.h> #include “global.h” #include “petri.h” int test1() /* * BASIC TEST NET (Peterson book, 1981, pg. 19) */ { static int error; static struct petri_net net; static int p1, p2, p3, p4, p5; static int t1, t2, t3, t4; error = petri_init(&net); p1 = petri_place(&net, “p1”); p2 = petri_place(&net, “p2”); p3 = petri_place(&net, “p3”); p4 = petri_place(&net, “p4”); p5 = petri_place(&net, “p5”); t1 = petri_transition(&net, “t1”); t2 = petri_transition(&net, “t2”); t3 = petri_transition(&net, “t3”); t4 = petri_transition(&net, “t4”); petri_input(&net, p1, t1, 1); petri_input(&net, p2, t2, 1); petri_input(&net, p3, t2, 1);
  • 550. page 550 petri_input(&net, p4, t2, 1); petri_input(&net, p4, t3, 1); petri_input(&net, p4, t3, 1); petri_input(&net, p5, t4, 1); petri_output(&net, p2, t1, 1); petri_output(&net, p3, t1, 1); petri_output(&net, p4, t1, 1); petri_output(&net, p4, t1, 1); petri_output(&net, p2, t2, 1); petri_output(&net, p5, t3, 1); petri_output(&net, p3, t4, 1); petri_output(&net, p4, t4, 1); petri_add_tokens(&net, p1, 1); petri_add_tokens(&net, p4, 2); petri_add_tokens(&net, p5, 1); petri_print(&net); petri_event(&net, t4); petri_print(&net); petri_event(&net, t1); petri_print(&net); petri_event(&net, t3); petri_print(&net); return error; } As can be seen this method of implementation is very simple. The user is able to define a number of nets, and refer to transitions and places by name. 20.4.2 Transitions With Inhibiting Inputs In some cases we want to prevent a transition from firing. To do this, the idea of inhibiting inputs has been proposed. If a transition has an inhibiting input from a place, that has any tokens in it, then the transition cannot fire. Otherwise the transition may fire normally. A sample net has been devised for this case, it is seen below.
  • 551. page 551 p1 p2 p3 t1 t2 Inhibiting input p4 p5 p6 t3 t4 The program below shows that the inhibiting input is simply defined when the arc is defined. int test2() /* * INHIBITED TEST NET (Peterson book, 1981, pg. 196) */ { static int error; static struct petri_net net; static int p1, p2, p3, p4, p5, p6; static int t1, t2, t3, t4; error = petri_init(&net); p1 = petri_place(&net, “p1”); p2 = petri_place(&net, “p2”); p3 = petri_place(&net, “p3”); p4 = petri_place(&net, “p4”); p5 = petri_place(&net, “p5”); p6 = petri_place(&net, “p6”); t1 = petri_transition(&net, “t1”); t2 = petri_transition(&net, “t2”); t3 = petri_transition(&net, “t3”); t4 = petri_transition(&net, “t4”); petri_input(&net, p1, t1, 1); petri_input(&net, p2, t2, 1); petri_input(&net, p3, t2, 1); petri_input(&net, p5, t3, 1); petri_input(&net, p3, t4, INHIBIT); petri_input(&net, p4, t4, 1); petri_input(&net, p6, t4, 1);
  • 552. page 552 petri_output(&net, p1, t1, 1); petri_output(&net, p3, t1, 1); petri_output(&net, p2, t2, 1); petri_output(&net, p4, t3, 1); petri_output(&net, p5, t3, 1); petri_output(&net, p6, t4, 1); petri_add_tokens(&net, p1, 1); petri_add_tokens(&net, p2, 1); petri_add_tokens(&net, p5, 1); petri_add_tokens(&net, p6, 1); petri_print(&net); petri_event(&net, t1); petri_print(&net); petri_event(&net, t3); petri_print(&net); petri_event(&net, t4); petri_print(&net); petri_event(&net, t2); petri_print(&net); petri_event(&net, t4); petri_print(&net); return error; } 20.4.3 An Exclusive OR Transition: The inhibitory inputs are complimentary to the exclusive or function. Thus another research proposed an Exclusive or transition which will fire when one (and only one) input is from a place with tokens. An example of a problem using this, a ring shift register was modelled. This net is modelled as shown below.
  • 553. page 553 p7 t1 t2 t3 p1 p3 p5 t4 t5 t6 p2 p4 p6 p10 p8 p9 EOR transition t7 In this example the EOR transition is marked with a plus in a circle (at ‘t7’). When run, a token will appear in p1, p3, and p5 in a repeating cycle. The program to set this up is seen below. int test3() /* * EOR TEST NET (Peterson book, 1981, discussed pg. 190) * This is for a single bit shifter */ { static int error; static struct petri_net net; static int p1, p2, p3, p4, p5, p6, p7, p8, p9, p10; static int t1, t2, t3, t4, t5, t6, t7; error = petri_init(&net); p1 = petri_place(&net, “p1”); p2 = petri_place(&net, “p2”); p3 = petri_place(&net, “p3”); p4 = petri_place(&net, “p4”); p5 = petri_place(&net, “p5”); p6 = petri_place(&net, “p6”); p7 = petri_place(&net, “p7”); p8 = petri_place(&net, “p8”); p9 = petri_place(&net, “p9”);
  • 554. page 554 p10 = petri_place(&net, “p10”); t1 = petri_transition(&net, “t1”); t2 = petri_transition(&net, “t2”); t3 = petri_transition(&net, “t3”); t4 = petri_transition(&net, “t4”); t5 = petri_transition(&net, “t5”); t6 = petri_transition(&net, “t6”); t7 = petri_transition(&net, “t7”); petri_input(&net, p6, t1, 1); petri_input(&net, p7, t1, 1); petri_input(&net, p2, t2, 1); petri_input(&net, p7, t2, 1); petri_input(&net, p4, t3, 1); petri_input(&net, p7, t3, 1); petri_input(&net, p1, t4, 1); petri_input(&net, p3, t5, 1); petri_input(&net, p5, t6, 1); petri_input(&net, p8, t7, 1); petri_input(&net, p9, t7, 1); petri_input(&net, p10, t7, 1); petri_output(&net, p1, t1, 1); petri_output(&net, p3, t2, 1); petri_output(&net, p5, t3, 1); petri_output(&net, p2, t4, 1); petri_output(&net, p8, t4, 1); petri_output(&net, p4, t5, 1); petri_output(&net, p9, t5, 1); petri_output(&net, p6, t6, 1); petri_output(&net, p10, t6, 1); petri_output(&net, p7, t7, 1); petri_type_transition(&net, t7, EOR); petri_add_tokens(&net, p1, 1); petri_print(&net); petri_event(&net, t4); petri_print(&net); petri_event(&net, t7); petri_print(&net); petri_event(&net, t2); petri_print(&net); petri_event(&net, t5); petri_print(&net); petri_event(&net, t7); petri_print(&net); petri_event(&net, t3); petri_print(&net); petri_event(&net, t6); petri_print(&net); petri_event(&net, t7); petri_print(&net); return error; }
  • 555. page 555 20.4.4 Colored Tokens This section should be considered incorrect. The theory has not been found, although the approach should adhere to the concept. The concept is that each token may now have a color, and a second bit of private information. If a transition is specified to be colored, it will only fire if tokens of the specified color are available at the inputs. The subroutines will then require that the user supply a new set of instance information so that new tokens may be issued. The net used has tokens of mixed colors in it, an is seen below. p3 p1 p2 t1 t2 The code is shown below. The reader should note that a second subroutine is used. This is done because there is a bit of code which would be repeated for each update of tokens at the tran- sition. int test4() /* * COLOR TEST NET (Assumed for now) * Two consumers of different colors and one input. The instances of tokens * are kept track of. */
  • 556. page 556 { static int error, i; static struct petri_net net; static int p1, p2, p3; static int t1, t2; static int color1 = 1, color2 = 2; static int instance[20], instance_pnt; error = petri_init(&net); p1 = petri_place(&net, “p1”); p2 = petri_place(&net, “p2”); p3 = petri_place(&net, “p3”); t1 = petri_transition(&net, “t1”); t2 = petri_transition(&net, “t2”); petri_input(&net, p1, t1, 1); petri_input(&net, p3, t1, 1); petri_input(&net, p2, t2, 1); petri_input(&net, p3, t2, 1); petri_output(&net, p1, t1, 1); petri_output(&net, p2, t2, 1); petri_type_transition(&net, t1, COLORED); petri_type_transition(&net, t2, COLORED); for(i = 0; i < 20; i++) instance[i] = i; instance_pnt = 0; petri_add_color_token(&net, p1, color1, instance[instance_pnt]); instance_pnt++; petri_add_color_token(&net, p2, color2, instance[instance_pnt]); instance_pnt++; petri_add_color_token(&net, p3, color1, instance[instance_pnt]); instance_pnt++; petri_add_color_token(&net, p3, color2, instance[instance_pnt]); instance_pnt++; petri_print(&net); sub4(&net, t2, color1, instance, &instance_pnt); petri_print(&net); sub4(&net, t1, color1, instance, &instance_pnt); petri_print(&net); sub4(&net, t1, color1, instance, &instance_pnt); petri_print(&net); sub4(&net, t2, color2, instance, &instance_pnt); petri_print(&net); return error; } int sub4(net, transition, color, instance, instance_pnt) struct petri_net *net; int transition, color, *instance, *instance_pnt;
  • 557. page 557 { static int error, i, list[20], n, outputs; error = ERROR; if(petri_in_event(net, transition, color) == NO_ERROR){ if(petri_get_consumed(net, transition, &color, list, &n, &outputs) == NO_ERROR){ for(i = 0; i <= n; i++) instance[list[i]] = -1000; if(petri_set_produced(net, transition, &(instance[*instance_pnt]),outputs) == NO_ERROR){ *instance_pnt += outputs; error = petri_out_event(net, transition); } } } return error; } 20.4.5 RELATIONAL NETS Relational nets will use various firing rules for each transition. This is by far the most useful for varied manufacturing conditions. An example is seen below.
  • 558. page 558 p1 p3 t1 a b a ba p2 p4 abb b a b fired with rule 1 fired with rule 2 p1 p3 p1 p3 b t1 t1 a abb b a a ab p2 p4 p2 p4 abb bab b ab a ab b b This may be seen in the fifth test subroutine in the program. 20.5 C++ SOFTWARE At present there is one data structure used which holds structures for Places and for Transi- tions. Arc information is stored (redundantly) in both. These are defined when a Place or Transi- tion number is requested for one that does not exist. Each place and transition have reference numbers, which are used by all other net functions.
  • 559. page 559 The software is still undergoing development, and testing, thus a list of functions would be premature. 20.6 IMPLEMENTATION FOR A PLC • Consider the example of a parts buffer. Parts enter the buffer and are added to the top of the stack. The part at the bottom of the stack is checked and sorted (ejected differently) based on a quality check.
  • 560. page 560 keep alive T1 part enters P1 sorter no part at waiting for bottom of part ejected for next sorter P8 T6 P7 part not P6 entering T5 P2 sorter part at T2 bottom part waiting of sorter eject P5 part good good part check P3 T4 part not good T3 P4 eject bad • This can be implemented in ladder logic, but unlike the sequential techniques, there may be multiple tokens in the places, so counters are used to keep track of token counts.
  • 561. page 561 first scan MOV source 1 dest. CNT C5:1.ACC RES C5:2 RES C5:3 RES C5:4 RES C5:5 RES C5:6 RES C5:7 RES C5:8 GRT eject bad source A C5:4.ACC source B 0 GRT eject good source A C5:4.ACC source B 0
  • 562. page 562 part entering GRT CTD source A C5:1.ACC C5:1 source B 0 CTU C5:2 CTU C5:7 GRT GRT CTD source A C5:2.ACC source A C5:6.ACC C5:2 source B 0 source B 0 CTD C5:6 CTU C5:3 part good GRT CTU source A C5:3.ACC C5:4 source B 0 CTD C5:3 part good GRT CTU source A C5:3.ACC C5:5 source B 0 CTD C5:3
  • 563. page 563 GRT CTU source A C5:5.ACC C5:8 source B 0 CTD C5:5 GRT CTU source A C5:4.ACC C5:8 source B 0 CTD C5:4 part entering GRT CTU source A C5:7.ACC C5:1 source B 0 CTD C5:7 part at sorter bottom GRT CTU source A C5:8.ACC C5:6 source B 0 CTD C5:8 • For practice,
  • 564. page 564 turn the coffee machine petri net diagram into ladder logic 20.7 PRACTICE PROBLEMS 1. Develop a Petri net to control a part sorting station. Parts enter on a conveyor belt and are detected by a proximity sensor. The part can then be checked with a vision system that will signal to the PLC that the part is good/bad. There are then two cylinders that can eject the part into a good or bad bin.
  • 565. page 565 20.8 REFERENCES Peterson, J.L., “Petri Net Theory and the Modelling of Systems”, Prentice-Hall, Inc., N.J., U.S.A., 1981. Reisig, W., “Petri Nets; An Introduction”, Springer-Verlag, 1985.
  • 566. page 566 21. PRODUCTION PLANNING AND CONTROL 21.1 OVERVIEW • A design must be converted to a process plan before it may be produced. • But, if we have thousands of process plans, and hundreds of customer orders, with dozens of parts in each, which machines do we use when to make the products? What parts do we need? • Traditionally jobs have been scheduled on a first come, first served basis. This resulted in a lineup of various jobs waiting to be done at each work center. • When jobs are not scheduled efficiently, we often will get jobs sitting half completed, while we wait for simple parts to be processed. This costs money, wastes time, takes up floor space, makes the customer unhappy, etc. • Eventually computers were used to figure out how to schedule jobs so that parts were made before they were needed, and so that work was done on time. • As computers were used more it also became obvious that strict schedules were a nice idea, but they don’t work. A schedule is only valid until the first breakdown. • Newer control programs called Production Planning and Control (PPC) systems were used to generate schedules, and fix problems that came up. • Most systems, manual, and automatic either push, or pull the work through the factory. If the work is pushed, then customer orders tend to drive the production. If the work is pulled, the factory often tries to satisfy some continuous demand, and when things are about to run out, more is produced.
  • 567. page 567 • Regardless of which system is used, Scheduling is not exact, and never optimal, but you can get a near optimal schedule with the right tools and methods. • Some of the traditional Production, Planning and Control subject include, 1. Forecasting - Estimating the production demands using a horizon of a few month to a few years for long range planning. 2. Production Planning - Matching needed production to available resources. • Note: This is more of a CIM topic. 21.2 SCHEDULING • We often know well in advance what has to be produced • We can use computer programs to come up with a ‘near perfect’ schedule for all jobs, ahead of time. • These methods at the present time are not well enough developed to handle sudden disrup- tions on the shop floor (See next section on Shop Floor Control). • Schedules are often made up weekly *************** ADD DETAILS FOR MRP I and MRP II 21.2.1 Material Requirements Planning (MRP)
  • 568. page 568 • This is one very popular approach to planning • Uses Master Production Schedules to determine how much of each product should be pro- duced within given periods. Master Production Schedules are based on customer, or projected demand. • The elements used by MRP to plan are, - Master Production Plan (Schedule) - On-hand inventories - Bill of Materials - Current of Purchased and Manufactured Orders - Rules for each part produced (including WIP) • The rules about each step in production include, - Lead time - Order quantity per final part - Scrap rate - Buffer stock quantity - etc. • MRP then tries to determine quantities required using the data input from the users, and a set of rules, such as, - Fixed Order Quantity - Product are produced as required using a prespecified lot size. - Economic Order Quantity - The cost of carrying inventory is weighed off against the cost of setup for one production run. - Lot for lot - Lots are produced as required, any batch size. - Fixed-period Order Quantity - Produce parts to cover more than a single order. • Lot sizes required are subtracted from available stocks. • The required production quantities are used to order from suppliers, etc, while considering lead times, and delays. • You should note that this approach is concerned more with inventory minimization than with utilization of machines.
  • 569. page 569 • While this system can lead to easy production scheduling, it is susceptible to errors in BOMs, routings, etc. • Advantages, - improved Customer Service - better Scheduling - reduced inventory - reduced component shortages - reduced manufacturing costs - reduced lead times - higher production quality - less scrap, and rework - higher morale in production - improved communication - improved plant efficiency - improved competitive position - improved coordination of marketing and finance • MRP II (Manufacturing Resources Planning) - A closed-loop MRP system that, at a mini- mum, includes detailed capacity analysis (see next section). Some MRP II systems include the business plan in the closed-loop system. 21.2.2 Capacity Planning • While MRP is concerned with determining how much should be produced, it is not con- cerned with how to produce it. • Capacity planners attempt to determine how to assign jobs to machines, people, etc. • Information used by capacity planners includes, - Planned orders (from MRP) - Orders in process (order status) - Routings, including setup and run time (from process plans)
  • 570. page 570 - Available facilities - Workforce availability - Subcontracting potential • There are some strategies used by the Capacity Planner to Assign jobs to machines, - Splitting of lots (batches) across identical machines - Splitting of lots to expedite a smaller quantity - Sequencing of lots to minimize setup times - Alternative routings that require different resources - Loading a facility by weight, volume, etc. (eg. heat treating) • After jobs have been assigned to machines, the capacity of the machines must be consid- ered. 21.3 SHOP FLOOR CONTROL • No factory is perfect, and a schedule can become invalid at any time because of, - Machine breakdown - Sudden material shortage - Workforce vacancy - Tool breakage - etc. • What to do about it, - Wait and See - Try to find alternative production plans/parts - Ask engineering for replan - Bump other jobs - ????? 21.3.1 Shop Floor Scheduling - Priority Scheduling • Instead of scheduling before production (MRP and Capacity planning), a manufacturer may
  • 571. page 571 opt to do scheduling on the fly. • Some of these methods include, - Earliest operation due date - soonest date. This gives time until due, but ignores process- ing time. - Order Slack - soonest date minus processing time. This gives the amount of time to play with. - Shortest operation first - Do the quickest jobs first. This just clears out WIP faster. 21.3.2 Shop Floor Monitoring • It is important to know what is happening on the factory floor. • To do this we must pay attention to obvious problems like machine operation, and hidden problems such as quality, and production quantities. • Inspection covers a number of areas, - Inspection of raw materials - Inspection of manufactured product - preprocess - in-process - post process - Inspection of production process parameters - tools - fixtures - production machinery - Verification/calibration - inspection fixtures - Inspection gauges - Inspection machinery
  • 572. page 572 22. SIMULATION • Some complex systems can’t be modeled because of, - random events - changing operating conditions - too many interactions - exact solutions don’t exist • Simulation is used to determine how these systems will behave • Simulation typically involves developing a model that includes discrete stations and events that occur with some probable distribution. • We can then examine the simulation results to evaluate the modeled system. Examples include, - machine utilization - lead time - down time - etc. • This is a very effective tool when considering the effect of a change, comparing decision options, or refining a design. • Some simulation terms include, System - the real collection of components Model - a reasonable mathematically (simpler) representation of the system State - the model undergoes discrete changes. A state is a ‘snapshot’ of the system Entity - a part of the system (eg machine tool) Attributes - the behavior of an entity Event - something that changes the state of a machine Activity - when an entity is going through some activity. (eg, press cycling) Delay - a period of time with no activity • Good approach to simulation, 1. Determine what the problem is 2. Set objectives for the simulation
  • 573. page 573 3. Build a model and collect data 4. Enter the model into a simulation package 5. Verify the model then check for validity 6. Design experiments to achieve goals 7. Run simulations and collect results 8. Analyze and make decisions 22.1 MODEL BUILDING • If we are building a model for a plant floor layout, we will tend to have certain elements, - material handling paths (transfer) - buffers/waiting areas (delays) - stock rooms (source) - shipping rooms (destination) - machine tools (activities) • Some of these actions can be stated as exact. For example, a transfer time can be approxi- mated and random (manual labor), or exact (synchronous line), or proportional to a distance. • Some events will occur based on availability. For example, if there are parts in a buffer, a machine tool can be loaded and activity occurs. • Some activities and events will be subject to probabilities. Consider that the operation time in a press may vary, and there is probability of scrapping a part. • The random variations can be modeled as, - discrete - for individual units - continuous for variations • Well known distributions include,
  • 574. page 574 Normal/Gaussian 1 0.5 0 mean mean Probability Density Cumulative Probability Poisson/Exponential 1 0 Probability Density Cumulative Probability
  • 575. page 575 Uniform 1 0.5 0 mean mean Probability Density Cumulative Probability Normal/Gaussian 1 0 mean mean Probability Density Cumulative Probability • This data may be found using data provided by the manufacturer, sampled in-house, etc. 22.2 ANALYSIS • To meet goals, simple tests may be devised. These tests should be formulated as hypotheses. We can then relate these to the simulation results using correlation.
  • 576. page 576 ∑ ( xi – µx ) ( yi – µy ) – µx µy cov = cov- corr = ----------- σx σy where, cov = covariance of data sets x and y corr = correllation of sets x and y corr = 1 completely related corr = 0 no relationship corr = -1 inversely related • Simulation software will provide information such as, - production rates - machine usage - buffer size - work in process 22.3 DESIGN OF EXPERIMENTS • WHAT? combinations of individual parameters for process control are varied, and their effect on the output quality are measured. From this we determine the sensitivity of the process to each parameter. • WHY? Because randomly varying individual parameters takes too long. • e.g. A One-Factor-At-A-Time-Experiment
  • 577. page 577 Effect: We are finding the causes of cracks in steel springs. Causes: 1. Steel temperature before quenching 1450F or 1600F 2. Carbon Content .5% or .7% 3. Oil quench temperature 70F or 50F Experiments 1 and 2: Run 1: 1. 1450F 2. 0.5% yield(%) 72 70 75 77, X=73.5% 3. 70F Run 2: 1. **1600F 2. 0.5% yield(%) 78 77 78 81, X=78.5% 3. 70F Observation: 1600F before quench gives higher yield. Run 3: 1. 1600F 2. **0.7% yield(%) 77 78 75 80, X=77.5% 3. 70F Observation: Adding more carbon has a small negative effect on yield. Run 4: 1. 1600F 2. 0.5% yield(%) 79 78 78 83, X=79.5% 3. **50F Observation: We have improved the quality by 6%, but it has required 4 runs, and we could continue. • The example shows how the number of samples grows quickly. • A better approach is designed experiments • e.g. DESIGNED EXPERIMENT for springs in last section
  • 578. page 578 - set up orthogonal array Run 1. 2. 3. Yield% Ri = X 1 1450 0.5 50 2 1600 0.5 50 79 78 78 83 79.5 3 1450 0.7 50 4 1600 0.7 50 5 1450 0.5 70 72 70 75 77 73.5 6 1600 0.5 70 78 77 78 81 78.5 7 1450 0.7 70 8 1600 0.7 70 77 78 75 80 77.5 Note the binary sequence - Find effects of each factor Main Effect = ( Average at High ) – ( Average at Low ) ( R 2 + R 4 + R 6 + R8 ) ( R 1 + R 3 + R 5 + R7 ) Main Effect of A = ----------------------------------------------- – ----------------------------------------------- - - 4 4 ( R 1 + R2 + R 5 + R 6 ) ( R 3 + R4 + R 7 + R 8 ) Main Effect of B = ----------------------------------------------- – ----------------------------------------------- - - 4 4 ( R 1 + R2 + R 3 + R 4 ) ( R 5 + R6 + R 7 + R 8 ) Main Effect of C = ----------------------------------------------- – ----------------------------------------------- - - 4 4 - these can be drawn on an effect graph Yield % A- A+ B- B+ C- C+
  • 579. page 579 22.4 RUNNING THE SIMULATION • When a simulation is first run it will be empty. If it is allowed to run for a while it will settle down to a steady state. We will typically want to, - run the simulation for a long time - or, delay the start of data collection - or, preload the system will parts Problem area 22.5 DECISION MAKING STRATEGY • The general sequence of thought when making decisions is, - purpose - direction - plans - action - results • General properties of strategy include, - time horizon - impact - concentration of effort - patterns of decisions
  • 580. page 580 - pervasiveness • The levels of strategies include, - corporate - business - departmental/functional • Decisions can be categorized, hardware/fixed - capacity - facilities - technology - vertical integration software/flexible - workforce - quality - production planning/material control - organization • Typical criteria for making decisions might include, - consistency - harmony - contribution
  • 581. page 581 23. PLANNING AND ANALYSIS 23.1 FACTORS TO CONSIDER • There are a number of factors in a company which must be considered when evaluating the need for CAD/CAM/CAE/CIM/etc systems. Some of these are listed below, external - company crisis - markets Niche/Global/Home/ etc. - competition - customer requirements internal - corporate objectives, mission and culture technological - available technology - research & development success factors - the role of management - worker security - corporate organization - unions - middle management - worker motivation - training / worker abilities - cash - purchasing - design engineering - etc. • Current popular planning strategies include, Cost management - direct costing - effective capital investments - space utilization Cycle time reduction - continuous flow manufacturing and vendor supply - pull manufacturing
  • 582. page 582 - business and process reengineering Market driven quality - defining market needs - first to market - agile manufacturing - 6 sigma quality Automation - process - warehouse - information CIM - simplifying and automated processes - increased information access • We can draw a chart that illustrates the issues that might be encountered, Structure Infrastructure fiscal/tax culture monetary tradition trade religion Macro industrial values capital market social behavior political structure labor organization business market measure and control work- plant/equipment force - capacity vendors - location Micro management - process technology vertical integration capital budget organization
  • 583. page 583 23.2 PROJECT COST ACCOUNTING • When considering the economic value of a decision, one method is the payback period. CI N = ----- SA where, C I = initial investment ($) S A = savings per year ($/yr ) N = payback period (years) • Simple estimates for the initial investment and yearly savings are, CI = CE – IS where, C E = cost of new equipment I S = revenue from sale of old equipment (salvage) SA = ( L0 H0 – L1 H1 ) + ( M0 – M1 ) where, L 0, L 1 = labor rate before and afte r H 0, H 1 = labor hours before and after M 0, M 1 = maintenance costs before and after • There are clearly more factors than can be considered, including, - changes in material use - opportunity cost - setup times - change in inventory size - material handling change
  • 584. page 584 • The simple models ignore the conversion between present value and future value. (ie, money now is worth more than the same amount of money later) PW = C 0 + ∑ [ ( R A j – C A j ) ( P ⁄ F, i, j ) ] n 1 - (1 + i) – 1 ( P ⁄ F, i, j ) = ----------------j (1 + i) ( P ⁄ A, i, n ) = ∑ ( P ⁄ F, i, j ) = --------------------------- i(1 + i) n where, PW = present worth of the money (in todays dollars) R Aj = Annual revenues (income) for year j C A j = Annual costs (expenses) for year j j = j years in the future i = interest rate (fractional) n = number of years for consideration • Quite often a Rate of Return (ROR) will be specified by management. This is used in place of interest rates, and can include a companies value for the money. This will always be higher than the typical prime interest rate. • So far we haven’t considered the effects of taxes. Basically corporate taxes are applied to profits. Therefore we attempt to distribute expenses evenly across the life of a project (even though the majority of the money has been spent in the first year). This distribution is known as depreciation.
  • 585. page 585 A = B – T = B – ( tax rate C ) = B ( 1 – tax rate ) + Dtax rate where, A = after tax cash ($/yr) B = before tax cash ($/yr) D = depreciation of equipment ($/yr) tax rate = the corporate tax rate • Methods for depreciation are specified in the tax laws. One method is straight line deprecia- tion. CE – IS D = ---------------- - n • Consider an assembly line that is currently in use, and the system proposed to replace it. The product line is expected to last 5 years, and then be sold off. The corporate tax rate is 50% and the company policy is to require a 17% rate of return. Should we keep the old line, or install the new one?
  • 586. page 586 Current Manual Line: - used 2000 hrs/yr with 10 workers at $20/hr each - maintenance is $20,000/yr - the current equipment is worth $20,000 used Proposed Line: - the equipment will cost $100,000 and the expected salvage value at the end of the project is $10,000 - 2 workers are required for 1000 hours year at $40/hr each - yearly maintenance will be $40,000
  • 587. page 587 24. REFERENCES Bollinger, J.G. and Duffie, N.A., Computer Control of Machines and Processes, Addison-Wesley, 1989. Chang, T.-C., Wysk, R.A. and Wang, H.-P., “Computer-Aided Manufacturing second edition”, Prentice Hall, 1991. Kalpakjian, S., Manufacturing Engineering and Technology, Addison-Wesley (3rd. ed.), 1995.
  • 588. page 588 25. APPENDIX A - PROJECTS Objective: Students will learn how to design an integrated manufacturing system by selecting and building a complete integrated system from beginning to end. Method: The basic steps are outlined below, 1. Course begins 2. Students (individuals or groups) will submit a proposal for a project within the first three weeks. 3. The instructor will review the proposal, and suggest changes as necessary. 4. During the term students will design, build and test their proposed projects. 5. In the last week of classes the final project will be demonstrated and formally presented. 25.1 TOPIC SELECTION • The following topics are some possible topics, in priority, 1. Projects for the workcell a) Develop a computer program for scheduling. b) Design and build a material handling station for the lab. c) Develop a product information database d) Develop a quality monitoring systems e) Write a workcell control program (either C or Java) 2. Select a problem from a local company 3. Select a project based on your interests a) Build a CMM that uses an arm with measured joint angles. b) Design and build a robot. c) Develop an idea of your own. d) Design and build an NC machine. 25.1.1 Previous Project Topics “GVSU Workcell” (Jenny Agnello, Tom Johnson, Colin Moore, Lisa Nahin, Jeremy
  • 589. page 589 Scott) The material handling system at GVSU was designed to produce puzzles. The heart of the system was an Allen Bradley SoftPLC and Devicenet. It con- trolled a material handling system supplid by Worksmart Systems. The system included a robot for loading/unloading the mill. A CNC mill for cutting the parts. A vision system for inspecting the final parts. Various feeder and fixtures were designed and build by students in EGR450. “Hole in Sphere Project” (Alex Wong, Robert Krygier, Andre Cargnelli, Ahmed Nensey) A mechanism will be designed and built for orienting spherical balls with small through holes. This will be done with a mechanism that uses three rollers for orien- tation, and an optical pair to detect the hole. An electromechanical control system will be used. “Automated Robot Arm” (Lev Mordichaev, Karl Fung, Dennis Ngo, Nikko Chan, Edwin Wen, Elaine Rodrigues) A robot arm will be designed and built that can move up/ down, left/right, and has a gripper that will open/close. The robot will be con- trolled via a computer program, and electrical connections to the robot. “A Manually Controlled Robot” (Keith Lou, Sue Lee, Richard Dankworth, Phat N. Huynh, Howie Lam, Tarius Makmur) To build a manually controlled robot to per- form a certain task using a joystick for control. This small scale robot will be capa- ble of picking up an object, and positioning it in another location. And, for proof of concept, a set of fixtures, jigs or feeders will be constructed for a simple robotic task. Note: This project has too many people for construction of a robot only. “A Box Sorting System” (Joey Aprile, Don Christie, Gabe Fusco, Mike Poczo) A con- veyor based system will be designed and built for sorting boxes by a switched con- veyor path. This will include construction of the conveyor, sensors, actuators, and control system. “Automated Drink Dispenser” (Keith German, Dave Van Den Beld, Jeff Kempson, Brent Rubeli, Michael Staples) Glasses on a conveyor belt will be transported to/from a dispensing station where they will be filled by an automated mechanism. The sys- tem will be designed and built, possibly using a PLC, or a PC for control. “Self Leveling Platform” (Gerard Biasutto, Mario Borsella, Dino Farronato, Marco Gaet- ano, John Yuem) An actuated system will be designed and built to level a platform under tilting conditions. This will involve actuators positioned at four corners. A control system will be constructed to drive the actuating cylinders. “Raytracing and Animation” (Greg Squires, Ed Hoskins, Marie Malyj, Allan Zander, Tara Hillebrandt) POVray was used to animate a sequence of images to illustrate a pipe layout “NC Machining with SmartCAM” (Neil Babcock) A fishing reel was designed. The reel was cut on an NC machine using Smartcam software for programming. “A graphical computer program for flow analysis on PC’s” (James Barr) A computer pro- gram was written to do an analysis of a sphere moving through a fluid. “Manufacturing Database” (K. Beute, M. Mead) A manufacturing database will be devel- oped that allows operators to call up machine configurations based on part num- bers. This system uses an HMI to allow easy operator access. “Construction and control of Stiquito Robot” (T. Cowan and J. Cummings) A kit for a stiquito robot will be purchased and assembled. The appropriate interface electron- ics and software will be written to control the robot.
  • 590. page 590 “Virtual Reality Modeling” (N. Dunklin) VRML will be explored and used to implement a 3D model of a complex part. This will allow a user to explore the 3D world using a simple internet browser. “Automatic Generation of CNC Programs” (K. Gehrke) A computer program will be writ- ten in C/C++ to automatically generate computer programs in C or C++ to cut ini- tials in keytags. “Java Programming” (N. Kaye) The Java language will be learned, and a program will be written to cover some aspect of integration or automation. “Computer Based Analysis of Battery Discharge Data” (R. Sietsema) A computer applica- tion will be developed using Excel, and a scripting language, to allow a user to do an analysis of battery discharge data. “Force Feedback Joystick” (R. Serebryakov) A force feedback joystick will be designed and built. It will be interfaced to a PC and controlled with Labview. “Design and Construction of Robot” (S. Williams) A robot will be designed and built. The robot will be interfaced to a computer for control. 25.2 CURRENT PROJECT DESCRIPTIONS Name: Title: Description: Deliverables:
  • 591. page 591 26. APPENDIX B - COMMON REFERENCES 26.1 JIC ELECTRICAL SYMBOLS • The Joint International Committee (JIC) developed a standard set of symbols for representing electrical circuit elements. These are given below: disconnect circuit interrupter (3 phase AC) (3 phase AC) normally closed normally open limit switch limit switch breaker (3 phase AC) normally open normally closed push-button push-button double pole mushroom head push-button push-button F thermal overload relay Fuse motor (3 phase AC) liquid level liquid level vacuum pressure vacuum pressure normally open normally closed normally open normally closed
  • 592. page 592 temperature flow normally open temperature flow normally closed normally closed normally open R relay contact relay contact relay coil indicator lamp normally open normally closed relay time delay on relay time delay off relay time delay on normally closed relay time delay off normally closed normally open normally open H1 H3 H2 H4 horn buzzer bell X1 X2 control transformer 2-H solenoid 2-position hydraulic solenoid 26.2 NEMA ENCLOSURES • NEMA has provided a set of ratings for cabinets housing voltages less than 1000V AC. The basic classifications are outlined below,
  • 593. page 593 Type 1 - General purpose - indoors Type 2 - Dirt and water resistant - indoors Type 3 - Dust-tight, rain-tight and sleet(ice) resistant - outdoors Type 3R- Rainproof and sleet(ice) resistant - outdoors Type 3S- Rainproof and sleet(ice) resistant - outdoors Type 4 - Water-tight and dust-tight - indoors and outdoors Type 4X - Water-tight and dust-tight - indoors and outdoors Type 5 - Dust-tight and dirt resistant - indoors Type 6 - Waterproof - indoors and outdoors Type 6P - Waterproof submersible - indoors and outdoors Type 7 - Hazardous locations - class I Type 8 - Hazardous locations - class I Type 9 - Hazardous locations - class II Type 10 - Hazardous locations - class II Type 11 - Gas-tight, water-tight, oiltight - indoors Type 12 - Dust-tight and drip-tight - indoors Type 13 - Oil-tight and dust-tight - indoors FACTOR 1 2 3 3R 3S 4 4X 5 6 6P 11 12 12K 13 prevent human contact x x x x x x x x x x x x x x falling dirt x x x x x x x x x x x liquid drop/light splash x x x x x x x x x airborne dust/particles x x x x x x x x wind blown dust x x x x x x liquid heavy stream/splash x x x x oil/coolant seepage x x x oil/coolant spray/splash x corrosive environment x x x temporarily submerged x x prolonged submersion x *source Omron catalogs - check