1 MECHATRONICS
1.1 A History of Increasing Complesity
1.2 Mechatronic System Organization
1.3 Amplifiers and Isolation
1.4 Scope:The Unit Machine
1.5 Control
1.6 Real-Time Software
1.7 Nasty Software Properties
1.8 Engineering Design and Computational Performance
1.9 Control System Organization
1.10 Software Portability
1.11 Operator Interface
1.12 Multicomputer Systems:Communication
1.13 The Design and Implementation Process
1.13.1 Performance Specification
1.13.2 Design Documentation
1.13.3 Simulation
1.13.4 Laboratory Prototype
1.13.5 Production Prototype
1.13.6 Production System
1.13.7 Maintenance
2 TASKS
2.1 Example:Task Selection in a Process System
2.2 Tasks and the Control Hierarchy
2.2.1 Intertask Communication
2.3 Task Structure Examples
2.3.1 Velocity Control of a DC Motor
2.3.2 Heater Control
2.3.3 Toaster Oven
2.3.4 Flexible Position Control of a DC Motor
2.4 Simulation
2.5 More Task Structure Examples
2.5.1 Coordinated,Two-Axis Motion
2.5.2 A Washing Machine
3STATE TRANSITION LOGIC
3.1 States and Transitions
3.2 Transition Logic Diagrams
3.3 Tabular Form for Transition Logic
3.4 Example:Pulse-Width Modulation (PWM)
3.5 Transition Logic for the Process Control Example
3.6 Nonblocking State Code
3.7 State-Related Code
3.8 State Scanning:The Execution Cycle
3.9 Task Concurrency:Universal Real-Time Solution
4 DIRECT REALIZATION OF SYSTEM CONTROL SOFTWARE
4.1 Language
4.2 Time
4.3 Program Format
4.4 Simulation
4.5 Simulation in Matlab
4.5.1 Templates for Simulation Using Matlab
4.5.2 Simulation of PWM Generator
4.5.3 Simulation of Three-Tank Process System
4.6 Intertask Communication
4.7 Real-Time Realization
4.8 Real-Time Realization with Matlab
4.8.1 Heater Control Implementation in Matlab
5 SOFTWARE REALIZATION IN C++
5.1 Simulation in C++
5.2 Templates for Simulation in C++(group-priority)
5.3 PWM Simulation Using C++(group-priority)
5.4 Simulation in C++(with TranRun4)
5.4.1 Components
5.4.2 The Master Scheduler
5.4.3 Process Objects and Task Lists
5.4.4 Task Objects
5.4.5 Tasks with No State Object
5.4.6 Creating Task Classes
5.4.7 State Objects
5.4.8 Creating State Classes
5.4.9 The Main File and UserMain()Function
5.5 Real-Time Realization with C++
6 INTERTASK COMMUNICATION
6.1 Communication Within a Process
6.1.1 Data Integrity
6.1.2 Design Rules
6.2 Communication Across Processes
6.2.1 Message Passing
6.2.2 Message Passing in the Group Priority Scheduler
6.2.3 Message Passing in the TranRun4 Scheduler
6.2.4 Distributed Database
6.2.5 Distributed Database in the Group priority Scheduler
6.2.6 Distributed Database in the TranRun4 Scheduler
7 TIMING TECHNIQUES ON PC COMPATIBLES
7.1 Calibrated Time
7.2 Free-Running Timer
7.2.1 Hardware Timers on the PC
7.2.2 Performance Timers in Unix and Windows
7.3 Interrupt-Based Timing
8 MULTITASKING:PERFORMANCE IN THE REAL WORLD
8.1 Priority-Based Scheduling--Resource Shifting
8.1.1 Continuous vs. Intermittent Tasks
8.1.2 Cooperative Multitasking Modes
8.2 Matlab Template for Minimum-Latency Dispatcher
8.2.1 Example:Simulation of PWM-Actuated Heater
8.3 Cooperative Multitasking Using C++
8.3.1 Inheriting Task Behavior-Two PWMs
8.4 Preemptive Multitasking Modes
8.5 Realization of Interrupt-Based Dispatching
8.5.1 How Many Priority Levels Are Necessary?
8.5.2 Which Interrupt Sources Will Be Used?
8.5.3 Interrupt-Based Dispatching Functions
8.5.4 Attaching Dispatching Functions to Interrupts
9 A CHARACTER-BASED OPER-ATOR INTERFACE
9.1 Operator Interface Requirements
9.2 Context Sensitive Interfaces
9.3 User Interface Programming Paradigms
9.4 Mechatronics System Operator Interface
9.5 Operator Interface Programming
9.5.1 The Operator Screen
9.5.2 Programming Conventions in C++
9.5.3 Heater Control Operator Interface
10 GRAPHICAL OPERATOR INTERFACES
10.1 Graphical Environments
10.1.1 Windowing Software:Events and Messages
10.1.2 Operator Interface vs. Standard Windowing Application
10.1.3 Simplified Programming for Windowing Systems
10.1.4 The Ease-of-Use Challenge
10.1.5 Methods of Simplifying Window-Style Programming
10.2 The Times-2 Problem
10.2.1 Times-2:Character-Based Interface
10.2.2 Times-2:Visual Basic
10.2.3 Times-2:Bridgeview
10.3 Screen Change
10.3.1 Screen Change in Visual Basic
10.3.2 Screen Change:Bridgeview
10.4 Heat Exchanger Control in Bridgeview
10.5 Interprocess Communication:DDE
10.5.1 DDE:The C++ Side
10.5.2 Communicating with Excel
10.5.3 A DDE Server in C++
10.5.4 DDE Communication Between C++ and Visual Basic
10.5.5 DDE Communication Between C++ and Bridgeview
10.6 Putting It All Together
11 DISTRIBUTED CONTROL I:NET BASICS
11.1 Multiprocessor Architectures
11.1.1 Symmetric Multiprocessing (SMP)
11.1.2 Buses
11.1.3 Networks
11.1.4 Point-to-Point Connections
11.2 TCP/IP Networking
11.2.1 The Physical Context
11.2.2 Interconnection Protocols
11.2.3 TCP and UDP
11.2.4 Client/Server Architecture
11.3 Implementation of UDP
11.3.1 Sockets
11.3.2 Setting Up for Network Data Exchange
11.3.3 Nonblocking Network Calls
11.3.4 Receiving Information
11.3.5 Client-Side Setup
11.4 The Application Layer
11.4.1 Data Coding
11.4.2 Building the Packet
11.4.3 Parsing a Packet
12 DISTRIBUTED CONTROL II:A MECHATRONICS CONTROL APPLICATION LAYER
12.1 Control System Application Protocol
12.2 Startup of Distributed Control Systems
12.3 Testing the Application Protocol
12.4 Using the Control Application Protocol
12.5 Compiling
13 JAVA FOR CONTROL SYSTEM SOFTWARE
13.1 The Java Language and API
13.1.1 Networking
13.1.2 AWT/Swing
13.1.3 Multithreading
13.2 Preconditions for Real-Time Programming in Java
13.2.1 Deterministic Garbage Collection
13.2.2 Memory and Hardware Access
13.2.3 Timing
13.3 Advantages of Java for Control Software Design
13.3.1 Modularity
13.3.2 Distributed Control
13.3.3 Platform Independence and Prototyping
13.3.4 Operator Interface Design
13.4 Java and the Task/State Design Method
13.4.1 Inner Classes
13.4.2 Networking
13.4.3 Documentation
13.5 The Current State of Real-Time Java
14 PROGRAMMABLE LOGIC CONTROLLERS(PLCs)
14.1 Introduction
14.2 Goals
14.3 PLC Programming
14.3.1 When to Use a PLC
14.3.2 Ladder Logic
14.3.3 Grafcet/Sequential Flow Charts
14.4 The Task/State Model
14.5 State Transition Logic for a PLC
14.5.1 State Variables
14.5.2 Ladder Organization
14.5.3 Transitions
14.5.4 Outputs
14.5.5 Entry Activity
14.5.6 Action Outputs
14.5.7 Exit(Transition-Based) Outputs
14.5.8 Common Exit Activities
14.6 PLC Multitasking
14.7 Modular Design
14.8 Example:Model Railroad Control
14.9 Simulation-Portability
15 ILLUSTRATIVE EXAMPLE:ASSEMBLY SYSTEM
15.1 The Assembly System
15.2 System Simulation
15.3 Development Sequence
15.4 Belt Motion Simulation(Glue00)
15.4.1 Modeling Belt Dynamics
15.4.2 Definition of Task Classes
15.4.3 Instantiating Tasks:the Main File
15.4.4 The Simulation Task
15.4.5 The Data Logging Task
15.4.6 Timing Mode
15.4.7 Compiling
15.4.8 Results
15.5 Oven Temperature Simulation(Glue01)
15.6 PID Control of Belt Position and Oven Temperature(Glue02)
15.6.1 Keeping Classes Gencric
15.6.2 The PID Control Class
15.6.3 Results
15.7 Better Control of Motion(Glue03)
15.7.1 Trapezoidal Motion Profile
15.7.2 Motion Profile Class
15.7.3 Profiler State Structure
15.7.4 Round-Off Error
15.7.5 Discretization Errors in Simulation
15.8 A Command Structure for Profiled Motion (Glue04)
15.8.1 Message-Based Command Structure
15.8.2 State Transition Audit Trail
15.8.3 Motion Results
15.9 Clamps(Glue05)
15.10 Robots(Glue06)
15.11 Cure/Unload(Glue07)
15.12 Making Widgets(Glue08)
16 THE GLUING CELL EXERCISE IN TRANRUN4
16.1 The Gluing System
16.2 Simulation and Prototyping
16.3 The Project Components
16.4 Glue00:Conveyor Simulation
16.4.1 The Dynamic Model
16.4.2 Creating the Conveyor Task
16.4.3 The Data Logging Task
16.4.4 Data Communication Between Tasks
16.4.5 The Main File
16.4.6 Glue00 Results
16.5 Glue01:An Oven Simulation
16.5.1 Configuration and Status Printouts
16.6 Glue02:PID Control
16.7 Glue03:The Operator Interface
16.7.1 Results
16.8 Glue04:Motion Profiling
16.9 Glue05:Belt Sequencing
16.10 Glue06:The Glue Application Machine
16.11 Glue07:Transport Task Supervision
16.12 Glue08:The Completed Assembly System
17 THE GLUING CELL EXERCESE IN TRANRUNJ
17.1 Getting Started
17.1.1 Program Entry Point
17.1.2 The userMain Method
17.2 Writing Custom Tasks and States
17.2.1 Creating a Task Class
17.2.2 Creating a State Class
17.3 Implementing State Transition Logic
17.4 Global Data and Intertask Messaging
17.4.1 Global Data Items
17.4.2 Task Messages
17.5 Continuous vs. Intermittent Tasks
17.6 Scheduler Internals
17.6.1 Operating System Processes vs. CProcess
17.6.2 Foreground vs. Background Execution Lists
17.6.3 Scheduling Modes
17.7 Execution Profiling
17.8 Intertask Messaging Across Different Processes
17.9 Tips And Tricks
17.9.1 Judicious Use of Execution-Time Profiling
17.9.2 Integer Lablels for Global Data and Task Message Inboxes
17.9.3 The TaskMessageListener Interface
17.9.4 Scheduler Sleeping
17.9.5 Anonymous State Classes
17.10 Additional Information
BIBLIOGRAPHY
INDEX