0% found this document useful (0 votes)
7 views

bds5 User

Uploaded by

Dario Di Mare
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

bds5 User

Uploaded by

Dario Di Mare
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 267

BDS5

USER’S MANUAL
Old Number M93102 - ISSUE 3
New number MB5001H
BDS5 TECHNICAL MANUAL CONFIGURATION

TECHNICAL MANUAL CONFIGURATION


( USER’S MANUAL M93102 )

PAGE NO. DESCRIPTION # CHANGE NO.*

-- ............................... Title Page..................................................................................................................... 0


-- ............................... Technical Manual Configuration ................................................................................. 0
-- ............................... Configuration Table..................................................................................................... 0
-- ............................... Customer Response...................................................................................................... 0
-- ............................... Copyright Page ............................................................................................................ 0
-- ............................... Foreword...................................................................................................................... 0
-- ............................... How to Use This Manual ............................................................................................. 0
i - iv............................. Table of Contents......................................................................................................... 0
v .................................. List of Figures.............................................................................................................. 0
vi ................................. List of Tables ............................................................................................................... 0
1-1 -- 1-16 ................... Chapter 1 System Description..................................................................................... 0
2-1 -- 2-14 ................... Chapter 2 Getting Started ........................................................................................... 0
3-1 -- 3-42 ................... Chapter 3 Programming Language ............................................................................. 0
4-1 -- 4-44 ................... Chapter 4 User Programs............................................................................................ 0
5-1 -- 5-10 ................... Chapter 5 Debugging .................................................................................................. 0
6-1 -- 6-8 ..................... Chapter 6 Compensation............................................................................................. 0
A-1 -- A-2 ................... Appendix A Warranty Information ............................................................................. 0
B-1 -- B-4.................... Appendix B ASCII Table ........................................................................................... 0
C-1 -- C-16.................. Appendix C Software Commands............................................................................... 0
D-1 -- D-14 ................. Appendix D Error Codes ............................................................................................ 0
E-1 -- E-6 .................... Appendix E Variable Quick Reference....................................................................... 0
F-1 -- F-2..................... Appendix F Command Timings.................................................................................. 0
Glossary-i -- xiv .......... Glossary ....................................................................................................................... 0
Index-i -- viii .............. Index ............................................................................................................................ 0
-- ............................... BDS5 Upgrade Notices................................................................................................ 0

* Zero in this column indicates an original page


CONFIGURATION TABLE BDS5

CONFIGURATION TABLE
( USER’S MANUAL M93102 )

RECORD OF REVISIONS

ISSUE NO.
(Revision) DATE CHANGED PAGES/BRIEF DESCRIPTION OF CHANGE CHANGE NO.

3 15 Mar 95 Replaces issue dated 15 Feb 95 Original Release


THANK YOU!
Thank you and congratulations for choosing Industrial Drives' servo products for your motion control
requirements. We seek to provide our customers with quality products, excellent support and outstanding
value. In an effort to provide you with dependable and useful documentation, we offer you an opportunity
to critique this manual with your comments and suggestions. Your feedback on this reader comments
form is very important to us. Please answer the questions below and return the form to:

INDUSTRIAL DRIVES - Technical Manual Department


201 Rock Road
Radford, VA 24141
U.S.A.
FAX: 703/731/0847

Name: Title:
Company:
Street Address:
City: State: Zip:
Telephone: Fax:
Product:
Manual Part Number:

Please check the rating that best represents your opinion on each topic.

Excellent Good Fair Poor


1. Overall clarity and readability. ! ! ! !
2. Organization of the manual. ! ! ! !
3. Information completeness. ! ! ! !
4. Information accuracy. ! ! ! !
5. Installation procedures. ! ! ! !
6. Ability to quickly find information you need. ! ! ! !
7. Graphics. ! ! ! !
8. Figures (usefulness). ! ! ! !
9. Tables (usefulness). ! ! ! !
10. Overall rating of this manual. ! ! ! !

Please list any errors.

What did you like least about this manual?

What did you like most about this manual?

How would you improve this manual?

Signature: Date:
© Copyright 1993, Danaher Motion Kollmorgen. All rights reserved
Printed in the United States of America

NOTICE
Not for use or disclosure outside of Danaher Motion Kollmorgen except under written
agreement.
All rights reserved. No part of this book shall be reproduced, stored in a retrieval system,
or transmitted by any means (electronic, mechanical, photocopying, recording, or
otherwise) without the written permission from the publisher. While every precaution has
been taken in the preparation of this book, the publisher assumes no responsibility for
errors or omissions. Neither is any liability assumed for damager resulting from the use
of the information contained herein.
This document is proprietary information of Danaher Motion Kollmorgen, furnished for
customer use ONLY. No other uses are authorized without written permission from
Danaher Motion Kollmorgen.
Information in this document is subject to change without notice and does not represent a
commitment on the part of Danaher Motion Kollmorgen. Therefore, information
contained in this manual may be updated without notice due to product improvements,
etc., and may not conform in every respect to former issues.
This product is covered by U. S. Patents:
4,447,771
4,479,078
4,490,661
Other (foreign patents pending)
U. L. is a trademark of Underwriter's Laboratories.
N. E. C. is a trademark of the National Electric Code.
Kollmorgen GOLDLine, BDS4, BDS5, and PSR4/5 are trademarks of Danaher Motion
Kollmorgen.

Dangerous voltages, currents, temperatures, and energy levels exist in this


product and in the associated servomotor(s). Extreme caution should be
exercised in the application of this equipment. Only qualified individuals
should attempt to install, setup, and operate this equipment. Ensure that the
motor, drive, and the end-user assembly are all properly grounded per NEC
requirements.

Danaher Motion Kollmorgen

Phone: 1-800-777-3786 or (815) 226-3100


Technical Support Fax: (540) 731-5679
BDS5 FOREWORD

FOREWORD
The commitment to quality at Industrial Drives is our earth magnet development for the servo motor
first priority. In all aspects of our business: research, industry.
development, product design and customer service,
we strive to guarantee total quality. This pledge is Between 1974 and 1980, Industrial Drives continued
founded on a solid history of innovative technological to lead the industry in servo application innovations.
achievements dating back to 1948. One of the finest Our commitment to engineering excellence never
tributes to that achievement can now be seen at the waivered. In fact, that commitment grew stronger
Smithsonian which has on display the first stellar with the development of brushless submarine and
inertial navigation system developed by Dr. Charles submersible motors (visiting the Titanic graveyard),
Stark Draper. This system contains the first models multi-axis electronic drives and antenna pedestal
of torque motors built by the founding organization of drives (delivering unprecedented accuracy and
Industrial Drives. During the period of 1948 to 1960, revolutionizing the entire industrial automation
our "firsts" in the industry numbered more than a process).
dozen; they ranged from the simple but invaluable
(such as the direct-drive DC torque motor and movie The decade of the 1980's brought continued
theater projection motors) to the exotic: submarine advancements in technology and penetration of new
periscope drive motors for the U.S. Navy, electric markets requiring precise motion control. Already in
drives, Curtis Wright electric brake coils, and the fifth generation of brushless products, Industrial
numerous other innovations. Drives continues to lead the way with digital servo
positioning capability and our newest motor offering,
For more than a decade, Industrial Drives (known in the GOLDLINE Series, incorporating the very latest
the early days as part of Inland Motor Division of high-energy, rare earth magnets (neodymium iron
Kollmorgen) has continued to enhance its boron). Once again, we are setting the standards that
sophisticated engineering solutions to pioneer new others only hope to duplicate. Recently
product development. acknowledged by the Frost and Sullivan Foundation,
a leading market specialist in the motion control
The results of these and other efforts has encouraged industry, Industrial Drives and its parent, Kollmorgen
some of the most significant innovations in the servo Corporation, continue to rank first in servo
industry. We developed the application of servo technology.
motors and drives in the Machine Tool market. We
were the first with water-cooled servos, the integral Other achievements? Yes, too many in fact to
brake, the flux forcing concept and the brushless mention. Each achievement stands as a testimony to
motor. We developed the electronically commutated the committed quality and excellence in design
electric car motor. Industrial Drives pioneered rare technology. This constancy of purpose is unyielding
in an era of rapidly changing technology.
BDS5 HOW TO USE THIS MANUAL

HOW TO USE THIS MANUAL


INTRODUCTION CONVENTIONS

This User’s Manual is designed to help you properly To assist you in understanding the material in this
operate a BDS5 Servo System. You do not have to manual, conventions have been established to
be an expert in motion control to utilize the system enhance reader comprehension. Explanations of
however this manual does assume you have the these conventions are as follows:
fundamental understanding of basic electronics and
motion control concepts. Many of these are • Safety warnings, cautions, and notes present
explained in the glossary of this manual. material that is important to user safety. Be sure
to read any safety notices you see as they could
The BDS5 is a programmable motion control device. prevent equipment damage, personal injury, or
An understanding of computer programming even death to you or a co-worker.
techniques will be beneficial to all users. For
applications that require complex programs, a • Bold text highlights other important information
professional programmer should be consulted. that is critical to system operations.

• CAPITALIZED text stresses attention to the


details of the procedure.
RECOMMENDATIONS
• Underlined text emphasizes crucial words in
It is recommended that you read this entire manual sentences that could be misunderstood if the
before you attempt to operate the BDS5 so you can word is not recognized.
promptly find any information you need. This will
also familiarize you with system components, and • DOUBLE BLOCKED text defines words
their relationship to one another.
that are to be typed into the computer by the
After installation and before you apply your own user to interface with the BDS5.
application check all system functions and features to
insure you have installed your BDS5 properly. • SINGLE BLOCKED text defines words
that are displayed by the BDS5 on the computer
These instructions are intended to aid you to terminal to inform the user of system operations
administer the BDS5 to your own applications. Your or problems.
safety and satisfaction are important to Industrial
Drives. Be sure to follow all instructions carefully
and pay special attention to safety.
HOW TO USE THIS MANUAL BDS5

ABBREVIATIONS NOTICE:

CCW Counter Clockwise This manual is the second of a two part manual
CW Clockwise structure. The Installation and Setup Manual is
D/L Direction Limit intended to instruct the user on the installation
GC Goldline Cable procedures and practices to be used with the BDS5.
GCS Goldline Cable Set
LED Light Emitting Diode
NEC National Electrical Code
P/N Part Number
R/D Resolver-to-Digital
Regen Regeneration
TL Test Limits
UL Underwriters Laboratories
TABLE OF CONTENTS BDS5

TABLE OF CONTENTS
2.6.2.1 Interactive Mode ..................................... 2-10
CHAPTER 1. SYSTEM DESCRIPTION
2.6.2.2 Run Mode ............................................... 2-12
2.6.2.3 Monitor Mode......................................... 2-12
1.1 Introduction..................................................... 1-1
2.6.2.4 Single-Step Mode.................................... 2-12
1.2 Product Description ........................................ 1-1
2.6.2.5 Trace Mode............................................. 2-12
1.3 Features........................................................... 1-1
2.6.2.6 Other Modes ........................................... 2-13
1.4 Part Number Description ................................ 1-3
1.4.1 BDS5 Model Number .................................. 1-4
1.4.2 Compensation Module Model Number........ 1-5
CHAPTER 3. PROGRAMMING LANGUAGE
1.4.3 PSR4/5 Model Number................................ 1-6
1.4.4 ER-External Resistor Kit Model Number .... 1-7
3.1 Introduction..................................................... 3-1
1.4.5 Molex Assembly Tools ................................ 1-7
3.2 Instructions...................................................... 3-1
1.5 Specifications and Ratings .............................. 1-8
3.2.1 Comments .................................................... 3-1
1.6 Theory of Operation...................................... 1-12
3.3 Variables ......................................................... 3-1
1.7 Simplified Schematic Diagram
3.3.1 Variable Units .............................................. 3-2
and System Diagram ..................................... 1-13
3.3.2 Three Types of Variables............................. 3-2
3.3.3 Variable Limits ............................................ 3-2
3.3.4 Switches ....................................................... 3-2
CHAPTER 2. GETTING STARTED
3.3.5 Printing Variables ........................................ 3-2
3.3.6 Changing a Variable..................................... 3-3
2.1 Introduction..................................................... 2-1
3.3.7 Programming Conditions ............................. 3-3
2.2 Computer Requirements.................................. 2-1
3.3.8 Power-up and Control Variables.................. 3-3
2.3 Software Installation ....................................... 2-1
3.3.9 Initial Settings of Control
2.3.1 Backing Up the Disk(s)................................ 2-1
and User Variables....................................... 3-4
2.3.2 Software Installation .................................... 2-2
3.3.10 User Variables............................................ 3-7
2.3.2.1 Install on a Hard Disk ............................... 2-2
3.3.10.1 Indirect User Variables ........................... 3-7
2.3.2.2 Install on a Floppy Disk ............................ 2-2
3.3.11 User Switches............................................. 3-8
2.3.3 Establishing Communications...................... 2-3
3.3.12 Special Constants ....................................... 3-8
2.4 Motion Link Overview.................................... 2-4
3.4 Math ............................................................. 3-8
2.4.1 Menus and Windows..................................... 2-4
3.4.1 Hexadecimal ................................................ 3-8
2.4.1.1 Program..................................................... 2-4
3.4.2 Algebraic Functions ................................... 3-10
2.4.1.2 Variables ................................................... 2-4
3.4.3 Logical Functions: AND, OR....................... 3-9
2.4.1.3 Capture...................................................... 2-5
3.5 General Purpose Input/ Output ..................... 3-10
2.4.1.4 Scope ........................................................ 2-5
3.5.1 Whole Word I/O ........................................ 3-10
2.4.1.5 Options...................................................... 2-5
3.6 Fault Logic.................................................... 3-11
2.4.1.6 Help .......................................................... 2-6
3.6.1 Firmware Faults, Area 1............................. 3-13
2.4.1.7 Utilities ..................................................... 2-6
3.6.2 Fault Logic, Area 2 .................................... 3-13
2.4.2 Editor ........................................................... 2-7
3.6.3 Fault Latch, Area 3 .................................... 3-13
2.4.2.1 File ............................................................ 2-7
3.6.4 Ready Latch, Area 4................................... 3-13
2.4.2.2 Edit............................................................ 2-7
3.6.5 ACTIVE, Area 5 ........................................ 3-13
2.4.2.3 GOTO ....................................................... 2-8
3.6.6 Relay and STATUS Control, Area 6.......... 3-13
2.4.2.4 Insert/Delete.............................................. 2-8
3.6.7 Motor Brake............................................... 3-14
2.4.2.5 Cursor ....................................................... 2-8
3.6.8 Output Relay .............................................. 3-14
2.4.2.6 Help .......................................................... 2-8
3.7 Drive Control ................................................ 3-14
2.4.3 Types Of Data Files ..................................... 2-9
3.7.1 Direction Control, DIR .............................. 3-14
2.4.4 Using IBM-PC Compatibles ........................ 2-9
3.7.2 Position ...................................................... 3-14
2.5 Motion Link Setup Program............................ 2-9
3.7.2.1 Position Command and Feedback,
2.6 Processor Modes............................................. 2-9
PCMD & PFB......................................... 3-14
2.6.1 Prompts ........................................................ 2-9
3.7.2.2 Position Error, PE & PEMAX ................ 3-14
2.6.2 Descriptions of Modes ............................... 2-10
3.7.2.3 R/D Position, PRD.................................. 3-15
3.7.2.4 Sampling PFB, PCMD and PEXT .......... 3-15

i
BDS5 TABLE OF CONTENTS

3.7.3 Velocity...................................................... 3-15 3.8.12 External Inputs ......................................... 3-31


3.7.3.1 VCMD, VFB, VE, & VAVG .................. 3-15 3.8.12.1 Analog Input.......................................... 3-32
3.7.3.2 Velocity Limits, VMAX & VOSPD........ 3-16 3.8.13 Electronic Gearbox................................... 3-32
3.7.4 Current ....................................................... 3-16 3.8.13.1 Gear Ratio, GEARI & GEARO............. 3-32
3.7.4.1 Motor Current, ICMD & IMON.............. 3-16 3.8.13.2 Gearbox Example 1............................... 3-32
3.7.4.2 Current Limits, IMAX & ILIM ............... 3-16 3.8.13.3 Gearbox Example 2............................... 3-33
3.7.5 Enabling the Position Loop with PL........... 3-16 3.8.13.4 Profiles and Gearbox............................. 3-33
3.7.6 Controlling the Velocity Loop 3.8.13.5 Velocity Offset, VOFF .......................... 3-35
with PROP.................................................. 3-16 3.8.13.6 Gearbox, ACC/DEC, and Jogs .............. 3-35
3.7.7 Enabling the BDS5..................................... 3-16 3.8.14 Profile Regulation .................................... 3-35
3.7.8 Limiting Motor Current.............................. 3-17 3.8.14.1 REG & REGKHZ.................................. 3-35
3.7.8.1 Continuous Current, ICONT ................... 3-17 3.8.14.2 Profile Regulation and Counting
3.7.8.2 Foldback Current, IFOLD ....................... 3-17 Backwards ............................................. 3-36
3.7.8.3 Monitoring Current Limits ...................... 3-18 3.8.14.3 Regulation Example .............................. 3-36
3.8 Motion Commands ........................................ 3-18 3.8.15 Encoder Feedback .................................... 3-37
3.8.1 Basic Motion Commands ........................... 3-18 3.8.16 CONTINUE ............................................. 3-37
3.8.1.1 AMAX, ACC, & DEC ............................ 3-18 3.9 CONTROL LOOPS ...................................... 3-37
3.8.1.2 EN, STOP, & LIMITS ............................ 3-18 3.9.1 Position Loop ............................................. 3-38
3.8.1.3 Enabling Motion with MOTION............. 3-19 3.9.2 Velocity Loop............................................. 3-38
3.8.1.4 STOP (S) Command................................ 3-19 3.9.2.1 Proportional Velocity Loop..................... 3-38
3.8.1.5 STOP and BREAK with 3.9.2.2 Integrating Velocity Loop ....................... 3-38
Control X (^X) ......................................... 3-19 3.9.3 Torque Command....................................... 3-39
3.8.2 Limiting Motion ......................................... 3-19 3.9.4 Power-Up Control Loops ........................... 3-39
3.8.2.1 Hardware Travel Limits .......................... 3-19
3.8.2.2 Software Travel Limits, PMAX CHAPTER 4. USER PROGRAMS
& PMIN ................................................... 3-20
3.8.2.3 User Position Trip Points, PTRIP1 4.1 Introduction..................................................... 4-1
& PTRIP2................................................. 3-20 4.2 Programming Techniques................................ 4-1
3.8.3 Profiles ....................................................... 3-20 4.2.1 Example Application.................................... 4-3
3.8.3.1 S-Curves.................................................. 3-20 4.2.2 Application Specification ............................. 4-3
3.8.3.2 Move Absolute (MA) Command............. 3-21 4.2.3 Application Flowchart.................................. 4-3
3.8.3.3 Move Incremental (MI) Command.......... 3-22 4.2.4 Commented Program.................................... 4-5
3.8.3.4 Incremental Move Example .................... 3-22 4.2.5 Customer Service ......................................... 4-6
3.8.3.5 Profile Limits .......................................... 3-22 4.3 Editing............................................................. 4-6
3.8.3.6 Multiple Profile Commands .................... 3-23 4.3.1 Motion Link Editor ...................................... 4-6
3.8.3.7 Profile Final Position, PFNL................... 3-23 4.3.2 BDS5 Resident Editor .................................. 4-7
3.8.4 JOG (J) Command...................................... 3-23 4.3.2.1 Editor Print (P) ........................................... 4-7
3.8.5 NORMALIZE (NORM) Command ........... 3-23 4.3.2.2 Next Line................................................... 4-7
3.8.6 Zero Position Error (ZPE) Command......... 3-24 4.3.2.3 Password (PASS) ...................................... 4-7
3.8.7 MACRO MOVES ...................................... 3-24 4.3.2.4 INSERT (I)................................................ 4-8
3.8.7.1 MCA, MCI, MCD, & MCGO ................. 3-24 4.3.2.5 FIND (F) ................................................... 4-8
3.8.7.2 Macro Move Example #1........................ 3-25 4.3.2.6 CHANGE (C)............................................ 4-8
3.8.7.3 Macro Move Example #2........................ 3-25 4.3.2.7 DELETE (DEL) ........................................ 4-9
3.8.8 R/D BASED MOVE (MRD) Command .... 3-26 4.3.2.8 Size............................................................ 4-9
3.8.9 Capturing Position...................................... 3-26 4.3.2.9 NEW ......................................................... 4-9
3.8.9.1 Enabling Capture, CAP & PCAP ............ 3-26 4.4 Building A Program ...................................... 4-10
3.8.9.2 Capture Direction, CAPDIR.................... 3-26 4.4.1 Basic Commands........................................ 4-10
3.8.9.3 Speeding Up Homing Sequences ............ 3-26 4.4.1.1 Labels ...................................................... 4-10
3.8.10 Clamping .................................................. 3-27 4.4.1.2 RUN ........................................................ 4-10
3.8.10.1 Clamping and Homing .......................... 3-27 4.4.1.3 BREAK (B)............................................. 4-10
3.8.11 JOG TO (JT) & JOG FROM (JF) ............ 3-28 4.4.1.4 GOTO ..................................................... 4-10
3.8.11.1 Registration ........................................... 3-29 4.4.1.5 GOSUB and RET.................................... 4-11
3.8.11.2 Registration Example ............................ 3-29 4.4.2 Conditional Commands .............................. 4-11
3.8.11.3 Multiple JF/JT Commands .................... 3-30 4.4.2.1 Quick IF (?) Command............................ 4-11
3.9.11.4 Changing Profiles During Motion ......... 3-30 4.4.2.2 Nesting ? Commands............................... 4-12

ii
TABLE OF CONTENTS BDS5

4.4.2.3 TIL Command......................................... 4-12 4.9.1.3 External Units ......................................... 4-33


4.4.2.4 IF, ELIF, ELSE, and ENDIF 4.9.2 Machine Specific Units.............................. 4-35
Commands ............................................... 4-13 4.9.3 Position Rotary Mode, ROTARY, &
4.4.2.5 IF vs. ? .................................................... 4-14 PROTARY................................................. 4-37
4.4.2.6 Nesting IF commands ............................. 4-15 4.9.3.1 Choosing PROTARY, PNUM,
4.4.2.7 IF's with GOTO and GOSUB ................. 4-15 and PDEN ............................................... 4-37
4.5 Using the General Purpose Inputs................. 4-15 4.9.3.2 Rotary Mode and Absolute Moves ......... 4-38
4.6 Interfacing with the Operator ........................ 4-16 4.10 Serial Communications ............................... 4-38
4.6.1 PRINT (P).................................................. 4-17 4.10.1 Autobauding............................................. 4-38
4.6.1.1 Printing Decimal Numbers...................... 4-17 4.10.1.1 Setting the BDS5 to Autobaud.............. 4-38
4.6.1.2 Printing Decimal Points .......................... 4-17 4.10.1.2 Autobauding and MOTION .................. 4-38
4.6.1.3 Printing Hex Numbers ............................ 4-17 4.10.1.3 Enabling Autobaud with ABAUD ........ 4-38
4.6.1.4 Printing Binary Numbers ........................ 4-18 4.10.1.4 Baud Rate, BAUD ................................ 4-39
4.6.1.5 Printing Switches .................................... 4-18 4.10.2 Prompts .................................................... 4-39
4.6.1.6 Printing Expressions ............................... 4-18 4.10.3 Serial Watchdog....................................... 4-39
4.6.1.7 Printing ASCII Characters ...................... 4-18 4.10.4 Transmit/Receive Programs ..................... 4-39
4.6.1.8 Printing Control Characters .................... 4-19 4.10.4.1 <BDS Command Receiving from
4.6.1.9 Cursor Addressing .................................. 4-19 the BDS5............................................... 4-39
4.6.1.10 Printing BDS5 Status (PS) .................... 4-20 4.10.4.2 The >BDS Command Transmitting
4.6.2 REFRESH (R & RS) Commands............... 4-20 to the BDS5.......................................... 4-39
4.6.3 INPUT ....................................................... 4-20 4.10.5 System Dump ........................................... 4-40
4.6.3.1 INPUT Limits ......................................... 4-20 4.10.5.1 Version Dump....................................... 4-40
4.6.3.2 INPUT and Decimal Point ...................... 4-21 4.10.6 Multidrop Communications ..................... 4-40
4.6.4 SERIAL Switch.......................................... 4-21 4.10.6.1 Broadcast .............................................. 4-41
4.7 Idling Commands.......................................... 4-21 4.11 Program Examples ...................................... 4-41
4.7.1 HOLD (H).................................................. 4-21
4.7.2 DWELL (D)............................................... 4-22 CHAPTER 5. DEBUGGING
4.7.3 WAIT (W) ................................................. 4-22
4.8 MULTI-TASKING ....................................... 4-23 5.1 Introduction..................................................... 5-1
4.8.1 Multitasking and Autobauding................... 4-23 5.2 Debugging Modes........................................... 5-1
4.8.2 MULTI....................................................... 4-23 5.2.1 Single-Step................................................... 5-1
4.8.3 END Command.......................................... 4-23 5.2.2 Trace ............................................................ 5-2
4.8.4 Enabling and Disabling Multi-tasking........ 4-23 5.2.2.1 Motion Link and Trace ............................. 5-2
4.8.5 Idling.......................................................... 4-25 5.3 Debugging and Multi-Tasking ........................ 5-2
4.8.5.1 Pre-Execution Idle .................................. 4-25 5.4 Removing Code .............................................. 5-3
4.8.5.2 Post-Execution Idle................................. 4-26 5.5 Synchronizing Your Program.......................... 5-4
4.8.5.3 Avoiding Idling....................................... 4-26 5.5.1 Using the Timers, TMR1-4 .......................... 5-4
4.8.6 Alarms (Task Levels 1-3)........................... 4-26 5.5.2 Regulation Timer, RD.................................. 5-4
4.8.6.1 Restrictions of Alarms............................. 4-27 5.5.3 Motion Segments ......................................... 5-4
4.8.6.2 Printing with Alarms ............................... 4-27 5.5.4 WAIT (W) ................................................... 5-5
4.8.7 Variable Input (Task Level 4).................... 4-27 5.5.5 Gating Motion with GATE .......................... 5-6
4.8.7.1 Using Variable Input with Profiles.......... 4-28 5.6 Hints .............................................................. 5-6
4.8.7.2 Restrictions of Variable Input ................. 4-28 5.7 Error Log ........................................................ 5-8
4.8.8 Main Program Level (Task Level 5) .......... 4-29 5.7.1 Error Levels ................................................. 5-8
4.8.8.1 Power-Up Routine (POWER-UP$)......... 4-29 5.7.2 DEP.............................................................. 5-8
4.8.8.2 Error Handler (ERROR$) ....................... 4-29 5.7.3 Error History................................................ 5-9
4.8.8.3 Auto Routine (AUTO$) .......................... 4-29 5.7.4 Displaying Error Messages .......................... 5-9
4.8.8.4 Manual Program (MANUAL $).............. 4-30 5.7.5 Firmware Errors ........................................... 5-9
4.8.8.5 Typical AUTO/MANUAL Programs...... 4-30
4.8.9 Background (Task Level 6)........................ 4-30 CHAPTER 6. COMPENSATION
4.8.9.1 Restrictions of Background..................... 4-32
4.9 Units 4-32 6.1 Introduction..................................................... 6-1
4.9.1 User Units .................................................. 4-32 6.2 System Compensation ..................................... 6-1
4.9.1.1 Current Units........................................... 4-32 6.2.1 Critical Damping.......................................... 6-2
4.9.1.2 Other User Units ..................................... 4-33 6.2.2 Underdamping.............................................. 6-2

iii
BDS5 TABLE OF CONTENTS

6.2.3 Overdamping................................................ 6-2


6.2.4 Ringing......................................................... 6-2
6.3 Tuning ............................................................. 6-3
6.3.1 If Your System Is Completely Unstable... .... 6-3
6.3.2 Reducing ILIM............................................. 6-3
6.4 TUNE Command............................................. 6-4
6.5 Tuning the Bds5 Yourself ............................... 6-4
6.5.1 Tuning the Velocity Loop ............................ 6-4
6.5.2 Tuning the Position Loop ............................. 6-5
6.6 RECORD and PLAY ...................................... 6-6
6.7 Problems.......................................................... 6-6
6.7.1 Overloading the Motor ................................. 6-6
6.7.2 Compliance .................................................. 6-7
6.7.3 Non-Linear Mechanics ................................. 6-7
6.7.4 Resonance .................................................... 6-7
6.7.5 Low-Pass Filters........................................... 6-8

APPENDIX A. WARRANTY INFORMATION

APPENDIX B. ASCII TABLE

APPENDIX C. SOFTWARE COMMANDS

APPENDIX D. ERROR CODES

APPENDIX E. VARIABLE QUICK


REFERENCE

APPENDIX F. COMMAND TIMINGS

iv
LIST OF FIGURES BDS5

LIST OF FIGURES

FIGURE PAGE FIGURE PAGE

1.1 BDS5 Model Number Scheme........................ 1-4 3.5 Macro Move Example #2.............................. 3-25
1.2 Compensation Model Number Scheme........... 1-5 3.6 Jog From (JF) Command .............................. 3-28
1.3 PSR4/5 Model Number Scheme ..................... 1-6 3.7 Jog To (JT) Command .................................. 3-29
1.4 External Regen Resistor Model 3.8 BDS5 Master/Slaving ................................... 3-34
Number Scheme.............................................. 1-7 3.9 BDS5 Control Modes.................................... 3-40

2.1 BDS5 Instruction Screen................................. 2-3 4.1 Sample Flowchart ........................................... 4-4
2.2 BDS5 State Table ......................................... 2-11 4.2 Auto/Manual Flowchart ................................ 4-31
4.3 Master/Slave Block Diagram ........................ 4-34
3.1 BDS5 Enable/Fault Logic Diagram .............. 3-12
3.2 A Simple Profile ........................................... 3-20 6.1 Critical Damping............................................. 6-2
3.3 S-Curve Profile ............................................. 3-21 6.2 Underdamping................................................. 6-2
3.4 Macro Move Example #1.............................. 3-25 6.3 Overdamping................................................... 6-2
6.4 Ringing............................................................ 6-2

v
LIST OF TABLES BDS5

LIST OF TABLES

TABLE PAGE TABLE PAGE

1.1 BDS5 Model Number Scheme ........................ 1-4 4.4 Printing BDS5 Status .................................... 4-20
1.2 PSR4/5 Model Number Scheme...................... 1-6 4.5 Multi-Tasking Overview ............................... 4-24
1.3 External Regen Resistor Model 4.6 How to Enable Multi-Tasking ....................... 4-25
Number Scheme .............................................. 1-7 4.7 How to Disable Multitasking......................... 4-25
1.4 Specifications .................................................. 1-8 4.8 Four Idling Commands.................................. 4-26
1.5 Environmental Specifications........................ 1-12 4.9 To Execute AUTO$ ...................................... 4-30
1.6 Mechanical Specifications............................. 1-12 4.10 To Execute MANUAL$ .............................. 4-30
4.11 Common User Units.................................... 4-32
2.1 Cursor Control Keys........................................ 2-8 4.12 System Resolutions ..................................... 4-33
2.2 BDS5 Rules for Prompts ............................... 2-10 4.13 Setting External Units in
2.3 BDS5 Prompts............................................... 2-10 Master/Slave Systems.................................. 4-33
2.4 Monitor Mode Commands ............................ 2-12 4.14 English Conversion (12-bit
R/D Only).................................................... 4-35
3.1 Standard Units................................................. 3-2 4.15 Metric Conversion (12-bit
3.2 Power-Up State of Programmable Units ......... 3-4 R/D Only).................................................... 4-35
3.3 Rules For Math Expressions............................ 3-9 4.16 External Units Conversion .......................... 4-36
3.4 Output 1-8 Decimal Values ........................... 3-10 4.17 BDS5 Prompts............................................. 4-41
3.5 Input 1-16 Decimal Values............................ 3-11
3.6 PRD: Ranges and R/D Resolutions ............... 3-15
3.7 S-Curve Acceleration Chart .......................... 3-21 5.1 Multi-Tasking Debug Prompts ........................ 5-3
3.8 R/D Converter Accuracy ............................... 3-26 5.2 Segments for Different Moves ........................ 5-5
3.9 Encoder Resolution ....................................... 3-37 5.3 Error Severity Levels and Actions................... 5-8

4.1 BDS5 Conditions .......................................... 4-11 6.1 Tuning Criterion.............................................. 6-1


4.2 Block-IF Restrictions and Options ................ 4-14 6.2 Allowed Tune Command
4.3 Desired Operation of Program Stability Settings .................................................... 6-4
Example ........................................................ 4-14 6.3 Velocity Loop Bandwidth vs. KVI.................. 6-5
6.4 Velocity Loop Bandwidth vs. KPMAX .......... 6-5

vi
BDS5 CHAPTER 1 - SYSTEM DESCRIPTION

CHAPTER 1
SYSTEM DESCRIPTION

1.1 INTRODUCTION 1.3 FEATURES


The information in this chapter will enable you to The BDS5 offers a wide feature set to accommodate
understand the BDS5's basic functions and features. real world positioning requirements:
These concepts will allow you to apply them to your
own unique applications. • LOW COST

The BDS5 is very affordable--even though it is full of


1.2 PRODUCT DESCRIPTION advanced features. Use all or only a portion of these
features to accomplish your application.
The BDS5 is a full-featured, high-performance,
brushless positioning servo in one compact enclosure • EASY TO INSTALL
it is the smallest, totally-integrated package
available to motion control users. The BDS5 The BDS5 is easy to install because the servo
combines a positioner, a servo amplifier, and an I/O amplifier and the positioner are integrated into one
interface into one unit. The BDS5 sets new standards package. Many interconnects, including the
for motion control with its simple BASIC-like tachometer and encoder, are eliminated.
command structure and sophisticated decision-making
capability. The BDS5 provides the outstanding servo • SIMPLE PROGRAMMING LANGUAGE
performance that you have come to expect from
Industrial Drives. Using a high-performance The BDS5 uses simple BASIC-like commands such as
microprocessor, the BDS5 does not have to RUN, GOTO (for branching), and GOSUB /
compromise on either positioner software or servo RETURN (for subroutines). In addition to a simple
performance. This single microprocessor closes all comparison statement, advanced IF / ELIF / ELSE /
servo loops, resulting in a truly integrated positioning END IF statements result in more readable and less
system. The BDS5 has the features and performance error-prone programs. You can comment every line in
you need in your next positioning application. your program.

1-1
CHAPTER 1 - SYSTEM DESCRIPTION BDS5

• ADVANCED MOTION CONTROL MOVES Quantities such as position, velocity, and acceleration
are automatically scaled into user-defined units. This
The simple language does not prevent you from feature lets you program the BDS5 in convenient units,
solving complex problems. The BDS5 has separate such as feet, inches, miles, RPM, and degrees.
acceleration and deceleration rates, as well as linear,
half S-curve, and full S-curve acceleration profiles. • SUPERIOR SERVO LOOP CONTROL
The BDS5 has Macro Moves for applications where
simple indexes cannot do the job. A Macro Move is a The BDS5 offers smooth, high-resolution control.
combination of up to 30 accelerations, traverses, and Standard BDS5 position repeatability is better than
decelerations, which are fully precalculated for faster one arc-minute, bidirectional. The BDS5 has a 32-bit
execution. You can program teach modes where position word. The BDS5 position loop completely
position end points can be changed by a factory eliminates the digital dither normally associated with
operator positioning systems. Long-term speed stability is
0.01%. The standard system converter (12-bit)
• MASTER/SLAVE - ELECTRONIC GEARBOX provides a resolution of 0.0005 RPM and a maximum
speed of 8000 RPM.
The electronic gearbox is used to link two motors
together so that the velocity of the slave is • SELF-TUNING
proportional to the velocity of the master. The ratio
can be from 32767:1 to 1:32767 and can be negative The BDS5 can tune itself. You do not have to be a
to allow the slave to move in the opposite direction. servo expert to set up a system quickly. Just specify
Also, the "index-on-gearing" feature permits phase the desired bandwidth, and let the BDS5 do the rest.
adjustments.
• POWERFUL MICROPROCESSOR
• MASTER/ SLAVE - PROFILE REGULATION
The heart of the BDS5 is the 16-bit processor that
With profile regulation you can control the slave's delivers high performance. The result: the BDS5 can
motion profile according to an external master motor control a motor and execute its motion program faster
or frequency. Profile regulation modifies the velocity than a standard positioner can.
and acceleration of the slave axis without affecting the
final position of the move. You can use profile • DIGITAL SERVO LOOPS
regulation to implement "feed rate override."
Both the position and velocity loops are totally digital.
• MOTION GATING AND REGISTRATION The digital loops give the BDS5 features not available
in standard velocity drives, such as self-tuning, very
The BDS5 can precalculate moves to begin motion low velocity offset, and digitally-adjustable servo
within one millisecond after a transition on the GATE tuning parameters. The optional analog input permits
input. This provides rapid and repeatable motion you to use the BDS5 as an analog velocity drive.
initiation. The BDS5 has the ability to capture the
current position within 25 microseconds after a • FEED-FORWARD GAIN
transition of the HOME input. This results in fast
homing and accurate registration sequences. The digital feed-forward gain reduces following error
and motion initiation delay, thereby increasing
• MATHEMATICS Algebraic math is provided for machine throughput.
commands such as:
• DIAGNOSTICS
X1 = 2 × ( X 2 + X 3)
The BDS5 offers a complete set of error diagnostics.
The BDS5 has 100 program labels, 50 user-definable When an error occurs, the BDS5 displays an English
variables, and 50 user-definable switches. It also has
15 mathematical/logical operations and over 150
system variables.

• USER UNITS

1-2
BDS5 CHAPTER 1 - SYSTEM DESCRIPTION

language error message. The BDS5 remembers the your IBM-PC (c) compatible computer. With this
last 20 errors even through power loss. In addition, package, the BDS5's programs and variables can be
the BDS5 lets you write your own error handler. retrieved from or saved to a disk drive. Also, on-line
During a fault condition, you can use the error handler help and a full screen editor are built into MOTION
to set outputs, alert an operator, and shut down your LINK.
process smoothly. The BDS5 offers trace and single-
step modes so that you can debug your program. The
BDS5 has complete fault monitoring, including travel • MENU-DRIVEN SOFTWARE
limit switches, feedback loss, and software position
limits, as well as hardware safety circuits (watchdogs) The BDS5's programming language allows you to
and checksums for more reliable and safer operation. write operator-friendly, menu-driven software. By
incorporating an INDUSTRIAL DRIVES Data Entry
• I/O Panel, or any other serial communications device, the
operator can be prompted for specific process data.
The BDS5 has up to 32 I/O sections that you connect
via ribbon cable to standard OPTO-22 compatible I/O • MONITOR MODE
boards or to INDUSTRIAL DRIVES I/O-32. The
I/O-32 provides either fixed 24-volt or removable, The BDS5 provides interactive communications and
industry standard, optically-isolated I/O in a permits all system variables and parameters to be
GOLDLINE style package. examined and modified at any time--even during
actual program execution or while the motor is
• SERIAL COMMUNICATIONS running.

The BDS5's serial communications provide a powerful


link to other popular factory automation devices such 1.4 PART NUMBER DESCRIPTION
as PLC's, process control computers, and smart
terminals. The BDS5 offers RS-232 for most A model number is printed on a gold and black tag on
terminals and RS-422/RS-485 for multidrop the front of your BDS5, PSR4/5, Compensation Card
communications. With multidrop you can put up to 26 and External Regen Resistor modules. The model
axes on one serial line. The BDS5 can autobaud from number identifies how the equipment is configured.
300 baud to 19.2k baud, eliminating the need to set Each component is described to explain what the
dip switches to start communicating. model configurations are. You should verify that the
model numbers represent the equipment desired for
• MOTION LINK your application. Also verify the compatibility
between components of the servo system. The model
Industrial Drives also offers MOTION LINK, a numbers are as follows:
powerful, menu-driven communications package for

1-3
CHAPTER 1 - SYSTEM DESCRIPTION BDS5

1.4.1 BDS5 Model Number


B D S 5 A- 2 4 0 - 0 0 0 1 0 \ 6 0 5 C - 2 - / ______
A B C DE FGH I

UL Des ignator
Voltage and Cur r ent Ratings Us er Pr ogr am
O ptions Firm ware Vers ion
Motor and W inding R/D Res olution

Figure 1.1. BDS5 Model Number Scheme

Table 1.1. BDS5 Model Number Scheme

LEGEND DEFINITION
A UL Designator
A UL Listed (standard)
V Non - UL Listed
B Voltage Rating
1 115 VAC
2 230 VAC
C Current Rating
03 3 Amps/Phase
06 6 Amps/Phase
10 10 Amps/Phase
20 20 Amps/Phase
30 30 Amps/Phase
40 40 Amps/Phase
55 55 Amps/Phase
D Mechanical Options (0 indicates standard feature)
0 Standard
E Communication Options
0 RS-232 (standard)
1 RS-422/RS-485
F Input Options
0 Encoder Input (standard)
1 Analog Input
2 Pulse Input
9 No Input
G I/O Options
0 8 I/O (standard)
1 32 I/O
H R/D Accuracy Options
0 8 ARC min (standard)
I Motor and Winding
Motor and Winding Specifies Motor Model Type, Winding
R/D Resolution R/D Resolution
2 12-Bit (4096 counts/rev)
4 14-Bit (16384 counts/rev)
Firmware Version Firmware Version (Assigned by Industrial Drives, not normally specified when ordering)
Most current firmware supplied -- unless otherwise specified.
User Program User Program (This is reserved for systems that are programmed by Industrial Drives. This
is not normally specified when ordering.)

1-4
BDS5 CHAPTER 1 - SYSTEM DESCRIPTION

1.4.2 Compensation Module Model Number

203/204A
A B H

Voltage Rating Motor and W inding

Current Rating

Figure 1.2. Compensation Model Number Scheme

A partial model number is printed on a gold and black


tag on the front of the compensation module (the black
plastic box secured to the front of your BDS5 by two
screws). See Figure 1.2 for the descriptions of the YOU MUST HAVE THE
model number (that is, what ABB and HHHH mean). PROPER COMPENSATION
The model number is as follows: MODULE INSTALLED FOR
YOUR MOTOR AND BDS5.
The compensation module depends on your motor and THE COMPENSATION
the voltage and current rating of your BDS5. It is MODULE CHANGES IF THE
important that the motor, the BDS5, and the AMPLIFIER RATINGS
compensation module model numbers all agree. For CAUTION CHANGE, EVEN FOR THE
example, if your BDS5 model number is SAME MOTOR.

BDS5-203-00000\204A-1-101/2021, Failure to install the proper


compensation module can
then your compensation module model number must cause damage to the BDS5,
be: the motor, or both.
203/204A,

and your motor must be a 204A. An example of a


204A motor model number is:

B-204-A-21.

1-5
CHAPTER 1 - SYSTEM DESCRIPTION BDS5

1.4.3 PSR4/5 Model Number

P S R 4 / 5A - 2 2 0 - 0 0 0 3
A B C D E

UL Des ignator O ptions

Voltage Rating Cur r ent Rating

Figure 1.3. PSR4/5 Model Number Scheme

Table 1.2. PSR4/5 Model Number Scheme

LEGEND DEFINITIONS
A UL Designator
A UL Listed (standard)
V Non - UL Listed
B Voltage Rating
1 115 VAC
2 230 VAC
C Current Rating
12 12 Amps/Phase
20 20 Amps/Phase
50 50 Amps/Phase
75 75 Amps/Phase
D Mechanical Options
00 No Option (standard)
E Electrical Regen Options for 12 and 20 Amp Models Only
00 Standard Internal 40 W Regen (standard)
01 External Regen (230 VAC Only) 8.8 Ohms, 400 W., Requires ER-01 Resistor
Kit
02 External Regen (115 VAC Only) 5.5 Ohms, 200 W., Requires ER-02 Resistor
Kit
03 External Regen (230 VAC Only) 5.8 Ohms, 700 W., Requires ER-03 Resistor
Kit
E Electrical Regen Options for 50 and 75 Amp Models Only
00 No internal shunt regeneration (standard)
Requires external regeneration resistor kit ER-2X

1-6
BDS5 CHAPTER 1 - SYSTEM DESCRIPTION

1.4.4 ER-External Resistor Kit Model Number

Contact Industrial Drives Application Engineering to size regeneration capability.

NOTE

ER-01/XX
A B

Res is tor Rating O ptions

Figure 1.4. External Regen Resistor Model Number Scheme

Table 1.3. External Regen Resistor Model Number Scheme

LEGEND DEFINITIONS
A Resistor Rating
01 8.8 Ohms, 400 W., 230V, 12 & 20 Amp Models Only
02 5.5 Ohms, 200 W., 115V, 12 & 20 Amp Models Only
03 5.8 Ohms, 700 W., 230V, 12 & 20 Amp Models Only
20 4.5 Ohms, 500 W., 230V, 50 & 75 Amp Models Only
21 4.4 Ohms, 1000 W., 230V, 50 & 75 Amp Models Only
22 2.2 Ohms, 1000 W., 230V, 75 Amp Models Only
23 2.2 Ohms, 2000 W., 230V, 75 Amp Models Only
B Options
00 None available at this printing.

1.4.5 Molex Assembly Tools You can obtain the crimping and extraction tools from
your nearest Molex distributor or by contacting Molex
GOLDLINE series electronics (BDS4's, BDS5's, and at (708) 969-4550.
PSR4/5's) use Molex MINI-FIT JR. series connectors.
The necessary connectors and pins are included in Hand Crimping Tool Molex Order# 11-01-0122
your BDS5 and PSR4/5 connector kits.
Extractor Tool Molex Order# 11-03-0038

1-7
CHAPTER 1 - SYSTEM DESCRIPTION BDS5

1.5 SPECIFICATIONS AND RATINGS

Table 1.4. Specifications

BDS5-1XX-(90-160 VAC L-L OUTPUT TO MOTOR)


DESCRIPTION BDS5-103 BDS5-106 BDS5-110 BDS5-120
Main DC Bus
Minimum 130 VDC 130 VDC 130 VDC 130 VDC
Maximum 225 VDC 225 VDC 225 VDC 225 VDC
±15-20 VDC ±15-20 VDC ±15-20 VDC ±15-20 VDC
@0.25 AMPS @0.25 AMPS @0.25 AMPS @0.25 AMPS
Unregulated Logic Bus
+8-12 VDC +8-12 VDC +8-12 VDC +8-12 VDC
@1.00 AMPS @1.00 AMPS @1.00 AMPS @1.00 AMPS
Output Current
(RMS/∅) Convection Fan
Cooled (45°C AMB) Cooled
Continuous (RMS) 3.0 AMPS 6.0 AMPS 10.0 AMPS 20.0 AMPS
Peak (2.0 sec) (RMS) 6.0 AMPS 12.0 AMPS 20.0 AMPS 40.0 AMPS
Output KVA
(@ 160 VDC Bus)
Continuous (45°C AMB) 0.6 KVA 1.2 KVA 2.0 KVA 4.0 KVA
Peak (2.0 sec) (RMS) 1.2 KVA 2.4 KVA 4.0 KVA 8.0 KVA
Internal Heat Dissipation 30 WATTS 40 WATTS 60 WATTS 110 WATTS
PWM Switching Frequency 10.0 kHz 10.0 kHz 10.0 kHz 10.0 kHz
Motor Current Ripple
Frequency ±10% 20.0 kHz 20.0 kHz 20.0 kHz 20.0 kHz
Resolver Excitation Frequency 8.5 kHz 8.5 kHz 8.5 kHz 8.5 kHz
Form Factor RMS/AVG ≤ 1.01 ≤ 1.01 ≤ 1.01 ≤ 1.01
Fan (115 VAC) N/A N/A N/A 0.2 AMPS

1-8
BDS5 CHAPTER 1 - SYSTEM DESCRIPTION

Table 1.4. Specifications (Cont.)

BDS5-2XX-(160-253 VAC L-L OUTPUT TO MOTOR)


DESCRIPTION BDS5-203 BDS5-206 BDS5-210 BDS5-220
Main DC Bus
Minimum 225 VDC 225 VDC 225 VDC 130 VDC
Maximum 360 VDC 360 VDC 360 VDC 225 VDC
±15-20 VDC ±15-20 VDC ±15-20 VDC ±15-20 VDC
@0.25 AMPS @0.25 AMPS @0.25 AMPS @0.25 AMPS
Unregulated Logic Bus
+8-12 VDC +8-12 VDC +8-12 VDC +8-12 VDC
@1.00 AMPS @1.00 AMPS @1.00 AMPS @1.00 AMPS
Output Current
(RMS/∅) Convection
Cooled (45°C AMB)
Continuous (RMS) 3.0 AMPS 6.0 AMPS 10.0 AMPS 20.0 AMPS
Peak (2.0 sec) (RMS) 6.0 AMPS 12.0 AMPS 20.0 AMPS 40.0 AMPS
Output KVA
(@ 160 VDC Bus)
Continuous (45°C AMB) 1.2 KVA 2.0 KVA 4.0 KVA 8.0 KVA
Peak (2.0 sec) (RMS) 2.4 KVA 4.0 KVA 8.0 KVA 16.0 KVA
Internal Heat Dissipation 35 WATTS 50 WATTS 75 WATTS 150 WATTS
PWM Switching Frequency 10.0 kHz 10.0 kHz 10.0 kHz 10.0 kHz
Motor Current Ripple
Frequency ±10% 20.0 kHz 20.0 kHz 20.0 kHz 20.0 kHz
Resolver Excitation Frequency 8.5 kHz 8.5 kHz 8.5 kHz 8.5 kHz
Form Factor RMS/AVG ≤ 1.01 ≤ 1.01 ≤ 1.01 ≤ 1.01
Fan (115 VAC) N/A N/A N/A 0.2 AMPS

1-9
CHAPTER 1 - SYSTEM DESCRIPTION BDS5

Table 1.4. Specifications (Cont.)

PSR4/5-1XX-(90 - 160 VAC L-L INPUT)


DESCRIPTION PSR4/5-112- PSR4/5-120-
Main AC Line Input Voltage 90-160 VAC 90-160 VAC
Phase 1-3 1-3
Frequency 47-63 Hz 47-63 Hz
Current Cont. (RMS) 3-Phase 12.0 AMPS 20.0 AMPS
Single-Phase 10.0 AMPS 16.0 AMPS
Peak (2.0 sec) 3-Phase 24.0 AMPS 40.0 AMPS
Single-Phase 20.0 AMPS 32.0 AMPS
Peak (50.0 msec) 3-Phase 50.0 AMPS 80.0 AMPS
Single-Phase 42.0 AMPS 64.0 AMPS
Control AC Line Input Voltage 90-132 VAC 90-132 VAC
Phase 1 1
Frequency 47-63 Hz 47-63 Hz
Main DC Bus Output Voltage
(Nominal 115 VAC Input) 160 VDC 160 VDC
Current 115 VAC 1.1 AMPS RMS 1.1 AMPS RMS
Regeneration Shunt Resistor (Internal) 15 OHM 7.5 OHM
Shunt Regulator Current (PK) 15.3 AMPS 30.6 AMPS
Power Dissipation (Cont.) 40 WATTS 40 WATTS
Power Dissipation (PK) 3.5 KW 7.0 KW
Internal Heat Dissipation 120 WATTS 120 WATTS
Regeneration Shunt Resistor (External Min) 5.5 OHM 5.5 OHM
Shunt Regulator Current (PK) 41.8 AMPS 41.8 AMPS
Power Dissipation (Cont.) 200 WATTS 200 WATTS
Power Dissipation (PK.) 9.6 KW 9.6 KW
Soft-Start Surge Current (Max) 80 AMPS 80 AMPS
Charge Time (Max) 25 MSEC 25 MSEC

1-10
BDS5 CHAPTER 1 - SYSTEM DESCRIPTION

Table 1.4. Specifications (Cont.)

PSR4/5-2XX-(160 - 253 VAC L-L INPUT)


DESCRIPTION PSR4/5-212- PSR4/5-220-
Main AC Line Input Voltage 160 - 253 VAC 160 - 253 VAC
Phase 1-3 1-3
Frequency 47-63 Hz 47-63 Hz
Current Cont. (RMS) 3 Phase 12.0 AMPS 20.0 AMPS
Single Phase 10.0 AMPS 16.0 AMPS
Peak (2.0 sec) 3 Phase 24.0 AMPS 40.0 AMPS
Single Phase 20.0 AMPS 32.0 AMPS
Peak (50.0 msec) 3 Phase 50.0 AMPS 80.0 AMPS
Single Phase 42.0 AMPS 64.0 AMPS
Control AC Line Input Voltage 90-132 VAC 90-132 VAC
Phase 1 1
Frequency 47-63 Hz 47-63 Hz
Main DC Bus Output Voltage
(Nominal 115 VAC Input) 325 VDC 325 VDC
Current 115 VAC 1.1 AMPS RMS 1.1 AMPS RMS
Regeneration Shunt Resistor (Internal) 25 OHM 12 OHM
Shunt Regulator Current (PK) 15 AMPS 30 AMPS
Power Dissipation (Cont.) 40 WATTS 40 WATTS
Power Dissipation (PK) 5.6 KW 11.2 KW
Internal Heat Dissipation 120 WATTS 150 WATTS
Regeneration Shunt Resistor (External Min) 8.8 OHM 8.8 OHM
Shunt Regulator Current (PK) 44.3 AMPS 44.3 AMPS
Power Dissipation (Cont.) 400 WATTS 400 WATTS
Power Dissipation (PK) 17.3 KW 17.3 KW
Soft Start Surge Current (Max) 150 AMPS 150 AMPS
Charge Time (Max) 25 MSEC 25 MSEC

1-11
CHAPTER 1 - SYSTEM DESCRIPTION BDS5

Table 1.5. Environmental Specifications

Operating Temperature*:
3, 6, & 10 AMP Units (Convection Cooled) 0o C to 45o C
20 Amp Units (Internal Fan Cooled) 0o C to 45o C

Storage Temperature -20o C to 70o C

Humidity (Non-Condensing) 10% to 90%


* For operation ambients above 45°C, consult the Applications Group at Industrial Drives.

Table 1.6. Mechanical Specifications

MODEL WIDTH HEIGHT DEPTH


NUMBER MM IN. MM IN. MM IN.
BDS5-X03- 56 2.20 340 13.49 280 11
BDS5-X06- 76 2.99 340 13.49 280 11
BDS5-X10- 98 3.86 340 13.49 280 11
BDS5-X20- 98 3.90 340 13.49 280 11
PSR4/5- 76 3.00 340 13.49 280 11
X12 & X20-

1.6 THEORY OF OPERATION • DISCRETE INPUTS

Drawing D-93030 shows a system overview. The BDS5 has 23 discrete inputs, including REMOTE
ENABLE which is on Connector C2 only. Note that
• MICROPROCESSOR SYSTEM two signals, HOME and CYCLE, can be input to the
BDS5 on two connectors, C2 and C7. Connector C2
The BDS5 is a digital positioner and servo drive provides these three signals with optical isolation.
combined into one unit. The velocity loop is 100% Connector C7 expects non-isolated TTL signals on a
digital. The BDS5 has battery backup RAM to 26-pin ribbon cable connector. Optional Connector
remember your program and most variables through C8 expects non-isolated TTL signals on a 50-pin
power-down. ribbon cable connector.

• RESOLVER-TO-DIGITAL CONVERTER • DISCRETE OUTPUTS

The BDS5 is based on a Resolver-to-Digital (R/D) The BDS5 has 10 discrete outputs. Notice that O1
converter. The R/D generates a tachometer signal for appears both on Connector C2 with optical isolation
your convenience. However, the BDS5 does not use and on Connector C8.
the analog tach signal.
• ENCODER INPUT
• SERIAL PORT
The BDS5 accepts external inputs in encoder format.
The BDS5 has a serial port for communications. This This can come from a master motor in a master/slave
port allows you to monitor the operation, issue system. Note that you must use a resolver, even if you
commands, and transmit a program. use a feedback encoder with the BDS5.

1-12
BDS5 CHAPTER 1 - SYSTEM DESCRIPTION

• ENCODER EQUIVALENT OUTPUT • CURRENT LOOP COMPENSATION

The BDS5 provides encoder format output derived The BDS5 has analog current loops. The current loop
from the R/D converter. compensation components are all contained in the
compensation module located on the front of the
• ANALOG INPUT (OPT1 CARD) BDS5. The current loop compensation changes when
you change the motor model. You must install the
As an option, the BDS5 can accept a ±10 volt analog correct compensation module when changing motor
input. This input is converted to digital format by the models.
BDS5. Gain and offset adjustments are made digitally
inside the BDS5, not with potentiometers.

• PULSE INPUT (OPT2 CARD) YOU MUST HAVE THE


PROPER COMPENSATION
The BDS5 can accept special pulse inputs. The MODULE INSTALLED FOR
standard BDS5 can accept signals directly from YOUR MOTOR
encoders or encoder-like devices. As an option, the
BDS5 can accept other pulse formats, such as CAUTION Failure to install the proper
count/direction or up/down. compensation module can
cause damage to the BDS5,
• LED'S the motor, or both.

The BDS5 provides LED's for diagnostics. These


LED's are on the front panel of the BDS5. The LED's
are listed below: 1.7 SIMPLIFIED SCHEMATIC
DIAGRAM AND SYSTEM DIAGRAM
ACTIVE
SYS OK Drawings D-93030 and A-84847 illustrate a BDS5
CPU servo system with all of the major components.
FAULT
RELAY

1-13
CHAPTER 1 - SYSTEM DESCRIPTION BDS5

24 VOLT DC
CUSTOMER
SUPPLIED
I/O DC C2-PIN 5 ALTERNATE POWER SOURCE
- + FOR REMOTE, HOME, AND C5-PIN 3
TXD
C2-PIN 15 CYCLE ONLY !
COMMON RS-232 C5-PIN 2
RXD
C2-PIN 9 +5
120 OHM 3 1
OPTICAL
REMOTE 1K
ISOLATOR J1
C5-PIN 6 4 2
C2-PIN 19 TD+
OPTICAL C5-PIN 7
HOME ISOLATOR TD-
5
120 OHM 7
C2-PIN 8 RS-485 J1 6 1K
OPTICAL
CYCLE ISOLATOR C5-PIN 8 8
C2-PIN 18 RD+
IN COMMON
C5-PIN 9
RD-

C7-PIN 9
INPUT BUFFERS
HOME
C7-PIN 13 AND PULL-UP

CYCLE
C7-PIN 11

LIMIT
C7-PIN 15

MOTION 74HC14
C7-PIN 17

GATE
C7 (EVEN PINS)
MICROCOMPUTER SYSTEM
C7 STANDARD I/O

C8 (EVEN PINS)

C8-PIN 33

MANUAL
C8-PIN 31

I1 MICROPROCESSOR
C8-PIN 29 INPUT BUFFERS
I2 AND PULL-UP
C8-PIN 27

I3
C8-PIN 25

I4
C8-PIN 23

I5
C8-PIN 21

I6
C8-PIN 19

I7
C8-PIN 17

I8
C8-PIN 15
74LS540
I9
C8-PIN 13

I10
C8-PIN 11 BATTERY
BACK-UP ROM
I11 RAM
C8-PIN 9

I12
C8-PIN 7

I13
C8-PIN 5

I14
C8-PIN 3

I15
C8-PIN 1

I16 C8 OPTIONAL I/O

C2-PIN 11
ANALOG
DIFF CMD HI TO PULSE
C2-PIN 1 CONVERTER
DIFF CMD LO
OPTIONAL

C1-PIN 5
SN75175 CH A
IN A
IN A
C1-PIN 10
ENCODER
BDS5 SYSTEM OVERVIEW
TO

C1-PIN 4 DIGITAL
IN B SN75175 CH B

IN B
C1-PIN 9

1-14
BDS5 CHAPTER 1 - SYSTEM DESCRIPTION

ISSUE

2
D-93030
75155
"ACTIVE"
LED

SHULER

12-17-92
HARDWARE "SYS OK"
WATCHDOG LED

75156
"CPU"

COPY CODE
LED

"FAULT"
LED
75156

I
"RELAY"
RD TD LED

C2-PIN 17
"RELAY"
C2-PIN 16 RELAY
( N. O. )
C2-PIN 10
24 VOLT 01 HI
OPTICAL C2-PIN 20
ISOLATOR 01 LO

C8-PIN 35
STATUS
C8-PIN 47
OUTPUT BUFFERS 01
WITH OPEN
C8-PIN 45
COLLECTORS 02
C8-PIN 43
03
C8-PIN 41
04
C8-PIN 39
05
C8-PIN 37
06
ULN2803A C8 OPTIONAL I/O

C7-PIN 21
07
C7-PIN 19
08
C7-PIN 23
CYCLE
C7 STANDARD I/O READY

BUS + BUS -
ABSOLUTE
3.01K C2-PIN 4
VALUE 5 VOLTS = FULL SCALE
CIRCUIT I MONITOR
C2-PIN 14
COMMON

8 PIN 10 A-PHASE
9 CURRENT Ma
7 PIN 5 CURRENT
LOOP
SAMPLE

5 PIN 9 B-PHASE PWM


POWER CURRENT Mb
6 CURRENT
4 PIN 4 LOOP STAGE SAMPLE

MOTOR
CURRENT
2 PIN 8 C-PHASE
SAMPLE
3 CURRENT Mc
1 PIN 3 LOOP
RESOLVER

COMPENSATION GND
CARD

1.0K C2-PIN 2 TACH


MONITOR
C2-PIN 12
C3-PIN 4 REF HI TACH SCALING = 1000 RPM/V 4700pf
COMMON

C3-PIN 10 REF LO
C1-PIN 1
C3-PIN 7 SIN HI CH A OUT A
75174 C1-PIN 6
OUT A
RESOLVER
C3-PIN 1 SIN LO
TO
DIGITAL C1-PIN 2
C3-PIN 9 COS HI DIGITAL OUT B
CONVERTER CH B
TO 75174 C1-PIN 7
ENCODER OUT B
C3-PIN 3 COS LO

C1-PIN 3
CH Z OUT Z
75174 C1-PIN 8
OUT Z

1-15
CHAPTER 1 - SYSTEM DESCRIPTION BDS5
ISSUE

ISSUE
CUSTOMER I/O
4

4
MASTER (OPTO-22 COMPATIBLE)
ENCODER
A-84847

A-84847
R. FURR
1-14-91
MODEL No.

CYCLE READY
REV No.
EXTERNAL REGEN RESISTOR

ACTIVE
O7
C1
SYS OK

CPU
O8
FAULT

GATE
O1
RELAY

D.C. BUS
MOTION
T
O2
1
C2
REGEN
OVERLOAD
CYCLE
J1
BLOWN FUSE O3
LIMIT
O4
HOME
O5
C3

C5 C1 O6
MODEL No MODEL No

C4
STATUS
C2
SERIAL No SERIAL No
MANUAL
INDUSTRIAL INDUSTRIAL
I1
TERMINAL DRIVES
BDS5
DRIVES
PSR I2
I3
OR BUS+ BUS+
I4
BUS- BUS-
PC COMPATIBLE Ma La
I5
Mb Lb I6
Mc Lc
I7
I8
GND GND
I9
I10
I1
115 VAC, I2
1 PHASE I3
I4
I5
I6
COPY CODE

230 VAC,
3 PHASE
OR
115 VAC,
1 PHASE
I

GOLDLINE
MOTOR

TYPICAL BDS5 SYSTEM INTERCONNECT

1-16
BDS5 CHAPTER 2 - GETTING STARTED

CHAPTER 2
GETTING STARTED

2.1 INTRODUCTION • Serial Port (for communication link with BDS5).


The serial communications port may be COM1
The information in this chapter will enable you to get or COM2. The chart below shows the way your
started with programming the BDS5. Computer PC should configure COM1 and COM2. This is
requirements and software installation prepare you the normal configuration:
for Motion Link, the Industrial Drives' software
package specially designed for the BDS5. This COM1: (PC Address 3F8h, Interrupt Request #4)
chapter also contains an overview of Motion Link and
its basic functions and features. The Motion Link COM2: (PC Address 2F8h, Interrupt Request #3)
setup program is introduced to enable the user to have
easy access to the more common Motion Link
procedures. 2.3 SOFTWARE INSTALLATION
The following section will show you how to back up
2.2 COMPUTER REQUIREMENTS and copy the files from the Motion Link disk to your
computer's hard disk or floppy disk.
The BDS5 requires an IBM-PC or compatible
computer with the following features:
2.3.1 Backing Up the Disk(s)
• IBM-PC, XT, AT, PS/2, or compatible
workstation. Before starting Motion Link, you should back up the
Motion Link disk(s) that came with the BDS5. This
• 512 K RAM. way if something happens to the master disk(s), you'll
always have a copy. Remember, disks can be
• PC-DOS or MS-DOS Version 2.5 or later. damaged by heat, magnets, pressure, and dirt  all
extensively found in a manufacturing environment.
• Either 5-1/4" or 3-1/2" Floppy Drive. Follow the procedure below to back up your disk(s).

• Standard Video Adapter (CGA, MDA, EGA, 1. From DOS, find either the DOS disk or directory
MCGA, and VGA). where DISKCOPY.COM is located

and type:

2-1
CHAPTER 2 - GETTING STARTED BDS5

DISKCOPY A: A: 2.3.2.2 Install on a Floppy Disk


Use this procedure to install Motion Link on a floppy
Press enter and follow the DOS prompts on disk. Use the procedure for both Motion Link disks if
screen concerning source (Motion Link) and you are using a 5-1/4 floppy.
destination (blank disk) disks.
1. Insert your DOS disk into the A-drive. The
2. After DOS finishes copying the disk(s), place the DOS Disk must have the DOS file,
Motion Link original disk(s) in a safe place for FORMAT.COM.
storage. Use it only to make extra copies. Never
use the original disk(s) in day-to-day operation. 2. Insert a blank disk into the B-drive.

3. Type:
2.3.2 Software Installation
A:
Motion Link can be installed on either a hard disk, 5-
1/4 floppy disks, or 3-1/2 floppy disks. Follow the 4. Type:
corresponding instructions below for the installation
that your system requires. FORMAT B:/S

2.3.2.1 Install on a Hard Disk 5. The Format program will ask you to hit a key
Use this procedure to install Motion Link on a hard to continue.
disk.
6. After the format is completed, your computer
1. Type: will prompt you to format more disks; answer
"N" to exit the Format command.
C:
7. Remove the DOS disk from the your computer.
Leave the formatted disk in the B-drive.
2. Make a subdirectory named ML5 on your hard
disk. Type:
8. Insert the Motion Link disk into the A-drive.
This disk should be in the disk holder in the
MD \ML5 front of this manual.

3. Change to subdirectory ML5. Type: 9. Copy all the files from the original Motion
Link disk onto your disk by typing:
CD \ML5
"COPY A:*.* B:".
4. Insert the Motion Link disk into the A-drive.
This disk should be in the disk holder in the 10. Label your disk as Motion Link. Include
front of this manual. today's date on the label.

5. Copy all the files from the Motion Link disk 11. Store the original Motion Link disk in a safe
onto the hard disk by typing: place. Do not use this disk, except to make
other copies.
COPY A:*.* 2.3.3 Establishing Communications

6. Store the original Motion Link disk in a safe This procedure will get you started using Motion
place. Do not use this disk, except to make Link after you have installed it:
other copies.
1. Connect and turn on your BDS5 as described in
the Installation and Setup Manual.

2-2
BDS5 CHAPTER 2 - GETTING STARTED

MOUSE INSTALLED
VGA w/ COLOR MONITOR
ML.CNF CONFIGURATION FILE FOUND

CONFIGURATION FILE (ML.CNF) FOUND

SCREEN COLORS
BDS5 PASSWORD======> <NONE> NORMAL FOREGROUND=>9
BAUD RATE==========> 9600 BAUD NORMAL BACKGROUND=>1
COM PORT===========> COM1: REVERSE FOREGROUND=>2
REVERSE BACKGROUND=>5

AUTOBAUD BDS5 B
AUTOBAUD PER ML.CNF A
BDS5 OFFLINE O
INTRO HELP H
QUIT X

SELECT THIS TO AUTOBAUD THE BDS5 AT 9600 BAUD

Figure 2.1. BDS5 Introduction Screen


waiting and ready for a command. When you type,
2. If you have Motion Link installed on a hard you are talking to the BDS5 just as you would with a
disk, type: terminal. For example, type:

CD\ML5 P "HELLO, WORLD"


ML
and the BDS5 should response by printing:
Skip to Step 4.
HELLO, WORLD
3. If you have Motion Link installed on a floppy
disk. Insert the copy of Motion Link in the A- You can enter any BDS5 command from Motion Link
drive, type: just as if your IBM-PC compatible computer were a
terminal.
A:
ML The green SYS OK LED on the front of the BDS5
should turn on and remain on at all times after power-
4. When Motion Link responds the BDS5 should up (and autobauding).
respond on your PC monitor with the message 2.4 MOTION LINK OVERVIEW
in Figure 2.1 (or a similar one).
This screen displays the current BDS5 configuration. Motion Link is a full-featured communications
The small box at the lower half of the screen provides program written by Industrial Drives and designed
five choices for the operator  Autobaud BDS5, especially for the BDS5. Motion Link makes your
Autobaud Per ML.CNF, BDS5 Offline, Intro. Help, IBM-PC compatible into a smart terminal. Of course,
and Quit. First time users may wish to refer to the you can enter BDS5 commands from your computer
online Intro Help by pressing "H." Choosing to auto as if you were using a terminal. For example, you can
baud with the BDS5 allows direct interactive start a program with the RUN command and use the
communication with the BDS5. The BDS5 PRINT command to display values of variables.
interactive prompt is "-->." This means the BDS5 is Motion Link also provides "smart" features such as a

2-3
CHAPTER 2 - GETTING STARTED BDS5

full-screen editor, disk storage and retrieval, and the


communications "capture" for debugging. 2.4.1.1 Program
The PROGRAM pull-down window allows you to
retrieve, edit, transmit, and save BDS5 programs.
2.4.1 Menus and Windows
• EDIT - This selection calls the Motion Link
Motion Link's special features are accessed through a Editor and assumes that you want to "re-edit"
menu bar printed at the top of your PC screen. When the last program that you edited. It is a short-
you select an entry from the menu bar, a pull-down cut, allowing you to edit without first loading a
window appears, allowing you to select an item. program from the BDS5 or from the disk. If
Press the F10 key, the right arrow key, or the left you exit the Motion Link Editor, Motion Link
arrow key, to display the menu bar. You can leave a remembers the program you were last editing.
window or the menu bar by pressing the escape key. Note that if you have selected an item from
There are six choices on the menu bar: either the VARIABLES or CAPTURE menu
since you last edited a program, this selection is
• PROGRAM - Edit new or old BDS5 programs; invalid.
retrieve a program from disk or from the
BDS5. • FROM DISK - This selection retrieves a
program from your computer disk. Motion
• VARIABLE - Edit new or old BDS5 variable Link will display all of the files currently on
files; retrieve variable files from disk or from your disk and allow you to choose the file you
the BDS5. Variable files contain static want. After you choose a program, the Motion
assignments. A static assignment is an Link Editor is called, allowing you to examine
instruction that sets the value of a variable that and change the program.
does not change throughout the program. Of
course, static assignments can be included in • FROM BDS5 - This selection retrieves the
your BDS5 power-up routine. However, program currently stored in the BDS5. After
moving a static assignment from your program the program is returned, the Motion Link
to the variable file saves space in your Editor is called, allowing you to examine and
program. change the program.

• CAPTURE - Start or stop capturing • NEW PROGRAM - This selection calls the
communications from the BDS5; retrieve Motion Link Editor, allowing you to enter a
previous capture files from disk; examine (edit) new program.
capture files.
Upon exiting the Motion Link Editor, you can store
• SCOPE - Retrieve, plot, print, and store the program to your computer disk and/or transmit it
PC-scope. to the BDS5.

• OPTIONS - Set up communications, screen 2.4.1.2 Variables


colors, computer configuration. The VARIABLES pull-down window allows you to
• HELP - Provide on-screen help for Motion retrieve, edit, transmit, and save BDS5 variable files.
Link and for the BDS5. A BDS5 variable file contains a list of some or all of
the BDS5 variables with initial values. This includes
• UTILITIES - Exit Motion Link, enter a DOS user variables and control variables. Together, these
command from within Motion Link, use a variables configure a BDS5 for an application.
DEP01 Simulator or run Motion Link Setup
program. • EDIT - This selection calls the Motion Link
Editor and assumes that you want to "re-edit"
the last variable file that you edited. It is a
short-cut, allowing you to edit without first
loading a variable file from the BDS5 or from
the disk. If you exit the Motion Link Editor,
Motion Link remembers the variables you were

2-4
BDS5 CHAPTER 2 - GETTING STARTED

last editing. Note that if you have selected an capture storage area before beginning to
item from either the PROGRAM or CAPTURE capture new communications.
menu since you last edited a variable file, this
selection is invalid. • STOP CAPTURE - This selection
terminates the communications capture. If
• FROM DISK - This selection retrieves a you want to examine the communications
variable file from your computer disk. Motion that were captured, select "EDIT" in this
Link will display all of the variable files menu.
currently on your disk and allow you to choose
the file you want. After you choose a variable 2.4.1.4 Scope
file, the Motion Link Editor is called, allowing • VIEW AGAIN - This selection lets you view
you to examine and change the variable file. playback data that was previously retrieved
from the BDS5.
• FROM BDS5 - This selection retrieves all of
the variables currently stored in the BDS5. • FROM DISK - This selection retrieves
After the variables are retrieved, the Motion recorded data from your computer disk.
Link Editor is called, allowing you to examine Motion Link will display all of the playback
and change the variable file. files currently on your disk and allow you to
choose the file you want. Playback files
• NEW VARIABLES - This selection calls the have the file type .CSV for "comma
Motion Link Editor, allowing you to enter a separated variables." This format is
new set of variables. compatible with most spreadsheets.
Upon exiting the Motion Link Editor, you can store • FROM BDS5 - This selection retrieves
the variable settings to your computer disk and/or playback data stored in the BDS5. After the
transmit them to the BDS5. playback data is retrieved, the data is plotted
and stored on disk.
2.4.1.3 Capture
• VIEW DATA - View the data in numerical
This is a communications (rather than graphical) format.
capture and is unrelated to
the BDS5 variables CAP and • PRINT PLOT - Print the plot on a line
CAPDIR which are for position printer.
NOTE capture.

2.4.1.5 Options
• EDIT - This selection allows you to examine • SELECT AXIS - This selection allows you
the communications that have been captured. to select options that are available to systems
Upon exiting the Motion Link Editor, you using RS-485 communications.
can store the captured data on your computer
disk. Note that if you selected an item from • BDS5 PASSWORD - This selection allows
either the PROGRAM or VARIABLES you to enter the password that you set in the
menu since you last captured BDS5 editor. If you set such a password in
communications or loaded a
communications capture file, this selection is the BDS5, Motion Link needs the password
invalid. to transmit new programs to the BDS5. If
you use this selection to change the
• FROM DISK - This selection allows you to password, then you should use the UPDATE
retrieve a capture file from disk and examine CONFIGURATION function below to write
it with the Motion Link Editor. a new configuration file.

• START CAPTURE - This selection starts • COMMUNICATIONS - This selection


(or re-starts) capturing communications from allows you to set up your communications
the BDS5. This selection always clears the port. After you have set up this port, Motion
Link will initiate an autobaud sequence to

2-5
CHAPTER 2 - GETTING STARTED BDS5

re-establish communications. Remember to


power-down the BDS5 so that it will • TL FROM BDS5 - This selection is an
autobaud. If you want Motion Link to use internal function.
the new communications setup in the future,
you must use the UPDATE 2.4.1.6 Help
CONFIGURATION function below to write • BDS5 HELP <F1> - This selection displays
a new configuration file on your computer several pages of help for the BDS5. It lists
disk. BDS5 commands and variables with brief
descriptions. You can also press F1 for this
• SCREEN COLORS - This selection allows help.
you to change the colors displayed on your
computer monitor. If you want Motion Link • INTRO HELP - This selection displays
to use the new colors in the future, you must introductory information about Motion Link.
use the UPDATE CONFIGURATION
function below to write a new configuration • LAST COMMAND <F3> - This selection
file. recalls your last command. You can also use
the function key F3 to recall your last
• CABLE DISCONNECT - This selection command.
provides a safe method of disconnecting the
communication cable from a BDS5 that is • VARIABLE INPUT ^V - If you have
powered up. After you have reconnected the included a variable input routine in your
cable, press the space bar and Motion Link BDS5 program (that is, used VARIABLE$)
will restart communications. Disconnecting and your program is running, this selection
this cable can generate random characters. will initiate that routine. You can also press
Do not disconnect your communications ^V (hold the control key down and press V)
cable without using this function. for this function.

Always use this selection to • STOP MOTION ^X - This selection breaks


secure data before your BDS5 program and stops motion. It
disconnecting the works even if your program is not in the
NOTE Interactive or Monitor mode. You can also
communications cable.
press ^X for this function.

• UPDATE CONFIGURATION - This 2.4.1.7 Utilities


selection allows you to examine and write • RUN DEP01 SIMULATOR - This selection
the Motion Link configuration file. This file allows the computer to simulate Industrial
contains information about your computer, Drives DEP (Data Entry Panel).
such as what communications port you are • RUN BDS5 SETUP PROGRAM - This
using, the baud rate at which your computer selection provides utilities to test I/O, drive
is transmitting, and what your screen colors feedback, communication, and dedicated
are. All of the settings displayed in this switches. Refer to Section 2.6 for more
selection can be changed by the SETUP- information.
BDS5 PASSWORD, SETUP-
COMMUNICATIONS, and SETUP- • EXIT TO DOS Alt-X - This selection
SCREEN COLORS and selections. terminates Motion Link and returns to DOS.
You can also press Alt-X (hold the alternate
key down and press X) for this function.
After you make these changes, you should
update the configuration file (ML.CNF) with • SHELL TO DOS - This selection allows you
this selection. This file is read by Motion to temporarily exit (or "shell") to DOS so
Link when you type "ML" from DOS. that you can execute a DOS command.
Type "EXIT" to return to Motion Link.
• TL FROM DISK - This selection is an
internal function.

2-6
BDS5 CHAPTER 2 - GETTING STARTED

• COPY MARKED BLOCK ^K^C - Use this


selection after you have marked a block.
2.4.2 Editor This selection copies the marked block into
the Motion Link cut/paste memory. If you
want to copy the block into the cut/paste
The Motion Link Editor is a full-featured screen
memory and delete it from the editor, see
editor. Use this editor to examine or edit programs
CUT MARKED BLOCK below.
and variable files, or to capture data. All of the editor
commands can be accessed from a menu bar and pull-
• CUT MARKED BLOCK ^K^V - Use this
down windows. Press the F10 key to display the
selection after you have marked a block.
menu bar. Then use the left and right arrow keys to
This selection copies the marked block into
select a pull-down window. Each editor command can
the Motion Link cut/paste memory and
be accessed with a "control key" or "hot-key"
deletes it from the editor. If you want to
sequence. You can use the control key as a shortcut
copy the block into the cut/paste memory
in place of selecting from the window. The control-
without deleting it from the editor, see
key sequence is listed beside each command here, and
COPY MARKED BLOCK above.
in Motion Link. For example, the FILE-PRINT
selection can be accessed with ^P (hold the control
• PASTE CUT/COPIED BLOCK ^K^P - Use
key down and press P). Many selections require two
this selection after you have either copied or
control keys, such as FILE-FILE MERGE ^K^R. In
cut a block to the cut/paste memory. This
this case, hold down the control key and press and
selection copies the cut/paste memory into
release K, then press R. The rest of this section will
the editor starting at the cursor. You must
discuss each of the editor pull-down windows.
position the cursor to the proper place before
you make this selection.
2.4.2.1 File
• SAVE FILE ^K^S - Copy the file in the • SAVE MARKED BLOCK ^K^W - Use this
editor to the disk. selection after you have marked a block.
This selection saves the marked block to a
• MERGE FILE ^K^R - Copy a file into the file on your disk. Motion Link will ask you
editor starting at the cursor. You must place for the file name after you make this
the editor cursor in the proper location selection.
before you make this selection.

• PRINT... ^P - Print the contents of the 2.4.2.3 GOTO


editor. • FIND A STRING ^Q^F - This selection
finds a string in the editor. Motion Link will
• EXIT <Esc> - This selection exits the prompt you to enter the string.
Motion Link Editor. If you modify your
program, Motion Link will prompt you to • REPEAT LAST FIND ^L - This selection
save your program to your computer's disk repeats the last FIND A STRING.
when you exit. If you are editing a program
or a variable set, Motion Link will normally • GOTO A LINE NUMBER ^Q^I - This
prompt you to transmit the program or selection moves the cursor to the specified
variable settings to the BDS5. You can also line. Note that you can transmit your
use the escape key for this function. program to the BDS5 without comments.
Since comment lines can be ignored by
2.4.2.2 Edit Motion Link when your program is
• MARK START OF BLOCK ^K^B - This transmitted, the line numbers of your
selection marks the beginning of a block. If program in the editor may not agree with the
you want to move or eliminate a block of line numbers of your program in the BDS5.
text, use this selection to mark the top and Because of this, Motion Link will ask you if
the bottom of the block you want to you want to count comments. If you are
manipulate. trying to find a line number from a BDS5
error message, and you transmitted your

2-7
CHAPTER 2 - GETTING STARTED BDS5

program without comments, specify that you


Table 2.1. Cursor Control Keys
DO NOT want Motion Link to count
comment lines. Otherwise, specify that you
TOP OF EDITOR ^<PageUp>
DO want comment lines counted.
END OF EDITOR ^<PageDn>
• SHOW SIZE OF EDITOR ^Q^O - This
UP ONE PAGE <PageUp> or ^R
selection displays how much space is left in
the Motion Link Editor. Use this selection if DOWN ONE PAGE <PageDn> or ^C
you are concerned that your program is
BEGINNING OF LINE <Home>
filling up the editor. The Motion Link
Editor can hold up to 2,000 lines and up to END OF LINE <End>
about 24,000 bytes.
UP ONE LINE <Up> or ^E
• SHOW FREE MEMORY ^K^F - This DOWN ONE LINE <Down> or ^X
selection displays how much space is left for
LEFT ONE WORD ^<Left> or ^A
your BDS5 program. Use this command if
you are concerned that your program will fill RIGHT ONE WORD ^<Right> or ^F
up the BDS5 program memory.
LEFT ONE CHARACTER <Left> or ^S

2.4.2.4 Insert/Delete RIGHT ONE CHARACTER <Right> or ^D


• DELETE A WORD ^T - This selection
deletes the next word after the cursor.
2.4.2.6 Help
• BDS5 HELP <F1> - This selection displays
• DELETE TO END OF LINE ^Q^Y - This
several pages of help for the BDS5. It lists
selection deletes from the cursor to the end
BDS5 commands and variables with brief
of the line.
descriptions. You can also press F1 for this
help.
• DELETE A LINE ^Y - This selection
deletes the entire line that the cursor is on.
• THIS HELP SCREEN <F10> - Displays a
help screen.
• UNDELETE A LINE ^U - This selection
inserts the last deleted line in the editor,
starting at the cursor.

• INSERT A NEW LINE ^N - This selection


inserts a blank line in the editor. 2.4.3 Types Of Data Files

• DELETE ENTIRE EDITOR ^K^Y - This Motion Link stores, retrieves, displays, and edits
selection clears the entire Motion Link three types of data files. Each type has a different file
Editor. extension or file type. File extension refers to the
characters in the file name that follow the period. For
example, the file TEST.BDS has the file extension
2.4.2.5 Cursor "BDS." The three types of files are:
Table 2.1 shows the cursor control keys. Special
keys are shown between greater than and less than BDS Programs for the BDS5. Programs are also
symbols; for example, the Home key is shown as called software. Programs are transmitted to
<Home>. the BDS5 and can be run indefinitely.

VAR Variable sets for the BDS5. Variable sets are


BDS5 variables that define an application.
For example, you may have different variable
sets to change the tuning when the application
requires it. Variable files may include some
or all of the BDS5 variables. For example,

2-8
BDS5 CHAPTER 2 - GETTING STARTED

your Motion Link disk has the file • Input Test


"STANDARD.VAR." This variable file • Output Test
includes all of the "standard" or "default" • Machine Setup - Units
variable settings. Variable files are • Machine Setup - Limits
transmitted to the BDS5 to initialize variables • Motor Setup
before programs are run. • BDS5 Modes
• Communications
CAP Capture files contain captured • Other
communications from the BDS5. The capture • Send Variables
features of the BDS5 allow you to collect and • Reset Variables
store up to 16,000 bytes of transmissions
from the BDS5. Capture is provided to help This test program provides the operator with user
you debug your program. friendly methods for testing most BDS5 functions.

Any time you store your programs, variable sets, or


captured communication onto your computer disk, 2.6 PROCESSOR MODES
Motion Link will automatically determine the proper
file extension.
2.6.1 Prompts
The BDS5 provides several modes of operation.
2.4.4 Using IBM-PC Compatibles Each mode is distinguished by a unique prompt. A
prompt is the short series of characters that the BDS5
If you are using an IBM-PC Compatible, make sure it writes to the screen asking you for input. For
has been booted with the optional serial/parallel example, the interactive prompt is "-->." This prompt
adapter plugged in. Also make sure it has been is unique and tells you that the BDS5 is in the
configured to allow the operation of the serial/parallel Interactive mode.
adapter on batteries. This configuration may be
accomplished through the IBM-supplied program
SYSPROF.COM. To run this program, type
"SYSPROF"<cr>.
The BDS5 is designed to receive commands from a
terminal or a computer through a serial port. In order
to support computer communications, the BDS5
This program may also be reached through the observes the following conventions:
APP/SELECTOR DISK, but this is a remain-resident
program that will not leave enough memory to load
Motion Link after running. So a three-key computer Table 2.2. BDS5 Rules For Prompts
reboot (Ctrl, Alt, Del) must be done to remove this
program from memory before loading Motion Link. 1. Prompts are 3 characters long (except single-
Because of this, it is easier to simply run "SYSPROF" step and trace).
in order to configure the IBM CONVERTIBLE. 2. Prompts end with a greater than (“>”).
3. Each mode has a unique prompt.

2.5 MOTION LINK SETUP PROGRAM 4. Once the BDS5 displays a prompt, it stops
transmitting until a new instruction and/or a
The Motion Link Setup Program is accessed through carriage return is received.
the Utilities Menu. Setup provides the following test
capabilities: These conventions are designed to allow efficient
communications between the BDS5 and a computer.
• Communicate with the BDS5 The last rule ensures that there is never a question
• Resolver Zeroing Test about which device is transmitting. If a ">" has been
• Tune Drive issued from the BDS5, then the BDS5 will not
• Drive Test transmit anything until a carriage return or escape has
• Drive Feedback

2-9
CHAPTER 2 - GETTING STARTED BDS5

been entered. The only exception is if you program showing each mode and how it interacts with the
the BDS5 to print a ">" from a PRINT or INPUT other modes.
command. The BDS5 will allow ">" in print
statements, though this is considered a poor practice 2.6.2.1 Interactive Mode
if you are using a computer to communicate with the The BDS5 normally powers-up in the Interactive
BDS5. mode. This mode allows you to start programs,
display and change variables, and enter motion
Similarly, the BDS5 will not accept input unless a ">" commands for immediate execution. The prompt
has been issued by the BDS5. The INPUT command (-->) is written to the screen, and the BDS5 awaits a
is the only exception to this rule. This rule can be new command. Your program is not running if the
awkward if you are using the BDS5 from a terminal; BDS5 is in the Interactive mode.
if an error occurs during the interactive or monitor
modes after the ">" has been displayed, the BDS5 Refer to Figure 2.2. There are many ways to enter the
will not print the error message until a carriage return Interactive mode. First, if the power-up label
or escape has been entered. (POWER-UP$) is not present, the BDS5 will power-
up in the Interactive mode. The BREAK (B)
The prompt for each mode is listed below. The only command and errors that break program execution
exception is the Run mode. This mode does not have cause the BDS5 to exit the Run mode and enter the
a prompt since input is not accepted from the serial Interactive mode.
port. Notice that the trace prompt does not end with
the ">." This is because the trace prompt does not
indicate that the BDS5 is waiting for input. If the
BDS5 is communicating within a multidrop
communication line, then the prompt is modified to
include a prefix which indicates the axis address. The
table below shows the prompts in both the normal
(non-multidrop) and multidrop configurations. Note
that the multidrop address is 65 or ASCII A.
Table 2.3. BDS5 Prompts

Mode Non-multidrop Multidrop


(ADDR=0) (ADDR = 65)
Interactive --> A->
Monitor ==> A=>
Single-step s--> As->
Trace t... At..
Edit e-> Ae>
Load l-> Al>
Edit/Insert i-> Ai>
Edit/Find f-> Af>
Edit/Change c-> Ac>

2.6.2 Descriptions of Modes


The following section describes each of the modes of
operation. Refer Figure 2.2 which is a diagram

2-10
BDS5 CHAPTER 2 - GETTING STARTED

PROGRAMMING
MODES l-> i->
LOAD INSERT

">BDS" "I"

"<BDS" <Esc> or
PROGRAM <Esc> <CR><CR>
DUMP
<Esc>
<Esc> --> e->
INTERACTIVE "ED" EDIT

<Esc>
"DUMP"
<Esc>
SYSTEM "F" <Esc>
DUMP
"C"
f-> c->
FIND CHANGE

RUNNING POWER
MODES UP

STEP
POWER - UP POWER - UP
NOT PRESENT PRESENT
BDS5 <CR>
TASK "B", "K", "S", or "^X"
LEVELS --> S-->
"B", "K", "S", or "^X" SINGLE STEP
INTERACTIVE
ALARM A
"B" or "^X" <Esc> or
ALARM B
"SS OFF"
ALARM C "RUN" or "SS ON" "SS ON"
"RUN" <label>
VARIABLE
POWERUP
RUN <Esc>
MAIN AUTO PROGRAM
PROGRAM
MANUAL <Esc> ==>

GENERAL ERROR "TRC OFF" MONITOR


ERROR$
ERROR PRESENT "TRC ON" "TRC ON"
BACKGROUND
<Esc>
t... ( TRC = OFF
“text” = Operator Entered TRACE
“italic = Program Executed
(text) = Equivalent Command

Figure 2.2. BDS5 State Table

2-11
CHAPTER 2 - GETTING STARTED BDS5

2.6.2.2 Run Mode (==>) is displayed. Print commands typed in from


The BDS5 is normally in the Run mode when a the Monitor mode are executed immediately.
program is executing. There is no prompt because
input is not accepted from the terminal. The program To enter the Monitor mode, press the escape key
is running; it can display errors and print to the while a program is running. Pressing the escape key
terminal. again will change modes back to the Run mode.
STOP, BREAK, and KILL all return the BDS5 to the
Refer to Figure 2.2. After autobauding, the Run Interactive mode.
mode is normally entered from either the Interactive
mode, the RUN command, or from multi-tasking. If 2.6.2.4 Single-Step Mode
the power-up label (POWER-UP$) is present, the The Single-Step mode is provided for debugging, and
BDS5 will start running your program at that label on it allows you to execute a program one step at a time.
power-up. Also, the BDS5 will exit the Run mode to The single-step prompt (s->) is printed out, followed
the Monitor mode if the escape key is pressed. by the line that is about to be executed (the next
command). Any command allowed from the terminal
Errors can also cause the BDS5 to change modes. in the Monitor mode is also allowed from the terminal
Some errors are serious enough to cause the BDS5 to in the Single-Step mode. These commands allow you
break program execution. Usually, this has the to probe the BDS5 variables while debugging your
identical effect of issuing a BREAK (B) command. program. If you press the enter key without a
command entered, then the next command in the user
As an option, you can write an error handling routine program is executed. To stop the program, enter the
beginning at label ERROR$. This routine should be S, B, or K command. To turn off the Single-Step
short and should end with a BREAK (B) command. mode and allow the program to execute normally,
The error handler is intended for graceful error press the escape key twice (once to get into the
recovery. For example, you can set outputs or print a Monitor mode and again to get into the Run mode),
message. It is not intended to continue the program or type SS OFF.
as if the error never occurred.
Single-Step mode is enabled by turning SS on, either
2.6.2.3 Monitor Mode from the program, from the Interactive mode before
The BDS5 Monitor mode is a unique mode for running the program, or from the Monitor mode.
positioners. In this mode, the user program is After SS is on, the BDS5 will enter the Single-Step
running, but commands are accepted from the mode when the user program is executed. SS can
terminal for immediate execution. The Monitor mode also be turned on and off from the program. This is
allows you to display and change variables during useful if there are certain sections that you want to
program execution, including tuning variables. single step through. Turning SS off from the program
returns the BDS5 to the Run mode.
You can print any variable and change any
programmable variable from the Monitor mode. The 2.6.2.5 Trace Mode
commands that are allowed from the Monitor mode The Trace mode is provided for debugging. When in
are a subset of the commands allowed from the user trace, the BDS5 prints statements before they are
program and Interactive modes, and include the executed. The trace prompt (t...) is printed out,
following commands: followed by the line that is about to be executed, and
the line is then executed. This process is repeated for
Table 2.4. Monitor Mode Commands each command. The trace prompt is not a true
prompt in that you are not allowed to enter a
? ; B DIS EN command after the prompt is issued. This is why it
does not have the ">" that the other prompts use to
ERR K MOTOR P PS indicate that the BDS5 is waiting for a command.
R RS S ZPE
The trace is enabled by turning TRC on. When TRC
is on, the BDS5 will enter the Trace mode when the
In the Monitor mode, all print commands from the user program is executed. TRC can be turned on and
user program are suppressed, and the monitor prompt off from the Interactive mode before executing the
program or from the program itself. It can be turned

2-12
BDS5 CHAPTER 2 - GETTING STARTED

on from the Monitor mode. Pressing the escape key


from the Trace mode will exit to the Monitor mode
and turn TRC off. If TRC is turned off from the
program, the BDS5 will exit to the Run mode. If both
TRC and SS are on, then the BDS5 will be in Single-
Step mode.

2.6.2.6 Other Modes


The other modes shown in Figure 2.2 include the Edit
modes (Edit, Insert, Change, and Find) and the
communication modes (Program Load, Program
Dump, and System Dump). These modes are covered
in later chapters.

2-13
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

CHAPTER 3
PROGRAMMING LANGUAGE

3.1 INTRODUCTION The command and parameter must be separated by at


least one space.
This chapter discusses the basics of the BDS5 and its
programming language. 3.2.1 Comments
Your BDS5 system should be mounted and wired as Instructions can be followed by comments on the
described in the Installation and Setup Manual. The same line. A semicolon marks the beginning of a
AC Line voltage to your PSR4/5 should not be turned comment. The BDS5 ignores everything on the line
on for examples in this chapter. Turn on Control after the semicolon. For example:
Power only, and establish communications. If the
proper connections are not made, or the terminal is J 10 ;THIS IS A GOOD COMMENT
not communicating, then see the Installation and
Setup Manual.
is a valid instruction. The BDS5 ignores everything
that follows the semicolon. Note that a space must
AC LINE SHOULD NOT BE separate the semicolon from the last parameter:
TURNED ON!
J 10;BAD COMMENT-";" MUST BE
WARNING ;PRECEDED BY A SPACE

;GOOD LINE. SPACE NOT REQUIRED-


;WHOLE LINE IS A COMMENT
3.2 INSTRUCTIONS
The BDS5 can respond to instructions entered from
the terminal. The format of the instructions is usually
a command followed by one or more parameters. For
3.3 VARIABLES
example, the jog instruction is a "J" followed by one
parameter: the desired speed. The BDS5 uses variables to monitor and control
virtually all of its processes.

J 10

would cause the motor to jog at 10 RPM.

3-1
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

3.3.1 Variable Units Monitor variables watch the system. You may
display their values or use them in calculations.
Some variables have implicit units associated with However, as a rule, you may not change them. The
their values. For example, all variables that monitor BDS5 automatically changes these variables to reflect
or control velocity have velocity units. In addition its status. Position feedback, PFB, is an example of a
there are acceleration units, current units, and monitor variable.
position units. Appendix E lists variable with its
units. Units are programmable; when shipped from • CONTROL VARIABLES
the factory the standard settings are as follows:
Control variables allow you to change or limit some
process in the BDS5. An example of a control
Table 3.1. Standard Units variable is current limit, ILIM. ILIM limits the
Acceleration RPM / Second maximum current the BDS5 can deliver. It can be
Units: changed at any time.

Current Units: % of Full • USER VARIABLES


Amplifier
Output User variables allow you to store information for later
Position Units: Counts use or hold intermediate results of calculations. They
are discussed later in this chapter.
Velocity Units: RPM
External Position Counts*
Units: 3.3.3 Variable Limits
External RPM*
Velocity Units: All variables have limits. It is important to be aware
of these limits, since attempting to set a variable to a
* This assumes external source is a motor with the value outside its limits generates an error. For
same resolution as the BDS5. That is, external example, ILIM must be between 0 and 100. The
velocity units are set the same as velocity units. limits of each variable are listed in Appendix E.

With standard units, position is expressed in resolver-


to-digital (R/D) converter counts; if your BDS5 is
configured with the standard 12-bit resolution R/D 3.3.4 Switches
converter, then one revolution is 4096 counts.
Switches are variables that can be set to 0 or 1 only.
You can change the units to whatever is convenient In other words, they have limits 0 and 1. Aside from
for your application. For example, you can select this restriction, this discussion about variables also
Radians/Second instead of RPM. Also, units can be applies to switches.
tailored to a specific machine. For example, if the
BDS5 is driving a lead screw, velocity could be
programmed in inches/minute. If you want to change 3.3.5 Printing Variables
the units, see Chapter 4. Examples in this manual
will assume that the BDS5 is configured with All variables can be displayed. To display a variable
standard units. on the terminal, you should use P, the PRINT
command. For example, type:

3.3.2 Three Types of Variables P ILIM

The BDS5 has many variables, all of which are listed


in Appendix E. The variables can be divided into
three groups: monitor, control, and user. Since the standard setting of ILIM on most systems is
100, the terminal should display:
• MONITOR VARIABLES

3-2
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

100 ILIM should now be 10. Return ILIM to its original


value (normally 100) and type:
Suppose you want to display PFB, the position
feedback. Type: ILIM=100

P PFB Print ILIM to make sure the change was carried out
properly.
The position feedback should now be displayed.
Assuming the motor and resolver are connected to the
BDS5, rotate the motor shaft about half a revolution. 3.3.7 Programming Conditions
Now, print PFB as above and notice that it has
changed to reflect the new position. Most variables can be changed, but some can be
changed only under certain conditions. For example,
the maximum acceleration level, AMAX, can be
3.3.6 Changing a Variable changed only when the BDS5 is disabled.
Attempting to change AMAX with the BDS5 enabled
Variables are changed with assignment instructions. will generate an error. The conditions under which a
An assignment instruction begins with the name of variable can be changed are called programming
the particular variable, followed by "=" and ending conditions. Some variables should never need to be
with the new value. One or more spaces can be changed after the BDS5 has left the factory; these
substituted for the "=". The following examples variables are called "factory settable." Attempting to
assign (or at least attempt to assign) ILIM a new change a factory settable variable will generate an
value: error. The programming conditions of all variables
are listed in Appendix E.
ILIM=10 ;CORRECT--ASSIGN A NEW
;VALUE TO ILIM Limits and programming
ILIM 10 ;CORRECT--THE '=' IS conditions for all variables are
;OPTIONAL shown in Appendix E.
ILIM10 ;INCORRECT--THERE MUST NOTE
;BE A SPACE OR '='

3.3.8 Power-up and Control


A few systems are set up with Variables
ILIM less than 100. If your
terminal displays a number Most control variables and all user variables are
less than 100, write it down stored in non-volatile RAM; their values are not lost
for reference later in this when the BDS5 is powered-down. In general, control
NOTE chapter. The following variables are remembered, except the switches. Table
examples will change ILIM, 3.2 shows the condition of all BDS5 programmable
and it must be reset to its switches on power-up.
original value.

Type the following line on the terminal:

ILIM=10

Next, print the new value of ILIM with the P


instruction:

P ILIM

3-3
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

Table 3.2. Power-Up State of Programmable


ACC Acceleration rate, initially in
Switches
RPM/Sec. Initially set to 100000.
REMEMBER
FROM LAST ADDR Address for multidrop applications.
OFF ON POWER-UP Initially set to 0 for non-multidrop.

CAP CAPDIR ABAUD ADEN Acceleration units denominator.


CLAMP DIR LPF Initially set to 1000 for RPM/Sec.

DEP MULTI XS1-XS50 AMAX Limits DEC and ACC, acceleration


EXTLOOP PL and deceleration rates, initially in
RPM/Sec. Initially set to 100000.
FAULT PLIM
GATEMODE PROMPT ANUM Acceleration units numerator.
Initially set to 4474 for RPM/Sec.
GEAR TRIP
O1 - O8 BAUD Baud rate for serial communications.
Automatically set by autobaud.
PROP Normally, you do not need to set
RAMP BAUD.

REG CAP Enable position Capture mode. Set to


ROTARY 0 on power-up and normally left at
zero for preliminary operation.
SS
STATMODE CAPDIR Direction of position capture. Set to
1 on power-up. The value of this
TRC variable does not matter if CAP is 0.
TQ
CLAMP Enables Clamp mode. Set to 0 on
WATCH power-up and normally left at 0 for
preliminary operation.
ZERO
DEC Deceleration rate, initially in
RPM/Sec. Initially set to 100000.
The output word, OUT, is set to zero shortly after
power-up. DIR Sets BDS5 direction. If 1, then
positive motion is clockwise. If 0,
then positive motion is counter-
3.3.9 Initial Settings of Control and clockwise. This is set to 1 on power-
up.
User Variables
FAULT Fault is automatically set and cleared
This section briefly discusses the standard initial and
by the BDS5. You can change its
power-up settings for all control and user variables.
state during operation, though you do
The learning process is simplified by using the
not need to change it during initial
standard settings which disable certain functions.
operation.
Note that here, "initial" means "as shipped from the
factory." However, "initial" does not imply "factory
settable"; you can change values that are set initially
at the factory but you cannot change "factory
settable" variables.
GATEMODE Enable Gate mode. Set to 0 on
ABAUD Enable autobauding. Initially set to 1
power-up and normally left at zero for
and left at 1 for preliminary
preliminary operation.
operation.

3-4
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

GEAR Enable electronic gearbox. Set to 0 with your system. Use TUNE
on power-up and normally left at 0 for command to change if necessary.
preliminary operation.
KV Tuning gain #1 for integrating
GEARI Number of teeth on the input "gear" velocity loop. Leave at initial setting
for electronic gearbox. Initially set to for preliminary operation. The initial
1. Value of this variable does not value is listed on the Test and Limits
matter if GEAR is 0. (TL) sheet, which should be enclosed
with your system. Use TUNE
GEARO Number of teeth on the output "gear" command to change if necessary.
for electronic gearbox. Initially set to
3. Value of this variable does not KVI Tuning gain #2 for integrating
matter if GEAR is 0. velocity loop. Leave at initial setting
for preliminary operation. The initial
IDEN Current units denominator. Initially value is listed on the Test and Limits
set to 100 for percent. (TL) sheet, which should be enclosed
with your system. Use TUNE
ILIM Peak current limit. The initial value command to change if necessary.
is listed on the Test and Limits (TL)
sheet which should be enclosed with LPF Enables low pass filter. The low pass
your system. Normally set to IMAX. filter is often required to reduce noise
However, you may want to reduce it or torsional resonance. Leave at
for protection. The motor can initial setting for preliminary
normally run under no-load with 15- operation. Set to 1 if system is too
25% current, so you can set ILIM as noisy. The initial value is listed on
low as 15 or 25 during preliminary the Test and Limits (TL) sheet, which
operation. should be enclosed with your system.

INUM Current units numerator. Initially set LPFHZ Low pass filter break frequency. The
to 4095 for percent. low pass filter is often required to
reduce noise or torsional resonance.
KC Low speed "graininess" Leave at initial setting for preliminary
compensation. Almost always set to operation. Reduce value if system is
200. See discussion in the too noisy. The initial value is listed
Installation and Setup Manual where on the Test and Limits (TL) sheet,
a procedure for fine-tuning this which should be enclosed with your
variable is given. system.

KF Tuning gain for velocity feed- MULTI Enable multi-tasking.


forward. Set to 0 for preliminary
operation. O1-8 General purpose outputs. Reset to 0
on power-up. These variables are
KP Tuning gain for position loop. Leave discussed later in this chapter.
at initial setting for preliminary
operation. The initial value is listed PDEN Position units denominator. Initially
on the Test and Limits (TL) sheet, set to 1.
which should be enclosed with your PECLAMP Position error limit for clamping.
system. Use TUNE command to Initially set to 100. Value of this
change if necessary. variable does not matter if CLAMP is
KPROP Tuning gain for proportional velocity 0 during preliminary operation.
loop. Leave at initial setting for
preliminary operation. The initial PEMAX Position error limit for system. This
value is listed on the Test and Limits variable is initially set to 32767 (its
(TL) sheet, which should be enclosed upper limit) for preliminary operation
and can be reduced later.

3-5
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

REGKHZ Profile regulation frequency. Initially


PEXT PEXT monitors the position of the set to 1000. Value of this variable
external (master) axis. Initially this does not matter if REG is 0.
variable is undefined. Value of this
variable does not matter during initial SCRV Set S-curve level. Initially set to 2.
operation.
SS Enable Single-Step mode. Set to 0 on
PL Enable position loop. This variable is power-up and normally left at 0 for
set to 1 on power-up and left at 1 for preliminary operation.
preliminary operation.
STATMODE Set mode of STATUS output. Set to
PLIM Enable software travel limits. This 0 on power-up and normally left at 0
variable is set to 1 on power-up. This for preliminary operation.
variable is normally set to 0 during
preliminary operation. TMR1 Software timer. Set to 0 on power-up.
Value of this variable does not matter
PMAX Positive software travel limit. during preliminary operation.
Initially set to 100. If PLIM is 0, the
value of this variable does not matter. TMR2 Software timer. Set to 0 on power-up.
Value of this variable does not matter
PMIN Negative software travel limit. during preliminary operation.
Initially set to -100. If PLIM is 0, the
value of this variable does not matter. TMR3 Software timer. Set to 0 on power-up.
Value of this variable does not matter
PROMPT Set to 1 on power-up and almost during preliminary operation.
always left at 1. When set to 0, all
prompts (such as "-->") which are TMR4 Software timer. Set to 0 on power-up.
normally sent to the screen are not Value of this variable does not matter
printed. This allows you to print during preliminary operation.
customized messages.
TRC Enable Trace mode for debugging.
PNUM Position units numerator. Initially set Set to 0 on power-up and normally
to 1. left at 0 for preliminary operation.

PROP Enable proportional velocity loop. TRIP Enable position trip points.
This variable is set to 0 on power-up
and usually left at 0 for preliminary TQ Enable torque loop, which disables
operation. velocity loop. This variable is set to
0 on power-up and left at 0 for
PXDEN External position units denominator. preliminary operation.
Initially set to 1. Value of this
variable does not matter during initial
operation.

PXNUM External position units numerator.


Initially set to 1. Value of this VDEN Velocity units denominator. Initially
variable does not matter during initial set to 10 for RPM.
operation.
VDEFAULT Default velocity for MI and MA
REG Enable Profile Regulation mode. Set commands. Initially set to 1 RPM.
to 0 on power-up and normally left at
zero for preliminary operation. VNUM Velocity units numerator. Initially set
to 44739 for RPM.

3-6
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

VOFF Offset velocity for electronic gearbox. numbers that range from -231 (-2,147,473,648) to
Reset to 0 whenever GEAR is turned 231 -1 (2,147,473,647). For example, if you want to
on. This variable should be left at 0 store PFB, the position feedback, at a particular time
for preliminary operation. and use it later in a calculation, you can assign PFB to
a user variable. Type the following line on the
VOSPD Overspeed setting. Initially set to terminal:
VMAX_1.2. This variable should be
left at this value for preliminary X1=PFB
operation, but it can be reduced for
protection.
Now, without moving the motor, print X1 and PFB
by typing:
VXDEN External velocity units denominator.
Initially set to VDEN. Value of this
variable does not matter during P X1 PFB
preliminary operation.
This print statement prints both X1 and PFB on one
VXNUM External velocity units numerator. line and should show them to have approximately the
Initially set to VNUM. Value of this same value. Note that when the motor is disabled, the
variable does not matter during position feedback can change slightly, so there may
preliminary operation. be a small difference in the values. Turn the motor
about one-half of a revolution and repeat the print
WATCH Enable the serial watchdog timer. statement from above. Notice that X1 has
This function disables the BDS5 if a remembered the old position feedback while PFB has
command is not received from the changed. X1 will not change unless you assign it a
serial port every WTIME new value.
milliseconds. Set to 0 on power-up.
WTIME See WATCH above. Initially set to
3.3.10.1 Indirect User Variables
1000.
An advanced method of accessing the values stored in
user variables is called indirect. With indirect user
X1..X250 User variables. Initially set to 0.
variables, the specified user variable "points" at
another user variable. Indirect references to variables
XS1..XS50 User switches. Initially set to 0.
have the format: X(Xn) where n is between 1 and
250. The value stored in the variable Xn specifies the
ZERO Puts the BDS5 in Resolver Zeroing
variable that X(Xn) refers to. This is best illustrated
mode. This is set to 0 on power-up.
with an example.
Zeroing mode is used only during
installation. If 1, BDS5 rotates the
Suppose you want to look at either X1 or X2 when
motor to the zero position. If 0, the
X10 is either 1 or 2. Type this example:
BDS5 controls the motor normally.

3.3.10 User Variables


X1=100
User variables are like memory on a hand-held
X2=1000
calculator. They can be used as application-specific
X10=1 ;USE X10 TO POINT
variables or for storing intermediate results of
TO X1
complex calculations. There are 250 user variables:
P X(X10) ;PRINT WHAT X10 POINTS
X1, X2, . . . X250. ( Extended to 750 with Varaable
;AT
EXTDX=1. PC Scope is not available with
EXTDX=1 ). They can be displayed and assigned
new values like other variables. They can store The BDS5 responds:

3-7
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

100 OFF, Y, and N. ON is the same as 1 and OFF is the


same as 0. Similarly, Y is 1 and N is 0. These
since X(X10) = X1 = 100. constants are normally used for switches. Compare
the two statements:
Now type:
O1=1
X10=2 ;USE X10 TO POINT O1 ON
TO X2
P X(X10) ;PRINT WHAT X10 POINTS Although both statements have the same effect, the
;AT second is easier to read (that is, more intuitive).
When you write programs, the use of ON and OFF,
The BDS5 responds: and Y and N can make the program easier to
understand. Note, however, that the P command
normally prints numbers, not ON, OFF, Y, or N. For
1000
example:
since X(X10) is now X2, which equals 1000. So
printing X10 indirect, X(X10), prints the user O1=ON
variable to which X10 points, not X10 itself. P OUT

Indirect user variables are often used to look up data will result in "1" being printed, not "ON." Another
in tables. For example, they are often used in teach point to recognize is that the equal sign ("=") is
programs--programs that remember a large number of optional. The two statements
positions taught by the operator. In this case, many
user variables are used to remember positions, and O1=ON
one variable is used to point at the group. Use O1 ON
indirect references with caution since it is easy to
make mistakes with them.
produce identical results. The program can be more
readable if the "=" is not used with Y, N, ON, and
OFF.
3.3.11 User Switches
User switches are similar to user variables, except 3.4 MATH
that they can only take on values of 0 or 1. A user
switch can be used in place of a user variable if you
only need to store 0 or 1. An example of a good 3.4.1 Hexadecimal
place for a user switch would be to store information
for go/no-go decisions. This saves user variables for The BDS5 allows constants to be entered in
other places. hexadecimal, or hex. Hex is base 16 representation

There are 50 user switches ranging from XS1 to


XS50. For example, type: which is often used when programming computers.
BDS5 hex constants begin with a number and are
XS33=1 followed by an "h." For example: 16h, 0Fh and
P XS33 0FFh are all hex numbers. Appendix H shows the
hex conversion of 0 through 255. From the appendix,
and the BDS5 should respond by printing 1. you can see that hex 25 is equal to decimal 37. The
two instructions:

3.3.12 Special Constants X9=37


X9=25H
The examples above have used decimal numbers in
most of the assignments. There are four special have identical effects because 25 hex equals 37
constants that make the BDS5 easier to use: ON, decimal. Sometimes, the first digit of a hex number

3-8
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

can be a letter. In this case, the number must be X1=5000/10


preceded with a zero. For example: X1=(7+3)*(28+22)

X9=FFH ;ERROR-HEX NUMBER All set X1 to 500. Furthermore, variables can be


;MUST BEGIN WITH A used in the expression:
;NUMBER
X9=0FFH ;VALID STATEMENT X1=20
X2=30
Hex is useful when trying to use general purpose X3=X1*X2
inputs to control the user program. See later in this
chapter for more information about applying these fills X3 with 600.
inputs.
All operations are done with integer math. Fractional
results from division are rounded to the nearest
3.4.2 Algebraic Functions integer. Also, expressions are evaluated from left to
right. These two conditions can cause unexpected
results. Consider the following expressions:
The BDS5 provides four standard algebraic
functions: multiplication, division, addition, and
subtraction. The usual algebraic operators (*, /, +, -) P 53/100*280 ;THIS PRINTS 280
are used. Standard algebraic hierarchy is observed: P 280/100*53 ;THIS PRINTS 159
all multiplications and divisions are done before any P 280*53/100 ;THIS PRINTS 148
additions or subtractions. Parentheses are provided to
override this precedence. Type in the following Mathematically, these three expressions are
examples: equivalent; they calculate 53% of 280, which is
exactly 148.4. However, with integer math, the first
P 1+2*3 ;THIS PRINTS 7, NOT 9--* IS expression is evaluated as 280. This is because
;DONE BEFORE + 53/100 is evaluated first. The result, 0.53, is rounded
P (1+2)*3 ;THIS PRINTS 9 to the nearest integer, 1, which is multiplied by 280.
Likewise, in the second expression, the 280/100 is
evaluated as 3, which is multiplied by 53 to get the
Math expressions must obey the rules listed in Table
result 159. Only the third expression gives the
3.3.
expected result, 148. In this example, round-off error
Table 3.3. Rules for Math Expressions is minimized by performing the multiplication first.
1. No spaces are allowed.
2. Any valid variables can be used. 3.4.3 Logical Functions: AND, OR
3. Any valid constants can be used.
Two logical math functions, AND and OR, can also
4. Indirect user variables can be used. be used in math expressions. ANDing is indicated by
5. Any math operator can be used. "&" operator and ORing is indicated by "!" operator.
When evaluating an expression, AND has the same
6. Parentheses can be nested to 2 levels. level of precedence as multiplication, and OR has the
7. Integer math is used for all operations. same level as addition.

8. Expressions are evaluated left to right. Like hex, logical math is often used when
programming computers. With logical functions, two
Valid math expressions can be substituted for numbers are converted to binary representation and
numbers in most instructions. A few examples of compared bit by bit. When the numbers are ORed, if
math expressions in assignment instructions follow: either bit is set, the result bit is set. With ANDing,
both bits must be set for the result to be set. Type in
X1=500 the following examples:
X1=5*100
P 1!2 ;THIS IS 3

3-9
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

The BDS5 responds: 3,

since 3.5.1 Whole Word I/O


00000001 (Binary 1)
OR 00000010 (Binary 2)
Inputs and outputs can also be referred to
collectively. In order to do this, the individual inputs
00000011 (Binary 3)
or outputs are referenced as the bits of a digital word,
hence the term Whole Word I/O. Whole Word
P 1&2 ;THIS IS 0 references are especially useful when you are trying
to set or clear many output bits at once. If you are
The BDS5 responds: 0, unfamiliar with logical/binary math or you plan to use
I/O one bit at a time, you may not be interested in
since Whole Word I/O. However, it can save space and
00000001 (Binary 1) execution time when properly used.
AND 00000010 (Binary 2)
Whole Word I/O is done using the variables OUT
00000000 (Binary 0) and IN. OUT is an 8-bit digital word representing all
Logical math is generally used with hex constants. of the outputs, with O1 as the least significant bit
(LSB), and IN is a 16-bit digital word representing all
Logical math is also useful when trying to use general of the inputs, with I1 as the LSB. Each bit has a
purpose inputs to control the user program. value which depends on its position within the word.
The value in OUT or IN is the sum of the values for
each bit that is turned on. The value for each bit is
listed in Table 3.4.

Table 3.4. Output 1-8 Decimal Values


3.5 GENERAL PURPOSE INPUT/
OUTPUT Out Bits O8 O7 O6 O5 04 03 02 01
Value 128 64 32 16 8 4 2 1
The BDS5 provides 16 general purpose inputs and 8
general purpose outputs. On power-up, all outputs
For example, if O8 and O4 are on and all other
are turned off. Inputs and outputs can both be
outputs are off, then:
referred to individually or collectively: I1, I2, . . . I16
represent the individual inputs, and O1, O2, . . . O8
OUT = 128 (value of O8) + 8 (value of O4)
represent the outputs. You can turn the third output
= 136.
on and the sixth off by typing:
Many bits can be set or cleared with one instruction.
O3 ON ;TURN ON THE THIRD For example,
;OUTPUT BIT
O6 OFF ;TURN OFF THE SIXTH
OUT=7
;OUTPUT BIT

turns on O1, O2, and O3 while turning all other


To display the fifth input, type:
outputs off. One logical math statement can be used
to set some bits without affecting others. For
P I5 example:

and either 1 or 0 will be displayed. O1 ON


O2 ON
O3 ON

can be replaced with:

3-10
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

OUT=OUT!7 ;SET 3 BITS WITH LOGICAL of which is labeled with an encircled number, 1-6.
;OR Note that this drawing is a functional diagram; it does
not directly represent the actual hardware and
software used to implement these functions.
which turns on O1, O2, and O3 without affecting O4 -
O8. The logical AND can be used to turn off several
Your BDS5 system should be mounted and wired as
bits:
described in the Installation and Setup Manual. The
AC Line to your PSR4/5 should not be turned on
OUT=OUT&7 ;CLEAR 5 BITS WITH initially for examples in this chapter. If the proper
;LOGICAL AND connections are not made, or the terminal is not
communicating, then see the Installation and Setup
turns off O4-O8 and does not affect O1-O3. Manual.
Note that the hex representation can be especially
useful when setting the higher bits:
AC LINE SHOULD NOT BE
TURNED ON.
O4 ON
O7 ON WARNING
O8 ON

is the same as:

OUT=OUT!0C8H

IN is formed with I1-16 in the same way OUT is


formed with O1-8:
Table 3.5. Input 1-16 Decimal Values
In Bits I16 I15 I14 I13
Value 32768 16384 8192 4096

In Bits I12 I11 I10 I9


Value 2048 1024 512 256

In Bits I8 I7 I6 I5
Value 128 64 32 16

In Bits I4 I3 I2 I1
Value 8 4 2 1

For example, if IN were equal to 5010, that would


mean I2, I5, I8, I9, I10 and I13 were on and all others
were off, because 5010 is the sum of those bits:

5010 = 2 + 16 + 128 + 256 + 512 + 4096

3.6 FAULT LOGIC


This section covers how to enable the BDS5 and how
faults affect the operation. This discussion will center
around Figure 3.1. This drawing has six areas, each

3-11
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

HARDWARE FAULTS

OVER TEMPERATURE
BUS VOLTAGE MICROPROCESSOR
+/-12 VOLT SUPPLY
OVER CURRENT
FEEDBACK LOSS
HARDWARE WATCHDOG
COMPENSATION BOARD

SOFTWARE FAULTS 2

FOLLOWING ERROR
OVERTRAVEL
GEARBOX OVERFLOW
INTERNAL ERRORS
MOTOR PARAMETERS OUT
OF RANGE

FIRMWARE FAULTS
UP FAIL
ROM CHECKSUM BLINK
TURN OFF " CPU "
SET COMMUNICATION LED
SOFTWARE WDOG
5 VOLT SUPPLY 1
LATCH

POWER UP RESET

" FAULT "


SOFTWARE SWITCH " FAULT "
SET LED
LATCH " ACTIVE "
3
SOFTWARE ACTIVATE
RESET " READY " SWITCH
" EN " DRIVE
SOFTWARE
COMMAND SWITCH
SET " ACTIVE "
LED
LATCH 5
" DIS "
RESET " SYS OK "
COMMAND
LED
"K" 4
COMMAND HARDWARE HALT MICROPROCESSOR
WATCHDOG
C2-PIN 17
RELAY
C2-PIN 16
" REMOTE " INPUT
" STATUS "
" RELAY "
SOFTWARE LED
C2-PIN 9
OPTICAL SWITCH
C2-PIN 6 ISOLATION
STATUS OUTPUT (OPTIONAL)
6 C8-PIN 35

" STATMODE "


SOFTWARE SWITCH

Figure 3.1. BDS5 Enable/Fault Logic Diagram

3-12
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

3.6.1 Firmware Faults, Area 1


Area 1 shows how firmware faults are combined. 3.6.4 Ready Latch, Area 4
Firmware faults are the most serious errors. They
include checksums (to help verify computer memory), Area 4 shows the logic required to make the drive
watchdogs (to help verify that the computer is ready. If there are no faults, the EN command sets
running properly), and the 5-volt logic power supply the ready latch. This turns the READY software
monitor. switch on. This latch is reset with the KILL (K)
command, the DISABLE (DIS) command, or a fault.
These circuits are designed to watch the basic These turn READY off.
operation of the microprocessor. They do not
generate error messages because the detected fault
affects the microprocessor directly. Instead, they just
blink the Central Processing Unit (CPU) LED. 3.6.5 ACTIVE, Area 5

As shown in Figure 3.1, firmware faults set a latch to Area 5 shows that ACTIVE will be on if both
turn off communications and blink the CPU LED. READY and REMOTE are on. This turns on the
The CPU LED blinks in cycles consisting of 2 to 8 ACTIVE LED. It also allows the BDS5 to actively
blinks and a pause. The number of blinks control the motor.
corresponds to the error number, which you can look
up in Appendix D. The only way to reset these faults REMOTE (Remote Enable) is an isolated input that is
is to power-down the BDS5. These faults are serious accessed from Connector C2 on the front of the drive.
and you should consult the factory if they occur. Do You can print REMOTE with the P command. It
not confuse these faults with autobauding on power- must be 1 to activate the BDS5. If you cannot turn
up. When autobauding, the CPU LED blinks at a REMOTE on, see the Installation and Setup Manual.
constant rate, about three times per second. Note that some faults "hide" the value of the
REMOTE input from the BDS5 microprocessor.
This does not normally matter because all faults must
be cleared before the drive will enable. If this
3.6.2 Fault Logic, Area 2 condition exists, the BDS5 will print REMOTE as "-
1."
The large OR gate in Area 2 combines three types of
faults: hardware, software, and firmware. The
circuits that generate these faults are typical of motor
controllers and are listed on the drawing. These 3.6.6 Relay and STATUS Control,
faults are errors that are serious enough to disable the Area 6
BDS5, as described in Appendix D.
Area 6 shows how software switch STATUS and the
relay work. You can configure STATUS to indicate
either drive READY (but not necessarily ACTIVE)
3.6.3 Fault Latch, Area 3 or drive ACTIVE. The difference is in how you want
to use STATUS. STATUS can be used for an
The latch in Area 3 turns on the FAULT LED, the
interlock. In this case, you want STATUS to indicate
FAULT software switch, and the FAULT output on
drive ACTIVE. If the BDS5 becomes inactive for
Connector C8. Any fault sets this latch; you can also
any reason (including the REMOTE input turning
write your program to turn it on if you detect a fault
off), then STATUS will turn off. As an alternative,
condition. The fault latch can be reset by:
you can use STATUS to indicate that the BDS5 is
ready for the REMOTE input to turn on. That is, if
1. Turning FAULT off,
REMOTE turns on, the BDS5 will be ACTIVE. In
2. Typing the enable command (EN), or
this case, you want STATUS to indicate drive
3. Powering down the BDS5.
READY.

The software switch STATMODE controls which


state STATUS will indicate. If STATMODE is on,
then STATUS will indicate drive READY. If

3-13
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

STATMODE is off, then STATUS will indicate drive should remove the BDS5 from operation and contact
ACTIVE. the factory.

The operation of STATUS is shown by the AND-gate


and OR-gate in Area 6. If STATMODE is on, then 3.7 DRIVE CONTROL
READY will turn on STATUS through the AND-
gate. If STATMODE is off, then only ACTIVE
This section discusses several variables that you must
(from Area 5) will turn on STATUS through the other
be familiar with before you can control the BDS5.
leg of the OR-gate. The STATUS output on optional
Connector C8, Pin 35, is always the same as the
STATUS software switch. Note, however, that the
state of the STATUS output is undefined for 25 3.7.1 Direction Control, DIR
milliseconds after power-up.
DIR is a switch that controls the algebraic sign of
command and feedback variables. When DIR is on,
STATUS may turn on for up to clockwise position, velocity, and torque are all
25 milliseconds during power- positive. If DIR is off, then clockwise position,
up. velocity, and torque are negative. DIR is turned on at
WARNING
power-up.

3.6.7 Motor Brake 3.7.2 Position


Industrial Drives motors can be purchased with an
optional brake. The brake is fail-safe in that if no 3.7.2.1 Position Command and
current is applied, the brake is active. If you set Feedback, PCMD & PFB
STATMODE to 0, you can use STATUS to control PCMD is the commanded position. It is generated
the brake. Then, when the BDS5 is disabled or internally from motion commands like the JOG
powered down, the brake will be active. command. PCMD is in position units. The standard
position units are R/D converter counts as specified in
Table 3.6. PCMD is set to PFB when the BDS5 is
disabled.
3.6.8 Output Relay
PFB, the position feedback, is the actual position of
The relay (Connector C2, Pins 16 and 17) represents the motor. It is updated every millisecond. PFB is in
the state of the hardware watchdog. The hardware position units. Section 3.3.5 explained how to look at
watchdog makes a system more reliable because the PFB and watch it as the motor turns. PFB is always
watchdog is independent of the microprocessor. If active, even when the BDS5 is disabled. PFB is reset
the processor is not working, the watchdog will to zero when the BDS5 is powered-up.
usually detect it (though this is not guaranteed).

On power-up, the contacts are open until the BDS5 3.7.2.2 Position Error, PE & PEMAX
passes its power-up self tests. Then the contacts close PE is position error, sometimes referred to as
and the BDS5 begins normal operation. Note that if following error. It is the difference between PCMD
the BDS5 is set to autobaud on power-up, the and PFB. PE is zero when the BDS5 is disabled. PE
contacts will not close until after autobauding and is in position units.
establishing communications.
When the magnitude of the position error exceeds the
One way to use the relay is to interconnect it with the value stored in PEMAX, a Position Error Overflow
main power contactor. In this case, a hardware error is generated. This is a serious error,
watchdog fault will disconnect all power to the disabling the BDS5 immediately. Note that setting
system. PEMAX to some value will not limit the position
The SYS OK LED indicates that there is not a error. The position error depends on the control loop
hardware watchdog fault. If this LED goes out, you parameters and the application. Normally, you want
to set PEMAX to as low a level as will allow the

3-14
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

system to run reliably. Setting PEMAX too low can This command would print the expected results. This
generate nuisance errors since the position error has is because the BDS5 stores PCMD and PFB at the
some variation during motion. PEMAX is in position beginning of every command, then uses those stored
units. values when the command is executed. On the other
hand, if you type:
Position error is limited to protect the system.
Excessive position error can indicate a fault P PCMD "-" PRD " = " PCMD-PRD
condition. For instance, bearings wear out over the
life of a motor. The increased load from worn
the results may not be as expected. This is because
bearings can increase the position error during
PRD is not stored at the beginning of the command.
motion. In many cases position error is the first
If the motor is turning, the two references to PRD will
indication of wear.
produce different results. This command takes up to
6 milliseconds to execute, and PRD can change
3.7.2.3 R/D Position, PRD several times while this command is executing.
PRD is the output of the resolver-to-digital (R/D)
converter in counts. PRD is not in position units. If
your system has the standard 12-bit R/D converter,
then 4096 counts will equal one revolution. The
3.7.3 Velocity
following table shows the R/D ranges versus
resolution: 3.7.3.1 VCMD, VFB, VE, & VAVG
VCMD is the commanded velocity. Like PCMD,
Table 3.6. PRD: Ranges and R/D VCMD is generated internally from motion
Resolutions commands. VCMD is zero when the BDS5 is
R/D Resolution PRD Min PRD Max disabled. VCMD is in velocity units.

12-Bit 0 4095 VFB is the feedback velocity. It is updated every


millisecond. VFB is always active, even when the
14-Bit 0 46383
BDS5 is disabled; if you turn the motor shaft by hand
16-Bit 0 65535 and print VFB on the terminal, you can see the
velocity changing. Because VFB is updated very
rapidly, the speed can appear to vary, even when the
The BDS5 should be disabled at this point (use the
motor is rotating at a fairly constant speed. This is
K or DIS command if it is enabled). PRD can be
because the VFB shows the speed averaged over only
printed on the screen. From the terminal, type:
1 millisecond. The speed from one millisecond to the
next normally varies a few RPM. The long term
P PRD speed (that is, measured over a few seconds) normally
varies much less (about 0.01%). VFB is in velocity
and the R/D output will be displayed on the screen. units.
Move the motor shaft by hand to several positions,
printing PRD each time. Notice that PRD changes VE is velocity error. VE is the difference between
for each position. VCMD and VFB in velocity units.

3.7.2.4 Sampling PFB, PCMD and VAVG is the average of VFB over the previous
16 milliseconds. Occasionally, the normal sample-to-
PEXT sample variation of VFB is undesirable. In these
When PFB and PCMD are used on the same line, cases, use VAVG.
they are always sampled during the same sampling
interval (millisecond). This allows you to use 3.7.3.2 Velocity Limits, VMAX &
PCMD, PFB, and a third variable called PEXT, VOSPD
which is discussed later in this chapter, without VMAX is the BDS5 maximum velocity. It depends
concern that the variables might be sampled at on the motor and the resolution of the R/D converter.
different times. For example: For standard systems with 12-bit R/D converters,
VMAX is less than or equal to 7500 RPM. For 14-bit
systems, VMAX is limited to 3000 RPM; 16-bit
P PCMD "-" PFB " = " PCMD-PFB

3-15
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

systems are limited to 750 RPM. VMAX is set at the


factory. VMAX is in velocity units.
3.7.6 Controlling the Velocity Loop
VOSPD is the maximum velocity for your system.
The BDS5 generates an overspeed fault if VFB is with PROP
ever greater than VOSPD. You can set VOSPD to
any level below 1.2_VMAX. This allows you to limit PROP is a switch that controls the integration section
the speed of your system to any level below VMAX. of the velocity loop. If PROP is on, then the velocity
When an overspeed occurs, the BDS5 is disabled loop is proportional and the integral is disabled. If
immediately. PROP is off, then the velocity loop is fully
integrating. PROP is turned off at power-up. You
You should set VOSPD to at least 10% or 15% above can change PROP at any time. Most applications run
your system's maximum speed to avoid nuisance with PROP off. Sometimes proportional velocity
overspeed faults. You can change VOSPD only when loops are used during set-up. See later in this chapter
the BDS5 is disabled. VOSPD is in velocity units. for more information.

3.7.4 Current 3.7.7 Enabling the BDS5

3.7.4.1 Motor Current, ICMD & IMON THE BDS5 WILL BE ENABLED
ICMD is commanded motor current. ICMD, like AND THE MOTOR WILL
PCMD and VCMD, is generated internally from TURN. SECURE THE MOTOR.
motion commands. ICMD is in current units. WARNING
IMON is the output of the current monitor circuit, and
it represents the magnitude of the motor current. At this point you should turn REMOTE on as
IMON is always positive, and it is in current units. described in the Installation and Setup Manual.
IMON is the digital conversion of the analog signal Type the following command to print the state of the
I_Monitor on Connector C2. REMOTE input:

3.7.4.2 Current Limits, IMAX & ILIM P REMOTE ;REMOTE SHOULD BE 1


IMAX is the maximum level of current that the BDS5
can output. It is set at the factory; its value depends
on both the BDS5 rating and on the motor. IMAX is SHOCK HAZARD!
in current units.
ILIM limits the peak of ICMD, the commanded Large voltages from the AC
current. You can set ILIM to any level below IMAX. Line and the DC Bus can
This allows you to limit the current below the cause injury. Ensure that the
WARNING
maximum level that the BDS5 can output. You can wiring is correct. See the
set ILIM at any time, even during profile moves. Installation and Setup Manual.
ILIM is in current units.
3.7.5 Enabling the Position Loop
with PL
PL is a switch that controls the position loop. If PL is
on, then the position loop is enabled. If PL is off,
then it is disabled, and the BDS5 is running as a
velocity loop. Most positioning applications run with
PL on. See later in this chapter for more information
about the position loops. PL turns on at power-up.
You can change PL at any time.

3-16
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

3.7.8 Limiting Motor Current


THE MOTOR MAY MOVE
UNEXPECTEDLY!
The following section discusses how the BDS5 limits
motor current.
BE PREPARED TO DISABLE
THE BDS5!
3.7.8.1 Continuous Current, ICONT
You should have completed The BDS5 limits current in two ways: peak current is
"Initial Check-Out" in the limited according to the variable ILIM, which was
Installation and Setup Manual. discussed earlier in this chapter; continuous (that is,
If not, return to the Installation average) current is limited according to the variable
and Setup Manual and ICONT. The software that limits the time that motor
WARNING
complete that section. current is allowed to be above ICONT is called
foldback, since the current is gradually folded back to
This section will enable the ICONT. ICONT is dependent on the BDS5 rating
BDS5. The system may be and on the motor; ICONT is set at the factory, and it
unstable. The motor may is in current units.
begin oscillating or run away.
Be prepared to disable the Most BDS5 systems have about 2:1 peak to
BDS5 quickly. You can continuous rating. Generally, ILIM is 100% of the
disable the BDS5 by turning maximum current and ICONT is about 50%. The
off (opening the contacts of) purpose of the foldback software is to allow the
LIMIT or REMOTE. output current to go above ICONT for a short time
(generally 2-3 seconds) while still protecting the
BDS5 from overheating.
To enable the BDS5, turn on the AC Line and enter
the enable command: 3.7.8.2 Foldback Current, IFOLD
There are two current limits: ILIM and IFOLD.
EN ICMD (the commanded current) is limited by either
ILIM or IFOLD, whichever is less. You can set ILIM
The BDS5 should turn on. To verify that it did turn but you cannot set IFOLD; IFOLD is controlled by
on, print ACTIVE. If ACTIVE is 1, then the BDS5 is the foldback software. IFOLD depends on three
enabled; otherwise, it is disabled. things: ICONT (the continuous current rating of the
BDS5), IMON (the current monitor), and time.
To disable the BDS5, enter the disable command:
When the BDS5 is disabled, IFOLD is set to some
DIS value well above maximum current (IMAX), and
thus, well above ILIM. Since current is limited by the
lesser of ILIM and IFOLD, IFOLD has no effect
As an alternative, you can disable the BDS5 with the under this condition. If IMON, the output current,
one-letter kill command by typing: stays below ICONT, then IFOLD remains at its
original, high value. If IMON is greater than ICONT,
K IFOLD gradually decreases. The greater IMON is,
the faster IFOLD decreases. Since IFOLD starts out
ENABLE, DISABLE, and KILL are examples of well above ILIM, initially this has no effect.
BDS5 commands. All of the BDS5 commands are However, when IFOLD is less than ILIM, IFOLD
listed, with their formats and syntax, in Appendix C. will limit the current. This is called "being in
foldback." If IMON remains (on average) above
ICONT long enough, IFOLD will decrease all the
Appendix C is a quick way to ICONT, forcing IMON eventually to become
reference for all BDS5 less than or equal to ICONT. Typically, it takes at
commands. least 2 to 3 seconds for IFOLD to decrease from its
NOTE
original high value to IMAX. At this point, the BDS5
is in foldback. It takes an additional 10 seconds to
reduce IFOLD from IMAX to ICONT.

3-17
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

3.8.1 Basic Motion Commands


If IMON is reduced below ICONT, then IFOLD will
increase; the smaller IMON is, the faster IFOLD will 3.8.1.1 AMAX, ACC, & DEC
increase. If IMON remains below ICONT long
The BDS5 controls acceleration with three variables:
enough, IFOLD will return to its original high value.
AMAX, ACC, and DEC.

3.7.8.3 Monitoring Current Limits AMAX is the maximum acceleration allowed for
There are two switches that provide information on almost all motion commands. The only exception is
current limiting. SAT is a switch that is on if the electronic gearbox. AMAX is the upper limit for the
current is limited by either ILIM or IFOLD. FOLD is normal acceleration rates, ACC and DEC. AMAX
a switch that is on if the current is limited by IFOLD should always be set below the acceleration level that
only. can damage your machine. Errors which stop motion
will decelerate the motor at AMAX; therefore, your
The operation of the foldback software is as follows: machine is subject to deceleration rates of AMAX at
any time. AMAX is in acceleration units, which are
If... IMON > ICONT then... IFOLD decreases RPM/second as a default. AMAX can be changed
If... IMON < ICONT then... IFOLD increases only when the BDS5 is disabled.

If... IFOLD < ILIM then... FOLD is on


Set AMAX below the
If... IFOLD > ILIM then... FOLD is off
maximum acceleration rate
that your machine can
If... ICMD = ILIM or IFOLD then... SAT is on WARNING experience without damage.
If... ICMD < ILIM and IFOLD then... SAT is off

ICMD is never > ILIM ACC is the acceleration rate for most moves. ACC is
ICMD is never > IFOLD in acceleration units. ACC can be changed at any
time, although it must be less than AMAX.
In some cases, it may be desirable to know when Attempting to set ACC to a value greater than AMAX
foldback is just about to limit current below ILIM. will generate an error.
You can use IFOLD for this; if IFOLD is less than
ILIM, the foldback software is limiting current. If DEC is the deceleration rate for most moves. DEC is
IFOLD is larger than ILIM, but only by 5% or 10%, also in acceleration units. DEC can be changed at
then foldback software is about to limit current. any time. Attempting to set DEC to a value greater
than AMAX will generate an error.

3.8 MOTION COMMANDS 3.8.1.2 EN, STOP, & LIMITS


Before any motion can take place, the BDS5 must be
This section discusses how to control motion using enabled. Type:
the BDS5. Basic motion commands are described
first. Later sections discuss advanced motion control EN
including BDS5 Macro Moves, electronic gearbox,
and synchronizing motion.

3-18
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

3.8.1.3 Enabling Motion with MOTION The J 0 command also stops motion from any mode,
MOTION is a hardware input that enables or inhibits much like the STOP command. Unlike S, J 0
motion. If MOTION is on, motion is enabled; if decelerates at the rate specified by DEC.
MOTION is off, motion is inhibited. You can enable
the BDS5 if MOTION is off, but commanding motion The S command should not
will generate an error. If you do not need to connect be used as a part of normal
MOTION for your application, you must hardwire program operation. Use J 0.
MOTION on. See the Installation and Setup Manual NOTE
for instructions on how to hardwire MOTION.
Before continuing, make sure that MOTION is on. At any time, when motion is commanded, if the
Type the following command to print the state of the MOTION input turns off, an error is generated, and
MOTION input: all motion is stopped, as if the STOP command were
given. Also, any errors with a severity of 2 or 3 will
P MOTION ;MOTION SHOULD BE 1 stop motion in a straight line deceleration at a rate of
AMAX. Appendix D lists all errors and their
severity.
Many times, the MOTION input is controlled by the
normally-closed contacts of a push button. This push
button is often called "STOP," since pressing the 3.8.1.5 STOP and BREAK with
button opens the MOTION input and forces the Control X (^X)
motor to stop. Emergency Stop should not be You can execute a stop and break command with the
implemented with the MOTION input. Emergency control-X (^X) character. Control-X or ^X means
Stop should be connected to a contactor that removes that you hold down the control key (Ctrl) on your
power from the system. This is because an terminal (or IBM-PC) and press the X key. This has
emergency stop, which is for safety, should not the same effect as typing B, then S from your
depend on BDS5 functions to operate properly. terminal.

Do not use MOTION or any


other BDS5 input for 3.8.2 Limiting Motion
Emergency Stop. When
Emergency Stop is activated, The BDS5 allows you to limit motion with both
WARNING it should directly remove Software and Hardware Travel Limits.
power from the system.
3.8.2.1 Hardware Travel Limits
Hardware Travel Limits limit the range of motion. If
3.8.1.4 STOP (S) Command you have an application with boundaries which
Any motion can be stopped using S, the STOP should never be crossed, you are encouraged to use
command. S has no parameters. S decelerates the the Hardware Travel Limits with limit switches.
motor at AMAX and terminates all motion
commands. The S command does not disable the Exceeding Hardware Travel Limits is a more severe
BDS5. error than exceeding Software Travel Limits. The
BDS5 assumes that Software Travel Limits should
Normally, the STOP command should only be given catch normal overtravel conditions and that a
from the terminal or from the program in response to Hardware Travel Limit indicates a serious problem.
an error condition. A better method for stopping Hardware Travel Limits disable the BDS5 rather than
motion from the program under normal circumstances just stopping motion, as the software limits do. This
is: means that the motor must be backed away from the
limit by hand.
J 0 ;JOG TO 0 SPEED--STOP MOTION
;AT DEC, NOT AMAX The Installation and Setup Manual discusses how to
wire LIMIT. Usually, two limit switches are wired

3-19
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

in series and connected to LIMIT; the contacts of Trip points are not limits in the sense that they do not
these switches must be closed for the BDS5 to be inhibit motion. Trip points convert position feedback
enabled. If the contacts open, the BDS5 will be to an on-or-off signal. Trip points are particularly
disabled, the motor will coast to a stop, and an error useful with alarms and the HOLD command, both of
will be generated. This limit is a safety device and which are presented in Chapter 4.
not part of normal program operation. Hardware
Travel Limits are always enabled. Position trip points require a lot of calculations. As a
result, they slow the execution of the user program by
3.8.2.2 Software Travel Limits, PMAX about 4%. If you are not using trip points, you can
disable them by typing:
& PMIN
Software Travel Limits limit the range of motion of
the motor. There are two software limits: maximum TRIP OFF
and minimum. If position feedback (PFB) moves
outside the software limits, an error is generated and When the BDS5 is powered-up, trip points are
motion stops. Software Travel Limits are intended as enabled.
a guard against motion that is out of range due to
improper operation or programming errors.
3.8.3 Profiles
PMAX is the maximum position allowed and PMIN
is the minimum. If PFB is greater than PMAX, When a positioner commands the motor to move from
negative motion is allowed, but positive motion is one point to another, it must control acceleration,
not. If PFB is less than PMIN, only positive motion deceleration, and traverse speed. The velocity of the
is allowed. PMAX and PMIN are in position units motion versus time is called the profile. Simple
and can be changed at any time. profiles begin and end at zero speed and have three
segments: acceleration, traverse, and deceleration.
Software Travel Limits are enabled with PLIM, You must specify ACC, the acceleration rate, and
which can also be changed at any time . If PLIM is DEC, the deceleration rate, before commanding the
on, software limits are active; otherwise, PMIN and move. The traverse speed and the distance to move
PMAX are ignored. PLIM is turned on at power-up. are specified in the move command itself.
If you have an application with boundaries which
should not be crossed, you are encouraged to use
Software Travel Limits.

Note that you should set DIR before setting the


Software Travel Limits. This is because DIR relates
PMAX and PMIN to clockwise and counter-
clockwise motion limits. If you change DIR, you
must reset PMAX and PMIN.
Figure 3.2. A Simple Profile
3.8.2.3 User Position Trip Points,
PTRIP1 & PTRIP2 The graph in Figure 3.2 shows a simple profile. The
The BDS5 provides two user position trip points, move begins at position 0 and ends at position 5000.
which control a switch. You can use this switch to The traverse speed is 200 RPM. ACC and DEC are
control your program. specified independently before the move is
The two trip points are PTRIP1 and PTRIP2. Both commanded.
are in position units. You can program either at any
time. If the position feedback (PFB) is greater than 3.8.3.1 S-Curves
or equal to PTRIP1, then the TRIP1 switch will be The BDS5 also allows you to specify the type of
on. If PFB is less than PTRIP1, then TRIP1 will be acceleration you want. You can select S-curve
off. Similarly, if PFB is greater than or equal to accelerations for smoothness or straight-line
PTRIP2, then TRIP2 will be on; otherwise, TRIP2 accelerations for quickness. The graph in Figure 3.3
will be off. shows the profile from Figure 3.2 using S-curves
instead of straight lines.

3-20
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

Table 3.7. S-Curve Acceleration Chart

For this acceleration... Set SCRV to...

Straight-Line 1
Modified Polynomial 2
Polynomial 3
Modified Sinusoid 4
Sinusoid 5

Figure 3.3. S-Curve Profile


3.8.3.2 Move Absolute (MA)
Notice that ACC and DEC are still independent. Command
Notice also that they specify the average acceleration, There are two kinds of simple moves: absolute and
not the peak. Since S-curves reduce the acceleration incremental. With absolute moves, you specify the
rate at the endpoints of the acceleration, the end position; with incremental moves, you specify the
acceleration rate in the middle must increase. total distance of the move.
Typically, when you switch to S-curves, you must
reduce ACC and DEC to stay within the ratings of the The MA command allows you to command absolute
motor. However, since S-curves reduce overshoot, moves by specifying the end position. ACC, DEC,
you may find that you increase the overall and SCRV are all in effect for MA moves. As an
acceleration rate when you use them. option, you can specify the traverse speed.
For example:

You may need to reduce ACC


MA 50000 1000
and DEC when using
S-curves.
NOTE moves to position 50000 at a peak speed of 1000
RPM.
For some applications, S-curves can reduce the
average acceleration too much; in others, straight line The variable VDEFAULT is the default velocity for
acceleration produces motion that jerks the motor MA and MI commands. If you enter an MA
excessively. The BDS5 provides different levels of command without specifying a speed, the traverse
S-curves allowing you to make the trade-off. There speed will be VDEFAULT. For example,
are five levels that are selected by setting the variable
SCRV to either 1, 2, 3, 4, or 5. For more information
MA 100000
on S-curves, see Industrial Drives application note
B101, "Acceleration Profiles."
would move the motor so that PFB is equal to
100000; it would assume a traverse speed of
VDEFAULT. If you do not specify the speed in MA
commands, it reduces the execution time. This
normally means less delay between when the
command is entered and when the motor begins
turning. Appendix F lists the execution times of a
few simple moves.

Not specifying the speed in


MA commands reduces
execution time.
NOTE

3-21
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

3.8.3.3 Move Incremental (MI)


THE MOTOR MAY MOVE
Command UNEXPECTEDLY!
The MI command allows you to command
incremental moves by specifying the total distance of BE PREPARED TO DISABLE
the move. ACC, DEC, and SCRV are all in effect for THE BDS5!
MI moves. Like MA, if you enter an MI command
without specifying a speed, the traverse speed will be You should have completed
VDEFAULT. "Initial Check-Out" in the
Installation and Setup Manual.
For example: If not, return to the Installation
and Setup Manual and
MI 5000 200 WARNING complete that section.

causes the motor to move 5000 counts at a peak This section will enable the
speed of 200 RPM. The profiles that were shown BDS5. The system may be
earlier as "A SIMPLE PROFILE" or "S-CURVE unstable. The motor may
PROFILE" could have been generated from this begin oscillating or run away.
example. Be prepared to disable the
BDS5 quickly. You can
As with the MA command, disable the BDS5 by turning
off (opening the contacts of)
MI 25000 LIMIT or REMOTE.

causes the motor to move 25000 counts, with the Turn on the AC line voltage. Type in the following
peak speed at the speed VDEFAULT. example:
For both the MI and MA commands, not specifying
speed reduces execution time and program size. EN
ACC 1000
Not specifying the speed in MI DEC 1000
commands reduces execution MI 4000 100
time.
NOTE This should cause the motor to rotate 4000 counts
with a traverse speed of 100 RPM. With the next
3.8.3.4 Incremental Move Example example the motor will repeat the move. Type:
SHOCK HAZARD!
VDEFAULT = 100
Large voltages from the AC MI 4000
line and the DC bus can cause
injury. Wire the BDS5 as Notice that the motor again moves 4000 counts.
WARNING
described in the Installation Now, to bring the motor back to the original position,
and Setup Manual. type:

MI -8000

3.8.3.5 Profile Limits


With both the MA and MI commands, if the traverse
speed cannot be reached because ACC or DEC is too
small for the specified move, then the BDS5 reduces
the maximum speed so that the move, for all practical
purposes, is triangular. Actually, there is a very short

3-22
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

(less than 5 milliseconds) traverse segment so that the motion to change direction without stopping first.
move still has three segments. However, since changing directions involves both
acceleration and deceleration, Jog commands that
The maximum time for an entire move is not limited. change direction of rotation use ACC or DEC,
However, the time for each acceleration or whichever is lower. Jog commands should be used
deceleration is limited to 30 seconds. If the with caution, since motion continues indefinitely.
acceleration rate is so low that this limit is exceeded,
then the BDS5 generates an error explaining that
either ACC or DEC is too low. This error is issued 3.8.5 NORMALIZE (NORM) Command
before the motion command begins. In this case ACC
or DEC must be increased, or the peak speed of the
NORM, the NORMALIZE command, is required if
move must be decreased.
you want to reset the BDS5 position feedback, PFB.
Often, you may want to set the position feedback to
3.8.3.6 Multiple Profile Commands some known value. For example, on power-up the
The BDS5 allows one succeeding move to be position feedback is set to zero. After a homing
calculated while the present move is being executed. sequence, you may need to reset the position register.
This reduces inter-index delay, the delay between This is done using NORM, the NORMALIZE
successive moves, almost to zero. When you are command. For example,
commanding motion from the Interactive mode (-->),
be careful not to type in two move commands while NORM 10000
another is executing (motion from the original
command is not complete). This generates an error.
If you are commanding motion from your program, sets PFB (position feedback) as well as PCMD
the BDS5 automatically pauses before calculating a (POSITION command) to 10000 in position units.
third motion profile, thus stopping this error from As an alternative, you can enter:
occurring.
PFB=10000
3.8.3.7 Profile Final Position, PFNL
If you want to keep track of the end position of the Setting PFB has the same effect as the NORM
present move, the variable PFNL (Position Final) is command. Use whichever you think makes your
provided. This variable contains the final position of program easier to understand.
a move. The variable can be used to compute the
distance remaining by combining it with PFB Now, type in:
(Position Feedback):
P PFB
P "DISTANCE TO GO " PFNL-PFB
;PRINT THE AMOUNT OF Now, normalize the position to 1000 with:
;POSITION TO GO TO
;FINISH THE MOVE NORM 1000

3.8.4 JOG (J) Command Again, print PFB:

This section describes J, the JOG command. Jogging P PFB


is useful when you want to command motion without
position endpoints. For example,
and see that it is now 1000. The NORMALIZE
command cannot be used when either GEAR is on, or
J 500 when motion is commanded from MA, MI, or any
other motion command.
causes the motor to rotate at 500 RPM indefinitely.
Jogs are useful for machine set up and testing.
ACC and DEC are in effect with Jogs, as is SCRV.
Software and Hardware Travel Limits are also in
effect. Jog is the only move command that can cause

3-23
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

3.8.6 Zero Position Error (ZPE) distance (for Incremental moves). You also can
Command specify up to two velocities. If two velocities are
specified, then the first is the traverse speed and the
second is the ending speed.
The ZPE command zeros position error by setting
PCMD to PFB without changing PFB. There are
If one velocity is specified, then it is assumed to be
occasions when this will be necessary. For example,
the ending speed. In this case, the BDS5 uses the
if the BDS5 is run for some time as a velocity loop,
larger speed, either the beginning or ending speed, for
then position error can accumulate well beyond
the traverse speed. All velocities are specified greater
PEMAX. If the position loop is turned on with this
than zero. The BDS5 determines the direction based
condition, a position error overflow error will occur.
on the specified position. If no velocities are
To prevent the error, you must first zero the position
specified, then the BDS5 continues the Macro section
error, then turn the position loop on by entering:
at the beginning speed until the specified position is
reached.
ZPE
PL ON If you want to include a dwell in the middle of a
Macro move, use the Macro Dwell (MCD) command.
The ZPE command is also frequently used with In this command, you specify the time of the dwell in
clamping. See the explanation of clamping later in milliseconds. For example,
this chapter.
MCD 100 ;100 MSEC DWELL

3.8.7 MACRO MOVES This example specifies a 100 millisecond dwell.


Macro dwells are only allowed at the beginning of a
This section describes functions to implement Macro Macro move and when the previous section has ended
moves. Macro moves are complex, user-defined at zero speed.
moves that execute as one move. Simple moves, such
as MI and MA, always begin and end at zero speed After all motion sections have been specified, with
and have one acceleration segment, one deceleration the final motion ending at zero speed, use the Macro
segment, and one traverse segment. Macro moves Go (MCGO) command to begin the motion. MCGO
allow up to 30 user definable segments for one move. is only allowed when the speed at the end of the last
The moves are fully precalculated and, therefore, can Macro move is 0. MCGO also ends calculations for
execute very fast. Like other moves, ACC, DEC, and Macro moves. Subsequent MCI, MCA, or MCD
SCRV are in effect. These parameters can be commands reset the Macro move sequence.
changed between Macro move segments allowing
more flexibility. Also, PFNL indicates the ending Subsequent executions of MCGO will execute the
position of the entire Macro move. Like MI and MA, move again. The effect of multiple MCGO's on
the entire Macro move must begin and end at zero Incremental Macro moves is that the Incremental
speed, although beginning and ending speeds of move is executed again. The effect of multiple
individual sections are not constrained to 0 RPM. MCGO's on Absolute Macro moves is more difficult
Dwell segments can be embedded in Macro moves. to understand. This is because all Macro moves are
converted to Incremental before being executed,
3.8.7.1 MCA, MCI, MCD, & MCGO whether they are MCI or MCA based. This can cause
There are two kinds of Macro moves: Macro undesirable effects if the position does not return to
Absolute (MCA) and Macro Incremental (MCI). the starting point at the end of the Macro move.
Dwells can be inserted using the Macro Dwell Absolute Macro moves that are to be executed more
(MCD) command. When the move is completely than once should return to the starting position.
specified, the Macro Go (MCGO) can be used to
execute the move. MCGO can be executed as many Enabling the BDS5 resets the Macro move memory.
times as desired, once calculations for the entire move If you are typing in a Macro move and you make an
are complete. error, you should disable, then enable the BDS5, and
Both Macro Absolute and Macro Incremental moves retype the entire move. Jog, MA, and MI commands
are specified in a similar manner. You must specify do not reset the Macro move memory. This means
either the end position (for Absolute moves) or the you can execute jogs or simple moves after the Macro

3-24
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

move is calculated; the MCGO command will still


execute the move properly.

3.8.7.2 Macro Move Example #1


As an example of Macro moves, consider the
following profile:

1000 RPM

200 RPM
Figure 3.5. Macro Move Example #2

0 10000 11000 Note that this diagram is a shorthand "schematic" of


COUNTS COUNTS COUNTS motion. This curve is plotted as velocity-versus-time
for forward motion (the first 5 segments) and for the
dwell. However, return motion is shown as negative
Figure 3.4. Macro Move Example #1 motion returning to the origination time. Obviously,
time does not go backwards. This method of
diagramming motion is commonly used because it is
There is no way to use MA or MI to accomplish this
simple (if not in all respects accurate) and conveys
profile, so Macro moves must be used. The following
the necessary information.
sequence will generate the move shown in Figure 3.4.
The above sequence should be modified as follows.
ACC=20000 Note that here the profile is converted to Absolute
DEC=20000 rather than Incremental--this is a matter of
MCI 10000 1000 200;MOVE 10000 convenience as either will work:
;COUNTS,
;TRAVERSE
MCA 10000 1000 200
;AT 1000 RPM
MCA 11000 0
;AND END AT 200
MCD 500 ;ADD A DWELL
;RPM.
MCA 0 1000 0;RETURN TO HOME.
MCI 1000 0 ;MOVE 1000 MORE
;NOTE THAT
;COUNTS
;VELOCITY IS
;TRAVERSING AT
;ALWAYS POSITIVE
;200 RPM (THE
MCGO
;FINAL SPEED
;OF THE PREVIOUS
;MOVE) AND END ; Note that Macro moves have one inherent weakness.
;AT 0 RPM. If you are using user units and you specify an
MCGO ;BEGIN MOTION incremental move that translates to a non-integer
number of counts, the Macro move will move the
closest number of integer counts. If the move is
Every subsequent MCGO will generate a similar
repeated, the small error in the position command will
move, 11000 counts long.
accumulate. This problem does not happen if you use
MI commands.
3.8.7.3 Macro Move Example #2 3.8.8 R/D BASED MOVE (MRD)
The profile can be made slightly more complex by Command
adding a 0.5 second dwell and a return to the original
position on the end. This profile is demonstrated This section describes MRD, the command that
below: generates moves based on the feedback from the R/D
converter, rather than the Position command
(PCMD). These moves are less than one revolution
and are always Absolute, rather than Incremental.

3-25
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

With the MRD command, you specify the desired


R/D output (at the end of the move) and the peak
velocity. For example, the command: 3.8.9 Capturing Position
MRD 1000 100 Position capture is a feature where the position
feedback (PFB) is captured when a hardware input
moves the motor so that the R/D output is 1000. transitions. The BDS5 position capture is accurate to
100 RPM is the traverse speed. ACC, DEC, and +/-25 microseconds. In other words, the position that
SCRV are all in effect with MRD. As with MI and is stored after a capture is equal to the actual position
MA, if 100 RPM is too large to be attained given of the motor at the time of the capture, within
ACC and DEC, the move becomes triangular. 25 microseconds. Capture uses the HOME hardware
input as the capture trigger.
As an option, directions of CW or CCW can be
specified to force the motor to rotate the desired 3.8.9.1 Enabling Capture, CAP &
direction. If direction is left out, then the motor
rotates whichever direction is shortest. For example:
PCAP
The switch CAP controls capture. If CAP is on, then
capturing is enabled. When capturing is enabled, the
MRD 1000 100 CW ;MOVE R/D TO 1000, BDS5 will watch the HOME input. When the HOME
;BUT ALWAYS CW input changes to the state specified by CAPDIR, the
BDS5 will store the position in the variable PCAP.
moves the motor clockwise, even if the specified After the capture, the BDS5 turns CAP off. This tells
position (1000) is just a few counts counter- you that the capture is complete. PCAP is in position
clockwise. The variable DIR has no effect on MRD units. You can then use PCAP as you would any
commands. other monitoring variable.

The limit of position is based on the R/D converter 3.8.9.2 Capture Direction, CAPDIR
accuracy as shown in Table 3.8. The capture is triggered when the HOME input
changes from 0 to 1, or vice versa. If CAPDIR is 1,
Table 3.8 R/D Converter Accuracy the capture occurs when the HOME input changes
from 0 to 1. If CAPDIR is 0, the capture occurs when
Resolution Maximum Position HOME changes from 1 to 0. CAPDIR can be
12 4095 changed at any time. Changing CAPDIR always
turns CAP off.
14 16383
16 65535 3.8.9.3 Speeding Up Homing
Sequences
MRD moves are not buffered. They are not allowed One application of capture is to speed up homing
when the BDS5 is jogging or if a move is in progress. sequences. Homing sequences traverse very rapidly
until the HOME switch is tripped. Then the motor
MRD moves can be used to improve the accuracy of decelerates to zero and begins to traverse at a medium
homing sequences. First, use the BDS5 to position speed in the opposite direction until the HOME
the motor as close as possible to the home limit switch trips again. Then the motor decelerates again
switch trip point. Then, use the MRD command to to a slow speed until the HOME switch trips again.
move the motor to a specified R/D position. In this Since the final speed was low, the distance to
case, the limit switch must be accurate only to one- decelerate is considered negligible, and the motor is
half revolution of the motor for the R/D moves to be assumed to be at home.
useful. Using capture, the approximate home location can be
determined when the motor is traversing at high
speed, eliminating the need for the medium speed
traverse. The following program illustrates this.

3-26
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

CAPDIR=1 After the BDS5 stops motion, the position error stays
CAP ON at approximately PECLAMP. Before commanding
J -5000 ;JOG AT -5000 RPM any new motion, you should zero the position error
;TO GET TO HOME with the ZPE command.
TIL CAP EQ 0 ;WAIT FOR
;CAPTURE TO Clamping can be used with all move and jog
;OCCUR commands. If jogs are used, the motion continues
J 0 ;STOP MOTION until the stop is found. If move commands are used,
MA PCAP 200 ;RETURN TO PCAP-- then motion does not continue past the specified
;APPROXIMATE endpoint, regardless of whether a part is found.
;HOME
J 1 ;JOG AT A LOW An example of clamping follows:
;SPEED TIL HOME
;CAN BE FOUND PECLAMP=1000 ;SET CLAMP = 1000
TIL HOME EQ 0 ;ONCE HOME IS ;POS UNITS
;CROSSED, STOP. CLAMP ON ;ENABLE
J 0 ;CLAMPING MODE
MA 100000 400 ;MOVE AT MOST
The capture position is accurate to 25 microseconds. ;100000 POS UNITS
The resulting error is proportional to speed. For ;IF THE MOTOR
example, for a 12-bit R/D converter, if the capture ;GETS ALL THE
were done while the motor was rotating at 5000 ;WAY TO 100000,
RPM, the error would be limited to about 1 degree. ;THEN THE STOP
If this is not close enough, you can jog the few bits ;WAS NOT
until the switch is tripped, or you can use the MRD as ;ENCOUNTERED.
discussed above. ;ASSUMED
;THE PART IS NOT
;THERE.
3.8.10 Clamping W0 ;DELAY UNTIL
;MOTION STOPS
Clamping stops BDS5 motion when the position error
exceeds a set point. This is used to determine that the IF PCMD EQ 100000 P "PART NOT
motor, usually through a lead screw, has run a part FOUND"
into a mechanical stop. The profile stops and the part ;IF PCMD = 100000 =
is held with limited torque. This is sometimes ;FINAL POSITION,
referred to as "Feed to Positive Stop." The stop is ;THEN THE PART
detected by watching position error; when position ;WAS NOT FOUND.
error exceeds the variable PECLAMP, the part is
assumed to have run into a stop. When a stop has
been detected, the BDS5 will hold the current at 3.8.10.1 Clamping and Homing
ILIM which should be set to the proper holding Clamping can be used to home your machine by
current. ILIM can be increased or decreased after the gently running the machine into a stop; this eliminates
stop has been detected. To enable clamping, turn the need for a home limit switch. In this case, you
CLAMP on. PECLAMP can be changed at any time. should reduce ILIM to a level just high enough to
overcome running friction at low speed. ILIM is
In general, clamping is done at low speeds with the lowered to reduce the torque exerted by the motor
current limited to some low level. After the clamp when the machine stop is encountered. Set
has occurred, the motor is assumed to be at zero PECLAMP to a level well above the normal
speed. When the clamp has occurred, you can raise following error; usually the position unit equivalent
or lower ILIM to set the holding torque as desired. of several hundred counts is sufficient. Then turn
You can tell whether a clamp has occurred by looking CLAMP on and jog, at low speed, toward the stop.
at SEG, the present motion segment. If SEG is 0, The BDS5 will run the machine into a stop and limit
then motion has stopped. current to ILIM. When SEG is equal to 0, the BDS5

3-27
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

has clamped and thus recognizes that the machine has


been run into the stop.
3.8.11 JOG TO (JT) & JOG FROM (JF)
Often, the repeatability of this operation is
unacceptable because the stop may be "soft" or it may
In some applications, JOG commands need to be
wear over time. Here, you can use the MRD
synchronized with position feedback. With J, the
command to force the BDS5 to move to a fixed R/D
standard JOG command, the speed changes when the
converter position. This means that you will get a
command is entered. Position dependent jogs (Jog
repeatable home as long as the clamp position does
To and Jog From) delay the speed change until a
not vary more than one-half of one revolution
specified position is reached. You specify the
between different clamping operations. This is not
position at which the change in speed begins with the
normally a problem.
Jog From (JF) command. Similarly, you specify the
position at which the change in speed ends with the
To set the proper R/D converter position for the
Jog To (JT) command.
MRD command, first do the clamping operation by
hand a few times. Reduce ILIM and jog, at low
With position dependent jogs, you must specify a
speed, into the stop. After the unit has clamped, as
position and the new speed. ACC, DEC, and SCRV
indicated by SEG = 0, print the R/D converter
are in effect. Position dependent jogs are always
position using:
Absolute moves (not incremental).

P PRD The following graph shows the effect of a JF


command. This example assumes that the speed is
Do this several times and record the average of PRD. already 2000 RPM when the JF command is
Now use the MRD command to back away from the executed.
stop about one-half of one revolution. For example,
suppose you jog clockwise into the stop several times ;ASSUME PRESENT SPEED IS 2000 RPM
and record PRD each time. It turns out that the JF 50000 1000
average value of PRD is 1500 counts. Then use the
following MRD command:
2000 RPM

MRD 1500+2048 200 CCW ;MOVE TO 1/2


;REVOLUTION COMMAND
ENTERED
;FROM 1500 HERE
;COUNTS
1000 RPM

You must specify the direction (CW or CCW) so that 50000


the BDS5 always backs away from the stop. COUNTS
Remember that, for example, J 1000 is not
necessarily clockwise since the direction of jog Figure 3.6. Jog From (JF) Command
rotation is controlled by the variable DIR.

You should be aware that if you replace your motor, The next graph shows the effect of the Jog To (JT)
you must repeat this process since the relationship of command. This example also assumes that the speed
PRD to the motor shaft position is different for each
motor.

is 2000 RPM when the command is executed:

If you replace your motor, ;ASSUME PRESENT SPEED IS 2000 RPM


repeat this process. JT 50000 1000
NOTE

3-28
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

2000 RPM

3.8.11.2 Registration Example


COMMAND The following example shows how to program the
ENTERED BDS5 for registration. The desired operation of the
HERE
program is as follows:
1000 RPM
1. Set CAPDIR (1 for low-to-high transition, 0
50000 for high-to-low transition).
COUNTS

Figure 3.7. Jog To (JT) Command 2. Enable capturing.

3. Begin move.
Position dependent commands must be used with
care. If you specify a position that has already
4. Wait for the BDS5 to capture.
passed, the BDS5 will generate ERROR 42, "MOVE
W/O TIME." Also, if the Jog To command is given
5. Use the captured position to set the endpoint of
so that ACC or DEC prohibits the profile from
the move.
reaching final speed before the specified position, the
BDS5 will generate ERROR 42. ERROR 41,
For example, the following code segment jogs at
"MOVE NEEDS MOTION," is generated if Jog To
2000 RPM and stops 4000 counts after the
or Jog From are commanded when the velocity is 0.
registration input transitions from low to high.
Finally, a position dependent jog that attempts to
change the direction of rotation will generate an error.
All of these errors stop motion. CAPDIR 1 ;SET CAPDIR FOR
;LOW TO HIGH
CAP ON ;ENABLE CAPTURE
3.8.11.1 Registration J 2000 ;BEGIN MOVE
The BDS5 allows you to combine the position TIL CAP EQ 0 ;WAIT FOR
capture with the Jog To command to implement ;POSITION
index-to-registration. One example of index-to- ;CAPTURE
registration is a conveyor belt on which items are JT PCAP+4000 0
placed in random positions. An optical sensor detects
the item upstream of the operation. The BDS5,
controlling the conveyor, continues at full speed and Note that the motor comes to rest 4000 counts after
stops the item where the operation will take place. the position that was captured, not 4000 counts after
The high-speed position capture works at all the JT command is executed. If 4000 counts was not
velocities and during accelerations. It is accurate to enough distance, ERROR 42, "MOVE W/O TIME"
25 microseconds (if Connector C2, Pin 19 is used) would be generated. This means that the commanded
and, therefore, will work properly on demanding speed change cannot be accomplished given DEC, the
index-to-registration applications. If the OPTO-22 deceleration limit. Note also that you must leave an
Connector (C7) is used with standard industrial additional 10-15 milliseconds for the TIL and JT
OPTO-22 style modules, the optical module may add commands to be executed.
as much as 25 milliseconds of delay, so be careful to
properly specify the optical coupling to the The JT command example given here brings the
registration switch. system to rest. As an alternative, you can change the
speed to any value the motor can run, as long as you
To implement index-to-registration, you usually jog do not attempt to change direction with one JT
the motor at a constant speed, capture the position command. For example, the following command
(with the registration device connected to the HOME replaces the above JT command when you want to
input), then use the Jog To command to stop the change speed to 100 RPM at 4000 counts past PCAP.
motor at an endpoint (normally a specified distance
beyond the registration input).

3-29
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

comes to rest at 30,000 counts. This is because the


JT PCAP+4000 100 JF/JT commands cause the motion profile to hold the
;CHANGE SPEED TO velocity command constant, even if an acceleration is
;100 RPM. BEGIN commanded from the previous motion command.
;DECEL SO THE The solution is to insert delays to force the program
;SPEED IS JUST to wait until the motor reaches the final speed from
;REACHING 100 the previous motion command. For example, the
;RPM WHEN THE above program can be modified as follows:
;POSITION IS 4000
;COUNTS PAST 55$
;REGISTRATION EN ;ENABLE BDS5
;MARK ACC 100000 ;SET ACCEL AND
;DECEL RATES
For more information about registration, see DEC 100000
Industrial Drives application note "Cut to Length." NORM 0 ;NORMALIZE TO
;ZERO POSITION
J 100 ;JOG TO 100 RPM
3.8.11.3 Multiple JF/JT Commands TIL VCMD EQ 100 ;WAIT TIL SPEED
Many applications require that multiple Jog From ;REACHES 100 RPM
(JF) and Jog To (JT) commands be executed JT 20000 400 ;EXECUTE JT
sequentially. In most cases, you will have to insert a ;COMMAND
delay in your program between JT and JF commands. TIL VCMD EQ 400 ;WAIT TIL SPEED
For example, if you enter: ;REACHES 400 RPM
JT 30000 0 ;EXECUTE JT
55$ ;COMMAND
EN ;ENABLE BDS5 DIS
ACC 100000 ;SET ACCEL AND B
;DECEL RATES
DEC 100000 Although delays with the TIL command work, delays
NORM 0 ;NORMALIZE TO usually should be inserted with the WAIT (W)
;ZERO POSITION command. The WAIT (W) command takes less
J 100 ;JOG TO 100 RPM space and works better with multi-tasking, a subject
JT 20000 400 ;ERROR--SHOULD discussed in Chapter 4. For our example, the first
;DELAY TIL SPEED TIL command can be replaced with "W 2" and the
;REACHES 100 RPM second can be replaced with "W 3."
;BEFORE
;EXECUTING JT
;COMMAND. 3.9.11.4 Changing Profiles During
JT 30000 0 ;ERROR--SHOULD Motion
;DELAY TIL SPEED Position dependent jogs can also be used to change
;REACHES the speed or endpoints of an MA, MI, MCI, or MCA
;400 RPM BEFORE command that is already in progress. For example,
;EXECUTING JF suppose you want to change the speed of a profile
;COMMAND. depending on an input, you could write the following
DIS program to reduce the speed when I1 is 1.
B

You might think the motor will first jog to 100 RPM,
then to 400 RPM (at 20,000 counts) and finally come
to rest at 30,000 counts. Actually, the motor will jog
to about 40 RPM and continue at that speed until it

3-30
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

X1 = 10000 ;X1 STORES THE request a speed reduction near an endpoint, so that
;ENDPOINT this may not be a problem.
MA X1 5000 ;BEGIN AT 5000
;RPM
TIL SEG EQ 0 GOSUB 25 3.8.12 External Inputs
;25$ WATCHES I1
;TO CHANGE External inputs are normally from a "master" motor.
;SPEED As a standard, these inputs are in digital encoder
B format. Examples of "master" motors include the
encoder-like output from another BDS5, output from
25$ an actual encoder, or a customer synthesized encoder
? I1 EQ 0 RET ;CHANGE ONLY IF signal. The external input can control motion in the
;I1 = 1 two BDS5 Master/Slave modes: electronic gearbox
J 1000 ;REDUCE SPEED and profile regulation. The BDS5, acting as the
;TO 1000 RPM slave, accepts commands from these external sources.
TIL SEG EQ 2 ;WAIT UNTIL SPEED The external input can also come from a feedback
;IS 1000 RPM encoder which is mounted to the motor; this encoder
JT X1 0 ;USE JT TO GET TO is occasionally used to improve the accuracy of the
;ORIGINAL BDS5.
;ENDPOINT AT NEW
;SPEED External inputs are connected to Channel A and
TIL SEG EQ 0 ;WAIT FOR MOTION Channel B inputs of the Encoder Equivalent
;TO STOP Connector.
B ;DONE
Your program has direct access to the external input
You must be careful not to begin the motion too late through the variables VEXT and PEXT. The
in the profile. For example, suppose I1 became 1 frequency of the external input is provided in VEXT.
after the profile was well into deceleration, and the VEXT is in external velocity units (VXNUM and
speed was, say 200 RPM. In this case, the JT VXDEN). PEXT is the accumulation of counts from
command would generate an error because by the the external input. PEXT can be set to any value
time it was executed, the motor position would be from the terminal or from your program at any time;
past X1, the original endpoint. This is because the this is equivalent to normalizing the external position.
unit would accelerate up to 1000 RPM before the JT PEXT is in external position units (PXNUM and
command was executed. In general, you must limit PXDEN). If the external input comes from a motor,
the time during which you are looking for the speed VEXT and PEXT represent the "master" motor's
change. After this point, the profile must either velocity and position, although you must properly
continue along the original profile or the endpoint calculate the external velocity and position units. In
must be extended. For example, the program section this way, PEXT, the master position, is similar to
beginning at label 25 could be re-written so that it PFB, the slave position. Likewise, VEXT is similar
watched a position trip point, X1-2000: to VFB. If the "master" motor has the same
resolution as the slave, then set PXNUM, PXDEN,
25$ VXNUM, and VXDEN equal to PNUM, PDEN,
? PFB GT X1-2000 RET ;DO NOT VNUM, and VDEN, respectively. Otherwise, see
;REDUCE Chapter 4 for more information on calculating the
;SPEED IF units.
; PFB >
;SETPOINT VXAVG is the average of VEXT over the previous
; 16 milliseconds. Occasionally, the normal sample-to-
;REST OF 25$ PROGRAM THE SAME sample variation of VEXT is undesirable. In these
; cases, use VXAVG in place of VEXT.
3.8.12.1 Analog Input
What value to use for the setpoint varies from one The standard BDS5 is configured with digital
application to another. These values must be set by external inputs. As an option, the BDS5 provides an
experience. On many applications, the input will not analog external input. Note, however, that you

3-31
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

cannot have both types of inputs at the same time. RESOLUTION MASTER is the resolution of the
For systems configured with analog inputs, the BDS5 master motor in counts/revolution.
converts the analog input to a pulse train, where 10
volts of input is equivalent to 2 MHz. If the analog If the master is a pulse train that does correspond to a
input is a velocity command, then use electronic motor or encoder, calculate GEARI and GEARO
gearbox Master/Slave mode to make the BDS5 a with:
velocity drive. See Appendix G for more
information. If the analog input is going to be used GEARI REVSLAVE × RESOLUTION SLAVE
for "feedrate override," use profile regulation. =
GEARO COUNTSMASTER
The analog external input is connected to the analog
input of the Customer I/O Connector. where:

COUNTS MASTER is an arbitrary number of counts


3.8.13 Electronic Gearbox of the master signal and

Electronic gearbox is one of two BDS5 Master/Slave REVSLAVE and RESOLUTION SLAVE are as
modes. Refer to Figure 3.8 for a diagram of the two before.
modes. Electronic gearbox is used to link two motors
together so that the velocity of one is proportional to To enable the Gearbox mode, type:
the velocity of the other. The constant of
proportionality can be negative, allowing the GEAR ON
velocities to be in opposite directions.
If the ratio is not an integer, the BDS5 does not "drop
3.8.13.1 Gear Ratio, GEARI & GEARO pulses." The BDS5 keeps track of partial pulses to
In electronic gearbox, the command signal comes eliminate dropping pulses over time. If the number of
from the external input. The pulses are multiplied by pulses coming into the BDS5 is at a rate that is too
a gear ratio to form the position or velocity command. large, then ERROR 97, "GEAR OVERFLOW," will
The ratio is defined by two variables: input gear teeth be generated. This error can also be caused by the
(GEARI) and output gear teeth (GEARO). GEARI ratio of GEARO to GEARI being too large. Note that
must be between ±32767; GEARO must be between 1 large feed-forward (KF > 4000) is normally
and 32767. If the sign of GEARI is changed, then the undesirable in electronic gearbox systems because it
direction of rotation will be reversed. causes overshoot.

If the master is a motor or encoder, calculate GEARI 3.8.13.2 Gearbox Example 1


and GEARO with: Two BDS5's are connected in a master/slave system.
Both have 12-bit R/D converters so that one
GEARI REV RESOLUTION
= SLAVE
× SLAVE revolution is equivalent to 4096 counts. Suppose we
GEARO REV RESOLUTION want the slave motor to rotate at one third the speed
MASTER MASTER
of the master motor. What are the values of GEARI
where: and GEARO?

REV GEARI REVSLAVE RESOLUTION SLAVE


MASTER
is an arbitrary number of revolutions = ×
of the master motor,
GEARO REVMASTER RESOLUTION MASTER
GEARI  1  1 1
=   ×  =
REVSLAVE is the corresponding number of GEARO  3  1 3
revolutions of the slave motor,
You can select any integer values for GEARI and
RESOLUTION SLAVE is the resolution of the GEARO that have the ratio 1/3.
slave motor in counts/revolution, and

3-32
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

3.8.13.3 Gearbox Example 2 3.8.13.4 Profiles and Gearbox


Suppose the master signal in Example 1 came from a Gearboxing can be done in conjunction with
500-line encoder. With quadrature encoding, a 500- incremental moves and jogs. MI and Macro moves
line encoder will generate 2000 counts per revolution. based on MCI are summed with the gearbox
If you still wanted 1:3 gearing, then: command to form the profile. This can be used for
"phase adjustment," a common function used with
GEARI REVSLAVE RESOLUTION SLAVE electronic gearbox. Phase adjustment means that the
= × slave will be locked to the master through the
GEARO REVMASTER RESOLUTION MASTER
electronic gearbox, but occasionally the slave BDS5
adds a short profile on top of the gearbox command.
GEARI  1   4096  4096
=   ×  = For example, you may want to increase the slave
GEARO  3  2000  6000 position (phase) by 90° while remaining in gear. In
So, GEARI would be 4096 and GEARO would be this case, enter the following commands:
6000.

3-33
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

BDS5 Master/Slaving

Master Slave
Encoder
or
Digital Input
Motor BDS5 Conn. C1
or
Motor
or Analog Input
Conn. C2
Motor
BDS4
BDS5 Resolver
or Feedback
Pulse
Signal
or
Analog
Signal
Electronic Gearbox
Slave BDS5

Velocity VXDEN VEXT


VXNUM
Digital Input Conn. C1
X4
or Decode
Analog Input Conn. C2 A/D Position
PXDEN
PXNUM
PEXT

Option
Card

GEARI
GEARO

PCMD
+
+
Motion Profile
Command Generation

Profile Regulation

Slave BDS5

Position PXDEN
PXNUM PEXT
Digital Input Conn. C1
X4
or Decode
Analog Input Conn. C2 A/D Velocity
VXDEN
VXNUM
VEXT

Option
Card

1
REGKHZ

Motion Profile
Command Generation PCMD

Figure 3.8. BDS5 Master/Slaving

3-34
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

GEAR ON ;ENABLE ELECTRONIC velocity and acceleration of move commands without


;GEARBOX affecting the final position of the move. The rate of
; the move is dependent on the frequency of an external
; ...NORMALLY, SOME TIME WOULD clock, which is connected to the external input, in
;PASS BETWEEN THESE COMMANDS... addition to the normal limits of the move (ACC,
; DEC, and the velocity are set in the move command
MI 1028 10 ;PHASE ADJUST 90 itself). The external input may be a master motor to
;DEGREES AT 10 RPM. which all moves must be synchronized (such as a
;SYSTEM REMAINS IN conveyor belt motor), or it may be a signal that you
;GEARBOX THROUGH THE generate electronically. As an option, an analog
;PHASE ADJUSTMENT. signal can be fed directly to the BDS5, where it is
converted to a pulse train and can be used as the
external input. Profile regulation works with MA and
You cannot use MA or MCA commands when GEAR
MI, as well as Macro moves.
is on. Also, you cannot use position-dependent jogs
(JT or JF) when GEAR is on.
All profile regulation is based on an accumulation of
counts from the external input during the move. If
3.8.13.5 Velocity Offset, VOFF the external frequency changes during a move, the
VOFF, velocity offset, is added to the Velocity velocity of that move will be proportional to the
command when the gearbox is enabled. VOFF is in changing clock frequency. In fact, if the external
velocity units. It is normally used with the analog input frequency goes to zero, then motion will stop.
input to correct voltage offset in the optional analog Note that if the external input changes rapidly, the
velocity input. VOFF can be changed at any time. profile is not limited to ACC or DEC. For example,
Note that VOFF is set to zero when GEAR is if the external frequency stopped suddenly, the BDS5
enabled. This is done because if VOFF is large (say, would command motion to stop just as suddenly.
2000 RPM), enabling the gearbox would immediately Note also that large feed-forward (KF > 4000) is
command motion. normally undesirable during regulation because it
causes overshoot.
VOFF is set to zero when
GEAR is turned on. 3.8.14.1 REG & REGKHZ
REG enables the Profile Regulate mode. If REG is
NOTE on, then profile regulation is enabled. REG and
GEAR cannot be on at the same time.

3.8.13.6 Gearbox, ACC/DEC, and To use profile regulation, you must determine:
Jogs
When the BDS5 is run as a velocity loop (PL off), 1. The maximum frequency of the external input.
acceleration and deceleration rates can be limited by Set REGKHZ to this value.
the variables ACC and DEC. This allows you to limit
the acceleration from external velocity commands 2. The desired speed of the move when the
that are otherwise unlimited. If you want the external input frequency is REGKHZ. Use this
acceleration and deceleration to be limited by ACC value as the commanded velocity of the profile.
and DEC, type:
The maximum frequency of the external input is
stored in the variable REGKHZ in kHz. The profile
RAMP ON ;LIMIT ACC AND
will execute normally (that is, at the specified velocity
;DEC WHEN PL IS OFF
and acceleration) when the external input frequency is
equal to REGKHZ. If the input frequency is less than
3.8.14 Profile Regulation REGKHZ, then the profile will move the specified
distance, but the acceleration and velocity will be less
This section describes profile regulation, one of the than, and in proportion to, the
BDS5 Master/Slave modes. Profile regulation allows
you to synchronize the rate of profile execution input frequency. The move will never go faster than
according to the external input. This modifies the specified in the original move command, even if the

3-35
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

input frequency goes above REGKHZ. However, the belt speed. The belt moves at about 200
input frequency should always be less than REGKHZ. inches/minute. An encoder has been placed on the
REGKHZ is only resolved to 1 kHz (for example, conveyor, and the maximum belt speed of 275
499.5 kHz is converted to 500 kHz). inches/minute is equivalent to 780 kHz on the
encoder. If the belt is at maximum speed, the profile
REGKHZ is somewhat arbitrary; it must be greater of the motor is to rotate one revolution at a peak
than the maximum frequency of the external input and speed of 400 RPM.
less than 2 MHz. Beyond those limits you can set it
to any frequency that is convenient and adjust the Solution:
commanded motion by changing the speed of the
profile. Connect the conveyor belt motor encoder to the input
channel of the BDS5, as shown in the Installation and
Setup Manual, "Wiring C1." The following program
The frequency of the external should be executed:
input should always be less
than REGKHZ.
NOTE REG ON ;ENABLE PROFILE
;REGULATION
3.8.14.2 Profile Regulation and REGKHZ=780 ;SET THE MAX
;EXTERNAL
Counting Backwards ;FREQUENCY TO
In general, if you use profile regulation, the external
;780
input should count forward (that is, VEXT should be
MI 4096 400 ;MOVE ONE
positive when VXNUM and VXDEN are positive). ;REVOLUTION AT
The profile regulation firmware allows the input to ;400 RPM
count backwards for up to 30000 counts. This is
useful for applications such as conveyor belts that
generally go forward, but can go backward for short In the case above, the MI move will generate a one-
distances. If the external input counts backwards, the revolution move at a speed proportional to the
Profile Regulation mode works as follows: external input frequency with 400 RPM the maximum
rate when the external input frequency is 780 kHz.
• The profile stops (that is, no motion is
commanded) during backward counting. Note that the belt speed virtually never reaches 275
inches/minute. However, REGKHZ must be higher
• The backward counting must be limited to than the worst case maximum belt speed. For
30000 counts. Otherwise, ERROR 64 is example, the above program can be modified to allow
generated. an even larger belt speed.

• The profile does not continue as soon as REG ON ;ENABLE PROFILE


forward counting begins. The forward counts ;REGULATION
must completely offset the backward counts REGKHZ=1560 ;SET THE MAX
before the profile will continue. ;EXTERNAL
;FREQUENCY
• At the point where forward counts offset ;TO 1.56 MHZ
backward counts, the profile continues as if the MI 4096 800 ;MOVE ONE
input had never gone backwards. ;REVOLUTION AT
;800 RPM
Profile Regulation works with standard moves (MA,
MI, and MRD), Macro moves, and all jogs (J, JT, and Notice that REGKHZ was doubled. However, since
JF). the speed of the move was also doubled to 800 RPM,
the commanded move is identical.
3.8.14.3 Regulation Example
A machine has an axis that operates on parts passing
by on a conveyor belt. The profiles executed by the
motor must be at a rate proportional to the conveyor

3-36
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

to 200 RPM, for example, when the electronic


gearbox is enabled. If you just typed:
3.8.15 Encoder Feedback
J 200
Some special applications demand more accuracy
than can be provided with a resolver based system. it would have the effect of adding 200 RPM to the
For these cases, you can mount an encoder to the command from the gearbox. However, if you typed:
motor and feed the encoder's output into the external
input. The requirements for such a system are: CONTINUE
J 200
1. The resolution of the encoder must match the
resolution of the resolver on your BDS5
system. Refer to the Installation and Setup the CONTINUE would disable the electronic gearbox
Manual and the model number to determine the while commanding the motor to continue at whatever
resolution of your system. Select the encoder speed it was going when the command was executed.
as follows: Then the J 200 command would bring about a
controlled deceleration to 200 RPM.

Table 3.9. Encoder Resolution CONTINUE normally looks at the velocity command
for 1 millisecond. If the velocity command is
R/D Resolution Encoder Lines/Revolution generated from the electronic gearbox or a regulated
profile, the velocity can vary considerable. The
12-bit 1024 CONTINUE command allows you to specify a time
period, up to 1 second, over which velocity command
14-bit 4096
is averaged. For example, if you entered:
16-bit 16384
CONTINUE 50
2. The encoder must be mounted directly to the
motor. It cannot be connected through the CONTINUE command would change the velocity
gearboxes, lead screws, or any other command to the average velocity command over the
mechanical device. previous 50 milliseconds. CONTINUE always sets
SEG to 1.
3. You must turn the switch EXTLOOP on. This
switch configures the BDS5 to close the The BDS5 provides several control loops. These
position loop with feedback from the external loops, or control algorithms, allow you to select the
input rather than from the resolver. best control method for your applications.

When EXTLOOP is on, PE, the position error, is the


difference of PCMD and PEXT, rather than the
difference of PCMD and PFB. The ZPE command
3.9 CONTROL LOOPS
zero's the difference of PCMD and PEXT. Also, the
NORM command normalizes both PEXT and PFB There are four sections of control loops that are of
simultaneously. interest: input, output, feedback, and tuning variables.
The input is compared to the feedback to generate an
error. The error signal is modified using the tuning
variables to generate the output. The tuning variables
3.8.16 CONTINUE can be modified to produce higher levels of
performance; unfortunately, higher performance
The CONTINUE command is provided as a brings with it greater noise susceptibility and reduced
controlled way to turn off master/slave position stability. The system designer must optimize noise
control. The CONTINUE command tells the BDS5 and performance for the application.
to keep the motor going at its present speed while
simultaneously turning off REG and GEAR. One use BDS5 control loops have one or two tuning variables.
of this command is to cause a controlled deceleration All BDS5 loops follow the convention that larger
constants provide higher gain. Each BDS5 loop is

3-37
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

described below and shown on the drawing at the end


of this chapter. When PL is turned on, TQ is
turned off automatically.

NOTE
3.9.1 Position Loop
The Position Loop input is the variable PCMD, the
Position command. The feedback is PFB, the 3.9.2 Velocity Loop
position feedback. The output is VCMD, Velocity
command, and its two tuning variables are KP, the The velocity loop takes its input from the position
position loop gain, and KF, the position loop feed- loop if PL is on. If PL is off, motion commands
forward gain. directly control the velocity command (VCMD). The
feedback is VFB, velocity feedback, and the
The position loop calculates the position error (PE) as difference of these two signals is VE, velocity error.
the difference of PCMD and PFB. As a secondary Velocity error can be used in two control loops:
command source, PCMD is differentiated proportional and integrating.
(d/dt)PCMD. The position loop then performs the
following calculations:
3.9.2.1 Proportional Velocity Loop
VCMD=KP_PE+KF_(d/dt)PCMD. If a proportional velocity loop is selected, then the
velocity error is multiplied by KPROP, the
The position loop is optional. If the switch PL is on, proportional constant, to generate ICMD, the current
then the position loop is enabled; if it is off, then the command. Proportional velocity loop is selected
position loop is bypassed. PL is turned on at power- when the PROP switch is on. PROP is turned off on
up. power-up.

The feed-forward gain reduces position error at high Proportional velocity loops are much easier to
speed. Without feed-forward, the velocity command stabilize than integrating loops, so they are often used
is generated only from position error; a large position during machine setup. However, they also allow
error is required to command a hi steady-state velocity error and therefore, they are
gh speed. If KF is large enough, then a high velocity generally replaced with integrating loops when the
command can be generated with little or no position machine is fully operational.
error. The BDS5 scales KF so that unity feed-
forward occurs when KF equals 16384. In other 3.9.2.2 Integrating Velocity Loop
words, if KF is 16384, no position error is required to If an integrating velocity loop is selected, then the
generate the velocity command in steady-state velocity error is integrated and multiplied by KVI, the
running conditions. KF should never be larger than velocity integration constant. Velocity feedback is
16384. In addition, larger KF makes the system more subtracted from this signal, then the signal is
responsive to commands. multiplied by KV, the velocity loop gain, to form
ICMD. This velocity loop is selected when PROP is
Unfortunately, large values of KF cause overshoot. off.
KP must be reduced to reduce overshoot. If you need
to minimize position error when the motor is turning,
you will need to optimize KF and KP. Typically, KF
ranges from 2000 to 10000.

TQ should be off when PL is turned on. The system


becomes unstable when PL and TQ are both on. If
you do not turn TQ off before turning PL on, the 3.9.3 Torque Command
BDS5 will force TQ off.
In a few applications, the BDS5 is given a "torque"
command. Actually, this is a current command, but
at lower speeds, motor torque is approximately
proportional to current. In this case, VCMD is

3-38
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

multiplied by KPROP to form ICMD. Note that this


differs from the proportional velocity loop only in
that VFB is not subtracted from VCMD. The switch
TQ must be on to select the torque mode and off for
all other modes. The position loop should be off (PL
off) when the BDS5 is running in Torque command
mode. The BDS5 will turn PL off when TQ is turned
on.

When TQ is turned on, PL is


forced off

NOTE

3.9.4 Power-Up Control Loops


The BDS5 has, at power-up, the following settings:

• Position loop enabled (PL on).

• No feed-forward (KF=0)

• Integrating Velocity Loop (PROP off, TQ off)

These settings meet the requirements of a large


number of applications. Figure 3.9 shows each of the
five BDS5 controller modes.

3-39
CHAPTER 3 - PROGRAMMING LANGUAGE BDS5

[PL=1, TQ=0, PROP=0]


d KF
dt +

∫ dt
GEARING & + + + + KV
Kp KVI
PROFILE ICMD
GENERATION PCMD PE VE
- -
-
VCMD
PFB VFB POSITION LOOP w/ INTEGRATION

[PL=1, TQ=0, PROP=1]


d KF
dt +

GEARING & + + + KPROP


PROFILE Kp
PCMD PE ICMD
GENERATION VE
-
-
VCMD
PFB VFB POSITION LOOP w/o INTEGRATION

[PL=0, TQ=0, PROP=0]

∫ dt
GEARING & d + + KV
KVI
PROFILE dt ICMD
PCMD VCMD VE
GENERATION
- -

VFB VELOCITY LOOP w/ INTEGRATION

Figure 3.9. BDS5 Control Modes

3-40
BDS5 CHAPTER 3 - PROGRAMMING LANGUAGE

[PL=0, TQ=0, PROP=1]

GEARING & d +
KPROP
PROFILE dt ICMD
PCMD VCMD VE
GENERATION
-

VFB VELOCITY LOOP w/o INTEGRATION

[PL=0, TQ=0, PROP=1]

GEARING & d KPROP


PROFILE dt ICMD
PCMD VCMD
GENERATION

OPEN LOOP - TORQUE (CURRENT)

[PL=1, TQ=0, PROP=0]


d KF
dt
+

∫ dt
GEARING &
+ + + + KV
PROFILE Kp KVI
GENERATION PCMD PE VE ICMD
- -
-
VCMD
EXTERNAL
d
ENCODER
PEXT dt VEXT EXTERNAL POSITION LOOP w/ INTEGRATION
INPUT * [EXTLOOP = 1]

* Encoder resolution must be equal to RDRES (4096 counts standard)


and must be mounted directly on to motor.

Figure 3.9. BDS5 Control Modes (Contd)

3-41
BDS5 CHAPTER 4 - USER PROGRAMS

CHAPTER 4
USER PROGRAMS

4.1 INTRODUCTION flexibility does not lead to overly-complex programs.


If you follow good programming practices you will:
The information in this chapter will enable you to
understand the capabilities of the system. You will • be able to modify programs when the
also explore important consideraions that must be application changes;
addressed before you implement your own
application. Examples of programming techniques • have fewer programming errors;
will aid you to develop your own applications.
• have an easier time fixing the programming
errors that do occur; and
4.2 PROGRAMMING TECHNIQUES • be able to get help with errors you cannot fix.
User programs are combinations of BDS5 commands People who are new to programming often disregard
which are stored in the BDS5 memory. These good programming practices because they have not
programs are stored in non-volatile RAM; they are experienced the problems that result from poor
not lost when the BDS5 is powered down. User programming practices. Save yourself the misery of
programs are composed mostly of the commands that having to re-write your entire program. Follow these
have been described in earlier chapters. In addition, steps:
there are commands necessary for controlling the way
the program executes; these commands are covered in 1. DO NOT PROGRAM SAFETY
this chapter. The first section describes the BDS5 FUNCTIONS.
Editor, which allows you to enter and modify
programs from the terminal. If you have not already
done so, read Chapter 3 before proceeding. This Always hardwire personal
manual is written to be read sequentially. Do not safety functions. Never
attempt to save time by skipping ahead to this WARNING program these functions.
chapter.

READ THIS ENTIRE SECTION CAREFULLY. Always hardwire safety functions. This
includes EMERGENCY STOP or ESTOP.
This section discusses programming practices. The You should not depend on your program for
BDS5 has a flexible language. You must follow safety functions because of three potential
proper programming principles to insure that the problems: 1) You can easily make

4-1
CHAPTER 4 - USER PROGRAMS BDS5

programming errors (software problem); 2) A People who are new to programming often
function on the BDS5 may not work in exactly have a natural distaste for writing flowcharts.
the way you expect it to in every condition Many view flowcharts as something between a
(firmware problem); and 3) A critical crutch and unnecessary work. Most
component in your system may fail and experienced programmers have a different
prevent the function from working (hardware view. The most important point about
problem). Remember, safety functions are flowcharts is that they are virtually required if
rarely exercised so that if one of these you need help over the telephone. Always
problems does occur, it can go undetected write flowcharts for programs that are longer
indefinitely. If personal safety is involved, than 20 to 30 lines.
always hardwire the function.
5. COMMENT YOUR PROGRAM.
2. USE CAUTION WHEN PROGRAMMING
EQUIPMENT PROTECTION FUNCTIONS. Always comment your programs. Comments
help explain your program to other people.
Keep in mind that others may need to modify
Use caution when your program in the future. Comments also
programming equipment- help you remember why you chose certain
protection functions. ways to do things.
CAUTION Programming errors can
damage your equipment. 6. AVOID SPAGHETTI CODE.

Sometimes you can hardwire equipment A program with too much branching is often
protection functions, but other times this is called spaghetti code because of the look of the
impractical and you must program the flowcharts. Avoid a lot of branching,
functions. If this is the case, be very careful. especially branching up (that is, towards the
Remember, if your program has an error, it can top of your program); logic in programs that
result in damage to your equipment. For branch down is more intuitive and thus, less
example, suppose you want to wire your motor prone to errors. If you do branch up, branch to
thermostat so that when a fault occurs, the the top of a major section. In most programs
present machine cycle continues until there should only be one or two places that you
complete. In this case, you must program the branch up to. Feel free to use small loops (2 or
function (hardwiring the thermostat would 3 lines) which, of course, repeatedly branch to
result in motion stopping the moment a the top of the loop. Avoid branching between
thermostat fault is encountered). Carefully test sections.
these functions.
7. AVOID USER SWITCHES THAT MODIFY
3. WRITE A SIMPLE SPECIFICATION FOR BLOCKS OF CODE.
YOUR APPLICATION.
Switches that modify functions can be difficult
Write an outline of all the functions your to understand. This is commonly done when
application will require before you start programmers attempt to use one block of code
programming. This will serve as a for two similar functions. If possible, write
specification. Everyone who is involved with two different blocks of code rather than trying
your system (customers, supervisors, co- to use one block for two functions.
workers, operators) should agree on the
specification. While last-minute requests for
program changes will still occur, this is a
reasonable step towards reducing the incidence
of such requests. 4.2.1 Example Application
4. WRITE A FLOWCHART OF YOUR
PROGRAM. Suppose you are working on a project that is defined
by someone besides yourself. It may be a co-worker,
a supervisor, a customer, or an operator. For this

4-2
BDS5 CHAPTER 4 - USER PROGRAMS

example, we will use a customer. Suppose you have X1 Acceleration


this conversation: X2 Deceleration
X3 Speed
Customer: "My machine feeds plastic from a roll X4 Cut Length (added to registration mark)
onto a conveyor then cuts it into sheets.
The length of the sheet varies. There is 2. Turn on an output at the end of the move. This
a registration mark on each plastic sheet output will be connected to start the saw. Use
which is detected while the plastic is output O1.
moving. After this mark is detected, the
motor must move the plastic a variable 3. Allow contacts that stop the process after the
distance and stop. There is a stop input present cycle is complete. Use input I1.
that should stop and disable the BDS5
after it completes the cycle." 4. Wait for a start signal to begin each cycle. Use
input I2.
You: "Are there other parameters that should
be variable such as speed, acceleration,
and deceleration?" 4.2.3 Application Flowchart
Customer: "Now that you mention it, all those
When you write flowcharts use three symbols: a
parameters should be variable. I also
circle, a square, and a diamond. A circle indicates the
need an output at the end of the move to
start or end of a program. It also indicates the start or
start the saw blade rotating."
end of a subroutine. A square is an execution block.
That is, the BDS5 should do something: turn on an
You: "How often do these variables change?"
output, print a message, or command motion. A
diamond is a decision block. There are two exits
Customer: "About once or twice a year."
from a diamond: one if the condition is true and the
other if it is false. "Sample Flowchart" is a flowchart
You: "Do you mind typing them in from a
for this application.
keyboard?"

Customer: "No. That would be fine."

You: "What controls the start of the move?"

Customer: "My PLC activates an input. Can


ESTOP be programmed so that it can be
overridden when the cycle is almost
complete?"

You: "No. Since ESTOP is a safety function,


it is always hardwired to remove
power."

Customer: "Okay. About how long do you think it


will take?"

You: "I'll be in touch."


4.2.2 Application Specification
1. Allow a variable cut length, acceleration,
deceleration, and speed. Use user variables X1-
X4 as follows:

4-3
CHAPTER 4 - USER PROGRAMS BDS5

START

TURN OFF SAW OUTPUT.


ENABLE BDS5.
SET REGISTRATION
DIRECTION TO
POSITIVE.

NORMALIZE TO ZERO.
NO SET ACC AND DEC.
IS STOP INPUT ON? TURN ON
REGISTRATION

YES

WAIT FOR START


INPUT
DISABLE THE BDS5

TURN OFF SAW OUTPUT.


START MOVE.

PRINT
WAIT FOR
"STOP HAS BEEN ISSUED" REGISTRATION MARK.

SET END POSITION TO


REGISTRATION
POSITION + OFFSET.

END

WAIT FOR MOTION TO


STOP.
TURN ON SAW OUTPUT.

Figure 4.1 Sample Flowchart

4-4
BDS5 CHAPTER 4 - USER PROGRAMS

4.2.4 Commented Program


; THIS PROGRAM DOES NOT HAVE A
The following program will work for this application: ; HEADER (THAT IS, THE BEGINNING
; SECTION WHICH HAS A LOT OF
; INFORMATION). USE THE PROGRAM IN
; APPENDIX E AS AN EXAMPLE OF A
; PROGRAM HEADER.

1$ ;START OF
;PROGRAM
O1 OFF ;TURN OFF THE
;SAW OUTPUT
CAPDIR = 1 ;SET
;REGISTRATION
;DIR. POSITIVE
EN ;ENABLE BDS5

5$ ;BEGIN LOOP
IF I1 EQ 1 ;IS STOP INPUT ON?
GOTO 10 ;GOTO TO "STOP
;ROUTINE"
ELSE
NORM 0 ;NORMALIZE TO 0
ACC = X1 ;SET ACC
DEC = X2 ;SET DEC
CAP ON ;TURN ON CAPTURE
TIL I2 EQ 1 ;WAIT FOR START
;INPUT
O1 OFF ;TURN OFF SAW
;OUTPUT
J X3 ;START
MOVE
TIL CAP EQ 0 ;WAIT FOR
;REGISTRATION
JT PCAP+X4 0 ;SET END POSITION
;TO CAPTURED
;POSITION PLUS AN
;OFFSET (X4)
TIL SEG EQ 0 ;WAIT FOR MOTION
;TO STOP
O1 ON ;TURN ON SAW
;OUTPUT
GOTO 5 ;GO TO TOP OF
;LOOP
ENDIF

10$ ;START OF "STOP


;ROUTINE"
K ;DISABLE BDS5
P "STOP HAS BEEN ISSUED"
B ;STOP EXECUTION

4-5
CHAPTER 4 - USER PROGRAMS BDS5

4.2.5 Customer Service The BDS5 has a simple editor which is built in, or
resident. As an alternative, you can edit your
If you need help with software or understanding program on a computer and transmit it to the BDS5.
BDS5 functions, you can contact the Regional Motion Link is a software package designed
Industrial Drives' Sales Office. Ask for the Sales specifically for this purpose. Motion Link runs on
Applications Engineer. Please observe the following IBM-PC's and compatibles, and it handles the
procedure: communications between the BDS5 and the
computer. Motion Link also features a full-screen
1. Contact Industrial Drives for each new editor.
problem. Occasionally, an applications sales
representative may refer you to the Engineering Editing with Motion Link is preferred because it has
Department if necessary. However, if you call more features than the resident editor, and it allows
later with a new problem, please ask for a you to save your program on disk. Having the
applications sales representative. program on disk is a significant advantage since it is a
simple matter to transmit, or download, the program,
2. Be prepared to provide the following items: should the BDS5 be replaced or multiple BDS5's be
programmed.
a. A written spec of the system;

b. A flowchart; and 4.3.1 Motion Link Editor


c. A hard copy of the program. Chapter 3 provided an in-depth procedure for
installing and using Motion Link. This section
3. Be prepared to take the following actions, provides you with enough information to get started
should the application sales representative in most cases. Enter a simple program with the
determine that these actions are necessary: following procedure:

a. Strip out sections of your program to help 1. Establish communication with the BDS5 as
locate a problem. discussed in Chapter 2.

b. Rewrite sections of your program that do not 2. Press the right arrow key to display the menu
conform to the programming practices bar. Select PROGRAM.
described in this chapter.
3. Select NEW.
c. Video tape your machine to help
demonstrate the problem. 4. Enter this program:

If you need help with your program, please bear in


10$
mind that Industrial Drives is committed to helping
P "HELLO WORLD"
you. BDS5 software support is provided by:
B
1. Helping you organize your program.
5. Press the escape key to exit the Motion Link
2. Explaining proper programming practices. Editor.

3. Discussing BDS5 functions. 6. Follow the instructions on your computer


screen. Motion Link will ask you if you
Contact the local Industrial Drives sales application want to save your program. Enter "Y" and
representative. All Regional Sales Offices are listed give the name "TEST" as the name of your
in Appendix I of this manual. program.
4.3 EDITING
7. Motion Link will now ask you if you want to
transmit the program to the BDS5. Enter
Writing or modifying a program is called editing.
"Y."
There are two ways you can edit a BDS5 program.

4-6
BDS5 CHAPTER 4 - USER PROGRAMS

8. After the transmission is complete, you


should receive the interactive prompt (-->). P 1
Type:
and the BDS5 will print and go to line 1. If you want
RUN 10 to print the current line, then do not specify a line.
For example:
Your program should print:
P
HELLO WORLD
--> prints the current line. If you attempt to print a line
that is not in the program, such as, line 100 of a 10-
This should provide you with enough information to line program, the Editor will issue an error like:
enter the examples from this chapter. Read Chapter 3
for a complete description of Motion Link. BAD ENTRY

4.3.2 BDS5 Resident Editor 4.3.2.2 Next Line


If you enter an empty line, then the BDS5 goes down
If you are not using the BDS5 Editor, skip ahead to
one line in the program and prints that line. The
the next section, "Building a Program." The BDS5
empty line is entered by pressing only the enter key.
resident editor allows you to enter small programs
This makes it easy to move down through the
and make changes without Motion Link. Note that
program.
you can use this editor from Motion Link just as you
would use it from a terminal.
4.3.2.3 Password (PASS)
To enter the BDS5 Editor, type: The BDS5 Editor has password protection. The
password allows you to prevent the user program
ED from being changed. If the password is set, the
program cannot be changed, but it can still be
displayed. The password can be up to six characters
When you are in the Editor, the BDS5 will respond long. The default setting of the password is null (i.e.
with the editor prompt: empty), which means there is no password protection.
From the Editor, type:
E->
PASS
To exit the Editor, press the escape key.
and the BDS5 will ask you for the new password.
4.3.2.1 Editor Print (P)
The Print (P) command prints a program line (or If you do not want password protection, enter an
lines) then goes to that line. Each line in the program empty line. Note that the NEW command, discussed
memory has a number. Many editor instructions, later, also clears the password.
such as Print, expect you to specify the line number 4.3.2.4 Insert (I)
(or numbers) that applies to the instruction. Entering the Insert (I) command causes the Editor to
Type in the following example from the BDS5 enter the Insert mode. When you are in the Insert
Editor: mode, everything you type is put directly into the
program memory. You exit the Insert mode by
P BEG END pressing the escape key or entering an empty line.
For example, type in a line as follows. Type:
The BDS5 will print the entire program and go to the
end of the program. When you specify a range, the P BEG ;GO TO THE BEGINNING OF
command works for all the lines in the range. You THE PROGRAM
can specify one line. For example, type: I ;ENTER THE INSERT MODE

4-7
CHAPTER 4 - USER PROGRAMS BDS5

and the BDS5 will respond with: F

I-> and the BDS5 should respond with:

indicating that you are in the Insert mode. Now type: FIND WHAT? EDITOR?
F->
;TEST LINE FOR LEARNING ABOUT THE
;EDITOR In this example, the Find command has a default
"FIND WHAT" string. The default is the find string
Press the escape key to exit the insert mode. Type: from the last Find command. If you enter an empty
line, the next line with "EDITOR" will be found. If
P 1 you do not want to use the default string from the last
Find command, type in the word or words you want
to find this time. Pressing the escape key will abort
and the BDS5 should respond with:
the F command.
1 ;TEST LINE FOR LEARNING ABOUT If the Editor cannot find the specified word, it will
THE EDITOR respond with "NOT FOUND" and return to the edit
mode:
You can specify the line you want to insert directly.
For example: NOT FOUND
E->
I 5
4.3.2.6 Change (C)
enters the Insert mode. The next line you type is The Change (C) command is similar to the Find
entered directly into the program as the new line 5. command. However, Change allows you to change
Subsequent lines, 6, 7, and so on, follow line 5. the string you found. Also, Change only searches the
current line. Use the P command to go to line 1 and
4.3.2.5 Find (F) print the line you typed from the previous discussion
The Find (F) command will search down through the of the Insert command. Type:
program memory for a particular word, letter, or
string of characters. For example, the Find command P 1
can be used to find the word "EDITOR" from the
Insert command above. From the Editor, type: and the BDS5 should respond:

P BEG ;USE P TO GO TO 1 ;TEST LINE FOR LEARNING ABOUT


;TOP AND SEARCH ;THE EDITOR
F
Now use the C command to change "EDITOR" to
The BDS5 should respond with: "BDS5 EDITOR." Type:

FIND WHAT? C
F->
and the BDS5 will respond with:
then type:
CHANGE WHAT? "EDITOR"?
EDITOR C->

and the Find command will find line 1 since the word Again, "EDITOR" from the Find command is the
EDITOR occurs in that line. Now F can be used to default input. Press the return key to accept the
find the next line with "EDITOR." Type: default and the BDS5 will respond with:

4-8
BDS5 CHAPTER 4 - USER PROGRAMS

CHANGE TO WHAT? SIZE


C->
The BDS5 will respond with:
Now type:
65 % LEFT
BDS5 EDITOR
which means the available space is about 65%. If you
The BDS5 will change the line to read: try to enter a program larger than the BDS5 can store,
an error will be generated.

1 ;TEST LINE FOR LEARNING ABOUT 4.3.2.9 NEW


;THE BDS5 EDITOR The NEW command resets the password and clears
the program. The user program is stored in battery
C has defaults for both the "CHANGE WHAT" and backed-up RAM. Normally, the program is
the "CHANGE TO WHAT." This allows you to step remembered indefinitely. However, if power to the
through memory, changing each occurrence of one BDS5 is lost when it is executing an Editor command,
string to another string with minimal keystrokes. there is a small chance that the program will be
Like F, pressing the escape key will abort the process corrupted. This can happen, for example, if power is
and return to the Edit mode. lost during the Change or Delete command. In this
case, the BDS5 will generate a "USER PROGRAM
4.3.2.7 Delete (DEL) CORRUPT" error and the program cannot be
The Delete (DEL) command can be used to delete modified or run. If this happens, use the NEW
one line or a whole range of lines. command to clear the user program and reset the
corrupt error.
DO NOT TYPE THESE EXAMPLES!
DO NOT TYPE IN THIS EXAMPLE!
For example:
NEW
DEL 5 10 ;DELETE LINES
;5,6,7,8,9, AND 10 The NEW command also clears the editor password.
DEL 12 ;DELETE LINE 12
DEL ;DELETE CURRENT The >BDS command, which is discussed later in this
;LINE Chapter, will also reset the program so that it is no
longer corrupt, although it will not clear the
All of these delete instructions are valid. password.
4.4 BUILDING A PROGRAM
For an example that you can type in, if you entered
line 1 "TEST LINE FOR LEARNING ABOUT THE Programs are sequences of commands, most of which
EDITOR," then type in the following command to can also be executed directly from the keyboard. A
delete that line: program stores the sequences of these normal
commands. Examples of these commands are MI,
P 1 ;POINT AT THE FIRST LINE MA, and P (Print). However, in order for a program
;"TEST LINE..." to run properly, other commands, called program
DEL 1 ;DELETE THAT LINE control commands, are required. Examples of these
commands are GOTO and GOSUB.
Line 1 should be deleted.

4.3.2.8 Size
The BDS5 program memory has space for about
16000 characters. If you want to see how much
memory is left, type:

4-9
CHAPTER 4 - USER PROGRAMS BDS5

power while you were editing, this may indicate a


serious condition. Contact the factory.
4.4.1 Basic Commands
4.4.1.3 Break (B)
4.4.1.1 Labels The Break (B) command is the opposite of RUN; it
Labels are used to mark places in the program where stops program execution and normally returns to the
execution begins or continues. There are two kinds interactive state. The Break command does not stop
of labels: general purpose labels and dedicated motion. Profile commands are allowed to continue
labels. until they are complete. If you want to break the
program and stop motion, precede the Break
General purpose labels are numbers from 0 to 500 command with the Stop (S) command.
followed by a dollar sign ($). You can execute a
program that begins at a general purpose label with 4.4.1.4 GOTO
the RUN command. You can jump to a label from The GOTO command is used within the program to
within your program with the GOTO and GOSUB jump to a label. Before the following example of
commands. RUN, GOTO, and GOSUB are described GOTO can be done, another function of the Print (P)
later in this chapter. command should be explained. From the terminal,
type:
Dedicated labels each have specific functions.
Dedicated labels include alarms, auto programs, and
P "THIS PRINTS TEXT JUST LIKE I
the user error handler. These labels are letters or
TYPED IT IN"
words followed by a dollar sign. For example, A$ is
the A-Alarm label. Dedicated labels cannot be used
by the RUN, GOTO, or GOSUB commands. These and the result will be:
labels are discussed with multi-tasking later in this
chapter. THIS PRINTS TEXT JUST LIKE I TYPED IT IN

4.4.1.2 RUN When using the Print command, characters between


The RUN command is used to start the program from double quotes are printed back without modification.
the Interactive mode. For example, type:
Returning to the GOTO command, use the Editor
Insert command to enter the short program below:
RUN 3

If there are no errors, and if label 3 is in the user


program, then program execution begins at label 3.
The RUN command can execute all valid general
purpose labels. If the label is not in the program, an
error is generated and no part of the program is
executed. You cannot use the RUN command for
dedicated labels.

Before the program is run, the BDS5 searches the


entire program for some types of errors. If, after you
enter a RUN command, an error is detected, the
BDS5 will display the appropriate error message
together with the offending line. Also, RUN verifies
that the program has not changed since the last edit.
If the program has changed, a "PROGRAM
CORRUPT" error is generated. The program corrupt
error can be cleared, though this requires that the
entire program be erased with the Editor NEW
command or the >BDS command. If a "Program
Corrupt" error occurs, and it was not caused by losing

4-10
BDS5 CHAPTER 4 - USER PROGRAMS

2$ Exit the Editor and type:


P "AT LABEL 2"
GOTO 3 RUN 4
P "NEVER GOT HERE"
3$
P "AT LABEL 3" The result should be:
B
EXECUTING SUBROUTINE 5
Exit the Editor and type: RETURNED FROM SUBROUTINE 5

RUN 2 4.4.2 CONDITIONAL COMMANDS


The result should be: The BDS5 provides several conditional commands
which allow your program to make decisions.
AT LABEL 2 Conditional commands include ? (Quick-IF), TIL, IF,
AT LABEL 3 and ELIF. These commands all depend on
conditions. A condition is an arithmetic comparison
It is a good programming practice to avoid the use of of any two numbers, variables, or expressions. The
GOTO commands in favor of Block-IF's, Quick-IF's, BDS5 supports all 6 common types of arithmetic
and GOSUB's. This practice makes programs more conditions. Note that you should not use the =, >, or
readable and easier to modify. < symbols for these conditions. Instead, you must use
the following two-character codes:
4.4.1.5 GOSUB and RET
The third command that uses labels is GOSUB. The Table 4.1. BDS5 Conditions
GOSUB command goes to a subroutine at the
specified label. For example: GT Greater Than
GE Greater Than Or Equal To
GOSUB 66
LT Less Than

begins a subroutine at label 66. The RET command LE Less Than Or Equal To
returns from the subroutine and begins executing the EQ Equal To
program one line below the original GOSUB
command. NE Not Equal To

GOSUB's can be nested up to four levels.


4.4.2.1 QUICK IF (?) COMMAND
For example, type in the following program: The ?, or Quick IF, is a single-line command that
allows you to specify a condition, a command to be
executed if the condition is true, and another to be
4$ executed if the condition is false. The format of the ?
GOSUB 5 command is:
P "RETURNED FROM SUBROUTINE 5"
B
? condition TRUE-command : FALSE-command
;
5$
TRUE-command is executed if the condition is true
P "EXECUTING SUBROUTINE 5"
and FALSE-command is executed if the condition is
RET
false. Both TRUE-command and FALSE-command

4-11
CHAPTER 4 - USER PROGRAMS BDS5

are optional, although at least one must be present. execution if X1 is less than 100 and greater than -100.
You could use:
Some examples of the ? command are:
? X1 LT 100 : GOTO 20
? X1 GT 5 P "X1 > 5" : P "X1 <= 5" ? X1 GT -100 : GOTO 20
? VFB GT 3000 P "HIGH SPEED" : P B
"LOW SPEED" 20$
? 2*X2-5 LE X1/100 GOSUB 40
? X1/2*2 EQ X1 GOTO 5 However, those four commands can be replaced by
;GOTO 5 IF X1 IS just one nested ? command:
;EVEN. DO
;NOTHING IF X1 IS
;ODD. ? X1 LT 100 ? X1 GT -100 B
? I4 EQ 1 J 2000 ;I4 IS A JOG
;BUTTON Nesting two ? commands is the same as ANDing the
two conditions. The example above only executes the
Note that each condition has an exact opposite: EQ B command if both X1 < 100 and X1 > -100.
& NE, LE & GT, and LT & GE are all pairs of Nesting of ? commands is limited by the number of
opposites. Since the ? command allows both TRUE- entries and the maximum length of a line. BDS5
command and FALSE-command, you have your commands are limited to 15 entries (the example
choice of which command to use in the condition. above has 9 entries: ? , X1, LT, 100, ?, X1, GT, -
For example, the two ? commands that follow have 100, and B). Since each level of ? command nesting
exactly the same effect: requires 4 entries, you cannot have more than three
levels of nesting. Also, a ? command must be less
than 80 characters long since it must fit on a single
? X1 EQ 10 B : P "X1 OK" line.
;BREAK IF X1 > 10
? X1 NE 10 P "X1 OK" : B
;BREAK IF X1 > 10 4.4.2.3 TIL COMMAND
The TIL is a single-line command that allows you to
specify a condition and a command to be executed
The ? command can be used to make a loop counter.
repeatedly until that condition is true. The TIL
Suppose you want to go to subroutine 25 twenty
command has the following format:
times. You could just write GOSUB 25 twenty times,
but it would probably be better to use a program
TIL condition FALSE-command
loop. The following statements show how the ?
command can be used to control that program loop:
FALSE-command is repeatedly executed as long as
the condition is false. If the condition is true at the
X30 = 1 ;X30 IS THE beginning of the TIL command, then FALSE-
;LOOP COUNTER command is never executed. In this case, program
12$ ;THE LOOP BEGINS execution continues to the next step. An example of
;AT 12$ the TIL command would be to print a line to the
GOSUB 25 ;GO TO operator continuously until the variable PFB is
;SUBROUTINE 25 greater than 10000. This statement delays program
X30 = X30+1 ;INCREMENT THE execution until the condition is true and also refreshes
;LOOP COUNTER the display while the program waits:
? X30 LE 20 GOTO 12
;EXECUTE LOOP 20
;TIMES TIL PFB GT 10000 P "WAITING FOR
... ;CONTINUE PROGRAM PFB > 10000"

The TIL command can be used to simply delay your


4.4.2.2 Nesting ? Commands program, because the statement that follows the
You can nest one ? command inside another. For condition is optional. For example, this statement
example, suppose you want to break program delays execution, but does not refresh the display:

4-12
BDS5 CHAPTER 4 - USER PROGRAMS

TIL PFB GT 10000


Program execution continues after the
ENDIF command.
The TIL can be used to delay
program execution. Otherwise if... ELIF-condition #1 is TRUE,
NOTE
All commands in ELIF-block #1 are
More examples of the TIL command are: executed.

TIL I1 EQ ON ;DELAY EXECUTION No other blocks are executed, even if the


TIL I1 EQ ON P "PRESS INPUT #1" conditions that follow are true.

TIL SEG EQ 0 ;DELAY UNTIL Program execution continues after the


;MOTION STOPS ENDIF command.
TIL SEG EQ 0 P PFB
;PRINT UNTIL Otherwise if... ELIF-condition #2 is TRUE,
;MOTION STOPS
All commands in ELIF-block #2 are
4.4.2.4 IF, ELIF, ELSE, and ENDIF executed.
Commands No other blocks are executed, even if the
The IF command, together with ELIF, ELSE, and conditions that follow are true.
ENDIF, will allow you to conditionally execute large
blocks of commands. These commands are provided Program execution continues after the
because the ? command, which is limited to a single ENDIF command.
line, does not provide the most efficient means to
control blocks of commands. You can use the IF Otherwise...
command to write more readable, and thus less error
prone, programs. All commands in ELSE-block are executed
The format of the IF, ELIF, ELSE, and ENDIF Program execution continues after the
commands follows. Note that the conditions have the ENDIF command.
same format as the conditions for the TIL and ?
commands. Note also that block can indicate any Note that only the first block with a true condition is
number of commands: executed. The IF, ELIF, ELSE, and ENDIF
commands have several restrictions and options:
IF IF-condition
Block-IF
ELIF ELIF-condition #1
ELIF-block #1
ELIF ELIF-condition #2
ELIF-block #2
ELSE
ELSE-block
ENDIF

The above example shows two ELIF commands.


You can have any number of ELIF commands. The
operation of this example IF command is as follows:
If... IF-condition is TRUE, Table 4.2. Block-IF Restrictions and
Options
All commands in the Block-IF are executed.

No other blocks are executed, even if some


or all of the other conditions are true.

4-13
CHAPTER 4 - USER PROGRAMS BDS5

Each IF/ELIF/ELSE/ENDIF set...


IF PFB GT 50 ;BEGIN BLOCK-IF
...must have one and only one IF. O1 OFF ;O1 MEANS "WITHIN
...may have any number of ELIF’s. ;RANGE"
P "PFB EXCEEDED MAXIMUM"
...need not have any ELIF’s. ;PRINT ERROR
...may have one ELSE. ;MESSAGE
ELIF PCMD LT -50 ;CHECK THE
...need not have an ELSE. ;NEGATIVE LIMIT
...must have one and only one ENDIF. P "PFB EXCEEDED MINIMUM"
;PRINT ERROR
;MESSAGE
4.4.2.5 IF vs. ? O1 OFF ;O1 MEANS "WITHIN
You can use ? in place of IF commands. For ;RANGE"
example, clamping applications make decisions based ELSE ;IF HERE,
on the final position of the motor after a move. For THEN ;WITHIN
our example, assume that the PFB should be between RANGE
50 and -50. If PFB is within range, the program O1 ON ;TURN ON O1
should turn output O1 on and print an appropriate P "PFB WITHIN RANGE"
message. If it is out of range, O1 should be turned off ;PRINT MESSAGE
and a message should be printed. The table below ENDIF ;END OF
shows the desired operation: BLOCK-IF

This example could have been written with ?


Table 4.3. Desired Operation of Program commands as the following program shows. Notice
Example that the program requires more lines, uses 3 labels,
PFB RANGE O1 MESSAGE TO PRINT and is harder to read (that is, less intuitive):

PFB > 50 OFF PFB TOO LARGE ? PFB LE 50 GOTO 10$


PFB < -50 OFF PFB TOO SMALL ;START OF
;"BLOCK"
-50 < PFB < 50 ON PFB WITHIN RANGE O1 OFF ;EXECUTE BLOCK
;IF PFB>50
P "PFB EXCEEDED MAXIMUM"
GOTO 20$ ;DONE--GO TO END
The IF, ELIF, ELSE, and ENDIF commands 10$
implement the desired functions: ? PFB GE -50 GOTO 11$
;EXECUTE BLOCK
;IF PFB<-50
P "PFB EXCEEDED MINIMUM"
O1 OFF
GOTO 20$ ;DONE--GO TO END
11$ ;GET HERE IF
;WITHIN RANGE
O1 ON
P "PFB WITHIN RANGE"
20$ ;END OF "BLOCK"

You can choose whether to use ? or the IF command


when you are writing your program. You should
choose the command that results in the most readable
form. For example, if multiple commands are to be
executed, the IF command's block structure sets off
the commands and avoids the use of a GOTO and a

4-14
BDS5 CHAPTER 4 - USER PROGRAMS

label. On the other hand, if a single instruction is to been executed, all ENDIF's are automatically
be executed, the ? may be more readable. Usually, executed. This means that you cannot jump to a label
one form results in less program space or faster within any IF-THEN-ELSE structure. Note that
execution, and this may dictate which to use. jumping out of a control structure in such a manner is
However, if space or timing are not critical, use the a poor programming practice and should be avoided.
most readable form. Also, you may not jump to a label within an IF-
THEN-ELSE from outside the structure.
4.4.2.6 Nesting IF commands
You can nest IF commands. For example, the You cannot GOTO the middle
following program shows two levels of nesting: of an IF/ENDIF set. You
should never execute a RET
55$ from between an IF and
IF X1 GT 0 NOTE ENDIF.
IF X2 GT 0
P "BOTH X1 AND X2 > 0"
ELSE
P "ONLY X1 GT 0" 4.5 USING THE GENERAL PURPOSE
ENDIF INPUTS
ELSE
IF X2 GT 0 General purpose inputs can be used to control the
P "ONLY X2 GT 0" program. From Chapter 3 you may recall that these
ELSE inputs can be referred to one at a time using variables
P "NEITHER X1 NOR X2 > 0" I1-I16, or collectively IN. If the program must wait
ENDIF for a particular input to be on or off before
ENDIF continuing execution, the TIL command can be used:
B
TIL I5 EQ 0
You can nest IF commands indefinitely. You should
be careful to include all of the ENDIF's to close each
level of nested IF. All of the restrictions and options If this statement is executed from the program, the
that were listed earlier as applying to IF commands program will delay execution until I5 is 0.
also apply to nested IF's. The indentation shown
above is not required, but is present to make the If the program must wait for many inputs to be on or
program more readable. The BDS5 ignores the off, then the TIL command can be expanded. For
indentation. example, if inputs 1, 4, 5, and 6 must all be on, either
of the following TIL instructions can be used:

4.4.2.7 IF's with GOTO and GOSUB TIL I1+I4+I5+I6 EQ 4


You can use the GOSUB command from within a
;THIS USES
Block-IF, even if you have another Block-IF in that
;ALGEBRAIC MATH
subroutine. In this case, the IF in the subroutine is TIL I1&I4&I5&I6 EQ 1
like a nested IF. However, be careful to return from ;THIS USES
the subroutine after you have executed the ENDIF. ;LOGICAL MATH
You should never return from a subroutine from ; BOTH WORK
between IF and ENDIF. Finally, you may use a
GOTO to jump completely out of an IF-THEN-ELSE
control structure. When a GOTO is executed after an It is slightly more complicated if the program must
IF has been executed, but before an ENDIF has wait for some inputs to be on and others off. For
example, if inputs 1, 4, and 5 must be on, and input 6
must be off, the following TIL instructions can be
used:

TIL I1+I4+I5+(1-I6) EQ 4
;ALGEBRAIC MATH

4-15
CHAPTER 4 - USER PROGRAMS BDS5

TIL I1&I4&I5&(1-I6) EQ 1
I/O Number 16 15 14 13 12 11 10 9
;LOGICAL MATH
I/O On? N N N N N N N N
Notice the use of (1-I6). This is a logical NOT, Binary Mask 0 0 0 0 0 0 0 0
because if I6 equals 1, then (1-I6) is 0, and if I6
equals 0, (1-I6) is 1. The logical NOT is useful when
checking to see if inputs are off. Since the condition must be in hex or decimal, it can
be expressed as:
If more than a few inputs must be tested, then
referencing them one at a time can be cumbersome. 0000000000011001 (BINARY) equals 19 (HEX) or
As an alternative, IN can be used. This can be 25 (DECIMAL),
demonstrated with the example above. If the program
must wait for inputs 1, 4, and 5 to be on and input 6 which equals 1+8+16 (DECIMAL).
to be off, logical math can be used to mask the inputs
that are not supposed to be tested: inputs 2, 3, and 7- Now the mask and the condition can be used in a TIL
16. A mask is a binary word with a 0 for each input instruction in the format:
that is not tested and a 1 for each that is. In this
example, the mask would be: TIL IN&mask EQ condition

For our example,


Input Number 8 7 6 5 4 3 2 1

Test Input? N N Y Y Y N N Y TIL IN&39H EQ 19H ;THIS USES HEX


;CONSTANTS
Binary Mask 0 0 1 1 1 0 0 1

or
Input Number 16 15 14 13 12 11 10 9
TIL IN&57 EQ 25 ;THIS USES
Test Input? N N N N N N N N
;DECIMAL. BOTH
Binary Mask 0 0 0 0 0 0 0 0 ;WORK.

Since the mask must be in hex or decimal, it can be This accomplishes the same function as the TIL
expressed as: instruction which refers to inputs one at a time.
However, using the IN word allows the function to be
0000000000111001 (BINARY) equals 39 (HEX) or done in a less cumbersome manner.
57 (DECIMAL),

which equals 1+8+16+32 (DECIMAL). 4.6 INTERFACING WITH THE


Now that the mask is known, the condition must be
OPERATOR
determined. The condition is formed much like the
mask. In this case, there is a binary 1 for each input
This section covers interfacing via the serial port
that must be on and a binary 0 for each input that is
(Connector C5). Often, it is necessary to have the
either off or masked:
BDS5 send information to the operator or ask the
operator for information. For example, it may be
useful to output speed and position, or ask the
I/O Number 8 7 6 5 4 3 2 1 operator for a new speed command. This is easily
accomplished using BDS5 serial I/O instructions.
I/O On? N N N Y Y N N Y
Binary Mask 0 0 0 1 1 0 0 1

4.6.1 PRINT (P)


The PRINT (P) command prints text and variables to
the terminal. Text and variables may be freely

4-16
BDS5 CHAPTER 4 - USER PROGRAMS

intermixed, limited only by the 80-character You can use print formatting to convert the program
maximum instruction length. The following units (RPM) to KRPM with the following print
command prints the speed on the terminal: command:

P "SPEED = " VFB " RPM" P "SPEED = " VFB[5.3] " KRPM"

Assuming VFB is 1962, the BDS5 will respond with: Assuming VFB was 1962, this command would
produce:
SPEED = 1962 RPM
SPEED = 1.962 KRPM.
Note that the text must be enclosed by double quotes,
and that text and/or variables must be separated by at The ".3" which follows the "5" in the format causes
least one blank space. the BDS5 to insert a decimal point three places from
the right of the number. To the operator, this is more
4.6.1.1 Printing Decimal Numbers convenient, though the programmer still must work in
Variables are normally printed as decimal integers in integer units.
a field which is 12 characters wide. Formatting can
be used to adjust the field width or to print decimal You also have the option of printing fewer than all
points. the digits which follow the decimal point. This also
can be specified in the format. For example, suppose
To change the width of the field, follow the variable you only wanted to print one digit after the decimal
name with the width enclosed in square brackets ([ ]). point. The print command from above would be
Referring to the above example, changed to limit the number of digits to be printed:

P "SPEED = " VFB[5] " RPM" P "SPEED = " VFB[5.3.1] " KRPM"

will cause the BDS5 to print: This command would produce:

SPEED = 1962 RPM SPEED = 1.9 KRPM


.
If you try to print a number and do not have enough So the general format for decimal format is:
space in the format for the number, then the BDS5
[OVERALL WIDTH.DECIMAL POSITION.PRINTABLE DIGITS]
will fill the format width with X's. For example,
For the example above ([5.3.1], the overall width was
P "SPEED = " VFB[3] " RPM" 5, the decimal position was 3, and the number of
printable digits after the decimal was 1. You can
will result in: leave off any of these three specifications. The
overall width defaults to 12, the decimal position to
SPEED = XXX RPM zero, and the printable digits to the value of the
decimal position.
(again, assuming the speed is 1962 RPM).
4.6.1.3 Printing Hex Numbers
4.6.1.2 Printing Decimal Points To print a variable in hexadecimal, follow the
You can also use the BDS5 to print a decimal point. variable name with an H enclosed in square brackets
The BDS5 performs calculations with integers ([H]). The variable will be printed in a field 9
because it is much faster than floating point math. characters wide, including an appended "H,"
However, it is often desirable to convert integers to indicating hex. The default field width of 9 can be
floating point numbers, especially when printing out changed by following the "H" with the desired field
information for the operator. This allows you to width. For example:
make the integer math of the BDS5 transparent to the
operator. For our example, suppose you would prefer
to print out the speed in KRPM (thousands of RPM).

4-17
CHAPTER 4 - USER PROGRAMS BDS5

X1 = 255 Similarly,
P "X1 = " X1[H]
P "X1 = " X1[H3] XS1 = 0
P "USER SWITCH #1 IS " XS1[S]
will cause the BDS5 to print:
results in:
X1 = FFH
X1 = FFH USER SWITCH #1 IS OFF

Two's-complement notation is used when printing in In addition, you can print a switch as Y or N if you
hex. This means that printing negative hex values follow the switch with a bracketed Y ([Y]). For
requires the full field width of 9 characters. When example,
printing in hex format, the field must be wide enough
to include the appended "H." P XS1[Y]

4.6.1.4 Printing Binary Numbers will print either Y or N depending on whether XS1 is
To print a variable in binary format, follow the 1 or 0, respectively. This format is useful with the
variable name with a B enclosed in square brackets input command which we will discuss later. The
([B]). The variable will be printed in a field 33 input command allows the operator to respond with Y
characters wide, including an appended "B," or N and stores 1 or 0 in a BDS5 variable. This print
indicating binary. All of the leading zeros will be format allows you to print the previous answer on the
printed. The default field width of 33 can be reduced screen the way it was entered.
by following the "B" with the desired field width.
For example:
4.6.1.6 Printing Expressions
The P instruction is not restricted to printing only
X2 = 127 variables. In general, any numeric expression can be
P "X2 = " X2[B] formatted and printed. All the following examples
P "X2 = " X2[B10] are valid:

will cause the BDS5 to print: P "MINUS 1 IN HEX IS " -1[H]


P X1+X3 " IS THE RESULT OF ADDING
X2 = X1 AND X3"
0000000000000000000000001111111B P "SENSE OF DIRECTION IS " DIR*2-1[2]
X2 = 001111111B P "DISTANCE TO GO IS " PFNL-PFB[.3]
"INCHES"
P "HIGH BYTE OF IN IS "
(IN&0F0H)/10H[H3]
4.6.1.5 Printing Switches
Formatted printing can also be used to display
switches (any variable with a value of 0 or 1) either as
Y or N or as on or off. This allows you to 4.6.1.7 Printing ASCII Characters
communicate with the operator better than just The BDS5 will also convert numbers to ASCII format
printing 0 or 1. The switch format (on or off) is before printing. You can do this by following the
printed with a bracketed S ([S]) following the variable or expression with a bracketed C ([C]). This
variable: will cause the BDS5 to print out the character

XS1 = 1
P "USER SWITCH #1 IS " XS1[S]

These commands would result in:

USER SWITCH #1 IS ON

4-18
BDS5 CHAPTER 4 - USER PROGRAMS

for which the number is an ASCII code. For pressing the G key). As Appendix B shows,
example, <Control>G produces 07 or the ASCII bell. You can
use the BDS5 to produce unprintable characters by
X6 = 65 preceding the appropriate character with the carat (^)
P "THE NUMBER " X6[2] " IS THE ASCII to signify an unprintable character. For example, the
CODE FOR " X6[C] following BDS5 command will sound the bell on
your terminal:
will result in:
P "^G"
THE NUMBER 65 IS THE ASCII CODE FOR A
You can also use the character format to print control
If the number is greater than 127 (that is, the eighth characters. For example:
bit is set), the BDS5 removes the eighth bit before
transmitting the character. For example: P 07[C]

P 65[C] " IS THE SAME AS " 128+65[C] also sounds the bell. The character format allows you
to print variables as ASCII codes. However, the
since the BDS5 removes the eighth bit of the easiest way to print control characters is normally
expression on the right, which has the end effect of with the carat (^). One reason for this is that control
reducing the number by 128. If the number is larger characters can be within text strings. For example:
than 255, the BDS5 divides the variable or expression
into four bytes and prints them out separately. For P "BELL = <CONTROL>G. ^G SOUNDS A
example: BELL"

X2 = If you use the carat to specify an invalid control


256*256*256*65+256*256*65+256*65+65 character, such as ^1, the BDS5 will print the carat
P X2[C] and the 1 ("^1"). Only ^A to ^Z, ^[, ^/, ^], ^^ and ^_
are allowed.
prints:
4.6.1.9 Cursor Addressing
AAAA Many displays allow you to address the cursor. For
example, the DEP-01 from Industrial Drives is an 80
since the number stored in X2 is equivalent to 4 bytes character display that allows you to address any
of 65. location from 0 (leftmost top line) to 79 (rightmost
bottom line). First, send ASCII 27 ("^[") followed by
The default field width of the character format is 4, the address of ASCII 0 ("^@") through ASCII 79
and you can change the field width by following the C ("O"). For example, you can address the rightmost
with the desired format. space of line one (space #39) with the control
character sequence ^['. The ^[ specifies cursor
addressing and "'" (ASCII 39) specifies space #40.
4.6.1.8 Printing Control Characters
The BDS5 uses the standard ASCII character set as One problem with cursor addressing is that the BDS5
shown in Appendix B. There are unprintable cannot transmit ASCII 0 (^@). This is a common
characters, such as the bell (ASCII 7) and carriage limitation for terminals. If you want to address space
return (ASCII 0DH). These characters have an effect #0, you must first address space #1, then transmit a
on the terminal but do not print anything on the backspace (ASCII 8 or "^H"). For example, if the
screen. Unprintable characters range from ASCII 1 following line is executed from the user program
to 1FH. The BDS5 cannot print ASCII 0. while the BDS5 serial port is connected to the DEP-
01, "X" will be printed on space #0.
As Appendix B shows, each unprintable character can
be produced with a control sequence. For example,
most terminals will sound a bell when you press P "^[^A^HX MARKS THE FIRST SPACE"
<Control>G (hold down the control key while

4-19
CHAPTER 4 - USER PROGRAMS BDS5

Rotate the motor shaft by hand so that the velocity


4.6.1.10 Printing BDS5 Status (PS) feedback changes. Press the escape key and enter the
The PRINT STATUS (PS) command is like the P Break command to break program execution. Notice
command except that it appends the BDS5 status to that the velocity is continuously updated, but the line
the end of the printed line. There are five different appears to be stationary. A similar program with the
status words that can be printed with the PS P or PS commands would cause the lines to scroll to
command. Each is listed with its meaning: the top of the screen.

Table 4.4. Printing BDS5 Status


4.6.3 INPUT
Status Explanation So far, printing information to the operator has been
discussed. This section will discuss how to prompt
OFF BDS5 is OFF
the operator for information using the INPUT
READY BDS5 is ready, but REMOTE is command. The INPUT command causes the BDS5
OFF. to print a message to the terminal and wait for a
response from the operator. The input information
ACTIVE BDS5 is active, but no motion.
can be stored in any programmable variable. This
FAULT BDS5 has a fault condition. allows the operator to change or enter information
without making any changes to the program itself.
JOG BDS5 is jogging.
You can only execute the INPUT command from the
PROFILE BDS5 is executing profile. user program.
GEAR BDS5 is in gear mode.
Type in the following example INPUT instruction:

You can use all formats and combinations with PS INPUT "ENTER NEW SPEED : " X2
that you did with P. These results are identical except
that the BDS5 status is appended onto the line.
This causes the BDS5 to print :

ENTER NEW SPEED :


4.6.2 REFRESH (R & RS) Commands
Type the new speed into the terminal. After you are
The REFRESH commands, R and RS, are identical to prompted, enter a number and press the enter key.
P and PS, except that R and RS send only a carriage The number you enter is stored in the variable X2. If
return. The P and PS commands print lines that end you press the enter key without entering a number,
with linefeed and carriage return pairs. R and RS the variable X2 is left unchanged. Use the Print
commands display lines that can be overwritten. command to display the new value of X2:
The following example demonstrates how the
REFRESH commands work. Type in this example P X2
from the Editor:

7$ 4.6.3.1 INPUT Limits


RS "VELOCITY FEEDBACK=" VFB You can also specify an upper and lower limit for the
GOTO 7 operator entry. If the above INPUT instruction were

Now exit the Editor and type: written as:

RUN 7 INPUT "ENTER NEW SPEED : " X2 10


100

4-20
BDS5 CHAPTER 4 - USER PROGRAMS

the BDS5 would force the operator to input a value


between the specified low limit (10) and high limit
(100). If the input is invalid or outside the range, an 4.6.4 SERIAL Switch
error message is sent and the operator is prompted
again.
You can use the SERIAL switch to make sure that the
serial port is not busy before you execute a command.
The limits can be constants, as shown above, as well
If SERIAL is on, the serial port is ready. Otherwise,
as any valid numerical expression. If the limits are
the serial port is not ready. For example, suppose you
outside the variable's normal range, they are ignored.
do not want to execute an INPUT command if the
If they are not specified at all, the variable's normal
serial port is busy. It might be busy from a print
range is used as the limit. For example, the limits on
command, or from a previously executed input
ACC are 0 and AMAX. Type in this command:
command. In that case, use these commands:

X1=ACC ;STORE ACC


? SERIAL EQ ON INPUT "ENTER SPEED"
INPUT "ENTER NEW ACC : " ACC -1000
X1
1000

The BDS5 knows that the lower limit on ACC is 0 so


that no negative numbers will be accepted. If AMAX
is less than 1000, AMAX will be the upper limit. 4.7 IDLING COMMANDS
Otherwise, 1000 will be the upper limit. If you
specify limits that are outside the variable's program There are four idling commands: Hold (H), Dwell
limits, the BDS5 uses the program limits. Appendix (D), Wait (W), and INPUT. This section discusses
E lists all variables and their program limits. the first three. The INPUT command was discussed
above. Hold, Dwell, and Wait cause the user
program to wait for an event before executing the
4.6.3.2 INPUT and Decimal Point
next command. Hold waits for switches, Dwell waits
You can use the INPUT to prompt the operator for
for a timer, and Wait waits for a motion segment.
values that include a decimal point. You must specify
the number of characters after the decimal point.
This is the only way you can enter numbers having a
fractional part into the BDS5. For example, suppose 4.7.1 HOLD (H)
your user position units are mils (0.001 inches). You
can prompt the operator for any position in inches The HOLD command waits for a switch to be either
with the INPUT. The following example stores the on or off. You specify the HOLD command with the
results of the INPUT command in X1. Enter this switch and the desired state. For example,
short program in your BDS5; then type RUN 44:
H I1 ON ;HOLD UNTIL INPUT
44$ ;I1 IS ON
INPUT "ENTER NEW POSITION: " X1[3] H O2 OFF ;HOLD UNTIL
P "NEW POSITION = " X1[.3] OUTPUT O2 IS OFF
P "ACTUALLY, X1= " X1 H TRIP1 ON ;HOLD UNTIL PFB >
B ;PTRIP1

Notice the bracketed 3 following X1 in the INPUT Use the BDS5 to enter the following program:
command. This causes the operator input to be
multiplied by 1000 (103) before it is stored in X1. 29$
The print statements that follow display X1 in inches P "TURN I1 ON"
(as the operator would prefer to see it), then in mils H I1 ON
(as the BDS5 motion commands process it). P "I1 IS NOW ON"
B

4-21
CHAPTER 4 - USER PROGRAMS BDS5

Now exit the Editor, turn input I1 off, and observe the W 0 ;WAIT FOR MOTION TO
action of the HOLD command by typing: ;STOP
W 1 ;WAIT FOR MOTION
RUN 29 ;COMMAND TO BEGIN
W 14 ;WAIT FOR SEGMENT 14
You can Hold for any switch except REMOTE and ;(MACRO MOVE)
user switches (XS11-XS50). User switches XS1-
XS10 are allowed with the HOLD command. These commands are similar; W 0 delays program
execution until the last motion command entered has
stopped. W 1 delays program execution until the last
motion command entered has started. W 14 waits for
4.7.2 DWELL (D)
segment 14 of the last motion command to begin.
Sometimes it is desirable to delay execution for a
In the example below, the WAIT command is used to
specified amount of time. The Dwell (D) command;
delay the calculations of the third move until the
is the easiest way to do this. The delay is specified in
second move has begun. The use of W 1 here allows
milliseconds. For example:
the third move to be calculated while the second is
being executed. Do not type in the following
D 1000 ;DWELL 1000 example--it is meant to run as a part of the user
;MILLISECONDS program.

delays execution for 1000 milliseconds or 1 second. MI 10000 100 ;BEGIN THE FIRST
The Dwell command can be demonstrated by typing ;MOVE
in the following simple program: MI 10000 200 ;CALCULATE THE
;SECOND MOVE
6$ ;WHILE
P "BEGIN 5 SECOND DWELL" ;THE FIRST IS IN
D 5000 ;PROGRESS
P "END 5 SECOND DWELL" W 1 ;DELAY PROGRAM
B ;EXECUTION UNTIL
;THE SECOND
Now exit the Editor and type: ;MOVE HAS
;STARTED
MI 10000 300 ;CALCULATE THE
RUN 6 ;THIRD MOVE AND
;PREPARE IT FOR
The result should be: ;EXECUTION

BEGIN 5 SECOND DWELL The WAIT (W) command and synchronization will
END 5 SECOND DWELL be discussed in more detail later in this chapter.

with 5 seconds between lines being printed. Dwells


can be up to 2,147,483,647 milliseconds or about 25
days.
4.7.3 WAIT (W)
When using Move commands, it is often necessary to
synchronize the execution of your program to motion.
The Wait (W) command can be used to wait for the
specified motion segment. Examples of the Wait
command are:

4-22
BDS5 CHAPTER 4 - USER PROGRAMS

4.8.3 END Command


4.8 MULTI-TASKING
Tasks are normally terminated with the END
Multi-tasking is an important feature of the BDS5. command. END signifies the end of the task, whereas
Multi-tasking allows you to write separate tasks that Break (B) implies that all tasks stop executing. For
run concurrently, which means more than one task example, if you end an alarm with the Break
executes at the same time. For example, you can command, the entire program stops running and the
write a program with two separate tasks: one to ask BDS5 returns to the Interactive mode. However, if
the operator questions and another to command you end an alarm with the END command, the alarm
motion. These two tasks can run independently so stops, but the other tasks continue running.
that while the operator is answering questions, the
motion continues.
4.8.4 Enabling and Disabling Multi-
Each task has a priority level. The BDS5 has 6
different task levels as shown on "Multi-Tasking tasking
Overview." High priority means that if two tasks
both need to run at the same time, then the commands Multi-tasking is always enabled when a program is
from the task with highest priority will execute first. running. For example, if you have a program that
For example, Alarm A has the highest priority. If starts at 55$ and has 2 alarms, then the alarms will be
Alarm A and Alarm B are "fired" at the same time, active if you type:
Alarm A will run until it is complete; then Alarm B
will run until it is complete. RUN 55

If your program ends with a Break command, then the


4.8.1 Multitasking and Autobauding program will stop executing and multi-tasking will be
disabled; that is, the BDS5 will return to the
If you set the BDS5 to autobaud, multi-tasking will Interactive mode. If your program ends with an END
not be enabled until communications have been command, then only the task level that executed the
established. This means that the BDS5 will not END will stop executing; other tasks will continue
operate if a terminal or computer is not present. executing. If there are no other tasks that are
Therefore, you normally will want to disable executing, then the BDS5 does not return to the
autobauding by turning ABAUD off. Interactive mode, but instead becomes dormant. In
this case, multi-tasking remains enabled. For
example, alarms will continue to be serviced.
Turn ABAUD off if you plan to
use multi-tasking. The BDS5 If you want to enable multi-tasking without running a
will remember that ABAUD is particular program, type:
NOTE off through power-up.
RUN

4.8.2 MULTI without entering a label.

If you want to disable Alarm C, the variable input


routine and background, type:

MULTI OFF

For example, if you have a time critical section of


code, you may turn MULTI off at the beginning of
the section and then back on at the end of the section.

4-23
CHAPTER 4 - USER PROGRAMS BDS5

Table 4.5. Multi-Tasking Overveiw

How to Typical Uses


Task Level Task Name Task Labels Start Task of Task
1 ALARM A A$ Hardware or
(Highest Priority) Software Switch

2 ALARM B B$ Hardware or Monitor Inputs


Software Switch

3 ALARM C C$ Hardware or
Software Switch

”ATTN” from Prompt Operator


4 VARIABLE VARIABLE$ DEP-01 or ^V for Input
INPUT from a PC or a
Terminal

POWER-UP Power-up BDS5 Initialize BDS5 for


PROGRAM POWER-UP$ and Establixh Application
Comminication

Manual Switch Off Run One Cycle of


AUTO AUTO$ and Positive Auto Program
PROGRAM Transition Of
5 Cycle Input

MANUAL Manual Switch On Run Manual


PROGRAM MANUAL$ Program
Continuously

GENERAL Run <LABEL> General Purpose


PURPOSE 0$ - 500$ Programs
PROGRAM

USER ERROR ERROR$ Any Error That Gracefully Exit on


HANDLER Breaks Execution Error Condition

6 BACKGROUND All Other Tasks Print Messages to


(Lowest Priority) PRINT AND BACKGROUND$ Idle the Screen
MONITOR

4-24
BDS5 CHAPTER 4 - USER PROGRAMS

The following two tables show how to turn multi- When the first move finished, the first task would no
tasking on and off: longer be idled, and thus would proceed.

Consider the following program. It has two tasks: a


Table 4.6. How to Enable Multi-Tasking
routine starting at 1$ (task level 5) and a background
1. Run any label (Type “RUN <label>”). task starting at BACKGROUND$ (task level 6). The
background task is the lowest priority task and will
2. Run multi-tasking (Type “RUN”). only execute when the general purpose task is idle. In
3. Include a POWER-UP$ label and power-up. the following example, the task is idle between the
second and third motion command. Use the BDS5
Editor to enter this program.
Table 4.7. How to Disable Multi-Tasking
;TASK LEVEL 5
1. Execute a Break from your program.
2. Enter a Break from the Monitor mode. 1$ ;MAIN PROGRAM
EN
3. Cause an error that breaks execution. MI 10000 10 ;FIRST MOVE
P "FIRST MOVE PROCESSED"
MI 10000 10 ;SECOND MOVE
P "SECOND MOVE PROCESSED"
4.8.5 Idling MI 10000 10 ;THIRD MOVE
P "THIRD MOVE PROCESSED"
Idling is a necessary part of multi-tasking. So far in B
our discussion, higher priority tasks run until they are ........................
complete. Actually, commands from the highest
priority task that is not idle execute. For example, if ;TASK LEVEL 6
an alarm cannot run because it is waiting for some
condition (such as waiting for motion to stop), it is BACKGROUND$
idle. If a task is running, and it becomes idle, then a P "UPPER TASK IDLED"
lower priority task can run until the higher priority D 250 ;DWELL 0.25
task is no longer idle. A task can be idled with pre- SEC.
execution idling and post-execution idling. END

4.8.5.1 Pre-Execution Idle Apply DC bus power to your BDS5 and type:
A task can be idled by waiting for a condition before
executing a command. This is called a "pre-
RUN 1
execution idle" because the task is idled before
executing the command that causes the idle. There
are two conditions that can cause a pre-execution The result should be:
idle. A task about to execute a motion command (MI,
MA, or MCGO) will be idled if the motion buffer is FIRST MOVE PROCESSED
full. Also, a task about to execute a printing SECOND MOVE PROCESSED
command (P, PS, R, RS, or INPUT) will be idled UPPER TASK IDLED
until the previous printing command is finished. UPPER TASK IDLED
...
For example, the BDS5 can store up to two MI or UPPER TASK IDLED
MA commands. This was called buffering in Chapter UPPER TASK IDLED
3. This means that if you wrote a task with three MI THIRD MOVE PROCESSED
commands in a row, then the third MI command
could not be executed until the first move was The first and second moves are processed
complete. So that task would be idled until the first immediately. Then task level 5 is idled while the first
move finished. If there was another, lower-priority move finishes. While task level 5 is idle, the
task, it would execute until the first move finished. background task executes over and over, printing the
simple message on the screen.

4-25
CHAPTER 4 - USER PROGRAMS BDS5

4.8.5.2 Post-Execution Idle UPPER TASK IDLED


A task also can be idled by waiting for a condition ALL MOTION STOPPED
after executing a command. This is called a "post-
execution idle" because the task is idled after Note that task level 5 immediately processes the
executing the command that causes the idle. move and then is idled until motion stops. While task
Commands that cause post-execution idling are called 5 is idled, the lower level, background task executes
idling commands. There are four idling commands: continuously.

Table 4.8. Four Idling Commands 4.8.5.3 Avoiding Idling


You can avoid idling the BDS5 by using the TIL
Wait (W) command in place of Dwell, Wait, or Hold. For
example,
Dwell (D)
Hold (H) TIL SEG EQ 0
Input (INPUT)
is the same as:
For example, you can modify the above program to
make one move, then run the background routine W 0
until motion has stopped. Use the BDS5 Editor to
enter this program. except the TIL command locks out lower priority
tasks since it is not an idling command. The Wait
;TASK LEVEL 5 command allows lower level tasks to execute since it
is an idling command.
1$ ;MAIN PROGRAM
EN
MI 10000 10 ;START MOVE 4.8.6 Alarms (Task Levels 1-3)
P "MOVE PROCESSED"
W 0 ;WAIT FOR MOVE Alarms are the highest priority tasks. There are three
P "ALL MOTION STOPPED" alarms: A, B, and C. A is the highest priority and C
B is the lowest. Normally, alarms are used to monitor
hardware inputs, but they can monitor any user
........................ switches (XS1 - XS50) and MANUAL. Using an
alarm relieves you of having to write your program so
;TASK LEVEL 6 that it checks switches. After you define an alarm,
the BDS5 will watch the switch and automatically
BACKGROUND$ execute the code that you specify, should the alarm
P "UPPER TASK IDLED" "fire."
D 250 ;DWELL 0.25
SEC. Alarms are specified on one line, along with the
END switch that triggers the alarm and the transition. For
example, the A alarm can be defined to fire when
Apply DC bus power to your BDS5 and type: input I1 transitions from off to on with this command:

RUN 1 A$ I1 ON

The result should be: You can follow the alarm definition with the code
MOVE PROCESSED that you want to execute when the alarm fires. For
UPPER TASK IDLED example, if I1 turned on, it might indicate an error
UPPER TASK IDLED condition. In this case you might disable the BDS5,
... turn off all outputs, and break execution. The
UPPER TASK IDLED following program would accomplish this using the A
alarm.

4-26
BDS5 CHAPTER 4 - USER PROGRAMS

4.8.7 Variable Input (Task Level 4)


A$ I1 ON ;DEFINE THE
;ALARM The variable input task is the next highest priority.
DIS ;DISABLE THE BDS5 Normally, the variable input task is used to prompt
OUT = 0 ;TURN OFF ALL the operator for input, while still allowing the main
;OUTPUTS section of the program to continue. For example, the
B ;BREAK EXECUTION operator could be entering a new distance while the
main program continues executing the program using
the old distance. The variable input task is similar to
an alarm, except that it is fired upon receiving a
4.8.6.1 Restrictions of Alarms special character from the terminal or computer,
Alarms have many restrictions. 1) You cannot which is ^V (control-V), or ASCII 16H. The
execute GOTO, GOSUB, or RET commands from an "ATTN" button on the DEP-01 Data Entry Panel
alarm. 2) You cannot execute a label. 3) You cannot from Industrial Drives also transmits a ^V to fire the
use the REMOTE switch to fire an alarm. 4) Alarms variable input task.
must be self-contained programs--they cannot "mix"
with your program. 5) They must be terminated with The variable input task begins with VARIABLE$.
an END, Kill (K), or Break (B) command. 6) Also, if You can then follow that label with various
all three alarms are present, the execution time of statements, usually printing and input commands. For
your program increases by about 3%. Most other example, enter the following program:
commands are allowed for alarms, including motion
commands and Block-IFs.
;TASK LEVEL 4

4.8.6.2 Printing with Alarms VARIABLE$


You must be careful when executing print commands P "X1 IS" X1
from alarms. If you need to print from an alarm task, INPUT "INPUT NEW VALUE OF X2" X2
always print after the critical commands have been P "X1 IS NOW " X1
executed. This is necessary because the input B ;END EXECUTION
command from a lower task will stop any task, even a
higher priority task, from printing. The input ........................
command stops all printing until the operator
responds with a new value. For example, write your ;TASK LEVEL 5
program like this:
10$
B$ HOME ON ;FIRE ALARM WITH X1 = 0
;HOME 11$
O=0 ;TURN OFF X1 = X1+1
;OUTPUTS GOTO 11
DIS ;DISABLE DRIVE
P "MESSAGE" ;NOW PRINT A Now you can enable multi-tasking by typing:
;MESSAGE
B
RUN 10

Do not print before you turn outputs off or disable the


This program resets X1, then begins to count up.
BDS5. Otherwise, an INPUT command from another
Now enter ^V from your terminal or ATTN from
task may idle the alarm indefinitely.
your DEP-01. The BDS5 should print the value of
X1 which has been continuously incrementing since
you typed RUN 10. Next, enter a new value for X2
and notice that the program prints out a new value for
X1, which is larger than the value it printed at the
beginning of the variable input task. This is because
the variable input task was idle while you were
entering the new value. Since the higher priority task

4-27
CHAPTER 4 - USER PROGRAMS BDS5

is idle, the lower priority (11$) will run and ;TASK LEVEL 4
continuously increment X1.
VARIABLE$
4.8.7.1 Using Variable Input with INPUT "INPUT NEW DISTANCE" X11
Profiles INPUT "INPUT NEW SPEED" X12
You can use the variable input routine while the X1 = X11 ;LOAD X1 AND X2
BDS5 is executing motion profiles. However, you ;WITH
must be careful if you are changing parameters of X2 = X12 ; INPUT VALUES
motion. Specifically, if you are changing two or more END ;END VARIABLE$
parameters which you want to take effect at the same
time, you must write your program to store those ........................
values away. For example, suppose you are using the
;TASK LEVEL 5
variable input routine to prompt for speed and
distance. You might use a program like this:
20$
MI X1 X2
;TASK LEVEL 4 GOTO 20

VARIABLE$
Temporarily storing the input values in X11 and X12
INPUT "INPUT NEW DISTANCE" X1
guarantees that the MI command will execute with
INPUT "INPUT NEW SPEED" X2
either all new or all old values. Since there are no
END ;END VARIABLE$
idling commands between the commands that load X1
........................ and X2, there is no possibility for task level 5 to run
until X1 and X2 are both loaded or neither is loaded.
;TASK LEVEL 5
In addition, if the variable input routine changes
20$ variables that are used in different lines of task level
MI X1 X2 5, you probably should turn MULTI off at the
GOTO 20 beginning of the block of lines and back on at the
end. This prevents the variable input routine from
reloading the variables in the middle of block of lines.
If you type:

4.8.7.2 Restrictions of Variable Input


RUN 20
Like alarms, variable input has many restrictions. 1)
You cannot execute GOTO, GOSUB, or RET
this program will continuously move the motor X1 commands from the variable input task. 2) You
distance at X2 speed, even after you press ^V to start cannot execute a label. 3) The variable input must be
the variable input routine. However, after you have self-contained--it cannot "mix" with other tasks. It
entered a new value for X1, the variable input routine must be terminated with an END, Kill (K), or Break
will be idled, waiting for you to enter X2. In this (B) command. Again, most other commands are
case, the next MI command will be executed with the allowed for the variable input task, including motion
new X1 and the old X2. You can correct this commands and Block-IFs. If the variable input task
problem by temporarily storing the input values in is present, the execution time of your program
user variables and loading them all together. For increases by about 1%.
example, the above program can be modified as
follows:

4-28
BDS5 CHAPTER 4 - USER PROGRAMS

indicating that the power-up routine was executed.


4.8.8 Main Program Level (Task
Level 5) The power-up label is run
after the autobaud.
Most of the time, your program will run at task level
5. All the program examples given earlier in this NOTE
chapter executed at task level 5. Notice from "Multi-
Tasking Overview" that all general purpose labels (0$
- 500$) and many dedicated labels (POWER-UP$, If you want your program to start automatically on
AUTO$, MANUAL$, and ERROR$) share task level power-up, begin it with POWER-UP$. If POWER-
5. The routines that follow these labels share one UP$ is not found in the program, then the BDS5
task level and cannot run concurrently. For example, powers-up in the Interactive mode. If the BDS5 is set
you cannot run AUTO$ and MANUAL$ to autobaud, then it will not execute the power-up
concurrently. In other words, only one task-level-5 label until communications have been established.
routine can run at a time.
If you want to leave multi-tasking active after your
Alarms and the variable input task are higher priority power-up routine is done, end the power-up routine
than task level 5. For example, if an alarm fires while with the END command instead of the Break
your program is running a task that begins at a command. If your routine ends with the END
general purpose label (task level 5), task level 5 will command, then multi-tasking will be enabled, and the
be suspended until the alarm is complete. The Alarms, Background, and other multi-tasking
background program (BACKGROUND$) runs at the functions will be working. If you want to return to
lowest level. Generally, alarms respond to conditions the Interactive mode after power-up, then end the
that are more urgent than most other sections of the power-up routine with the Break command.
program. Similarly, background is for tasks that are
not critical, such as printing. Multi-tasking controls 4.8.8.2 Error Handler (ERROR$)
which task runs by executing commands from the When a serious error occurs, the BDS5 breaks
highest priority task that is not idle. execution of your program and checks your program
to see if you entered ERROR$. If you did, the error
The rest of this section will discuss the dedicated handler (that is, the routine that follows the ERROR$)
labels in task level 5: POWER-UP$, ERROR$, is executed. All multi-tasking is suspended, including
AUTO$, and MANUAL$. alarms, when the error handler is being executed.

4.8.8.1 Power-Up Routine (POWER- 4.8.8.3 Auto Routine (AUTO$)


UP$) If you want to start a program from an external
On power-up, the BDS5 checks your program to see switch, you should use the auto routine. You can use
if you entered POWER-UP$. If you did, the power- the auto routine to interface to simple operator panels
up routine is executed. For example, enter the or to programmable logic controllers (PLCs).
following program:
CYCLE (Connector C7, Pin 13) is a hardware input
POWER-UP$ that, under the proper conditions, will cause the
X1 = X1+1 ;SAMPLE COMMAND BDS5 to begin executing one cycle of the auto
B program. The AUTO program begins at AUTO$.
CYCLE READY is a hardware output that indicates
the BDS5 is ready to run another cycle of the AUTO
Now power-down your BDS5 for a few seconds and
program.
power-up again. After establishing communications,
the BDS5 should display the sign-on message
The following conditions must be met for the BDS5
followed by:
to execute the AUTO program. When these
conditions are met, the CYCLE READY output
EXECUTING POWER-UP LABEL (Connector C7, Pin 23) will turn on. Otherwise, it
--> will be off.

4-29
CHAPTER 4 - USER PROGRAMS BDS5

Table 4.9. To Execute AUTO$...


1. Multi-tasking must be enabled. 4.8.9 Background (Task Level 6)
2. AUTO$ must be present in the user program.
The background task is the lowest priority.
3. No routines can be executing at task level 5. Normally, the background task is used for non-critical
4. The MANUAL input must be off. tasks such as refreshing the display and checking low
priority inputs. The background task runs
5. The CYCLE input must be low. continuously, as long as no other task is active.

If these conditions are met, the CYCLE READY The background task begins with BACKGROUND$.
output will turn on. Then, when CYCLE turns on, the You can then follow that label with various
BDS5 will begin executing the user program at statements, usually printing commands. For example,
AUTO$, and CYCLE READY output will turn off. enter the following program:

4.8.8.4 Manual Program (MANUAL $) BACKGROUND$


The following conditions must be met for the BDS5 P "EXECUTING BACKGROUND"
to execute the MANUAL program. When these D 500
conditions are met, the BDS5 will begin executing ;DWELL
label MANUAL$. END

Now you can enable multi-tasking by typing:


Table 4.10. To Execute MANUAL$...
1. Multi-tasking must be enabled. RUN
2. MANUAL$ must be present in the user
program. Notice that you did not need to specify a label. If you
type RUN without a label, you will enable multi-
3. No routines can be executing at task level 5. tasking without executing a specific label. When you
4. The MANUAL input must be off. are done with this example, press ^X (control X) to
break the program and return to the Interactive mode.

If these conditions are met, the BDS5 will execute the


user program at MANUAL$. You may have noticed
that AUTO and MANUAL are very similar. The
important difference is that while the AUTO program
begins when CYCLE START turns on, the
MANUAL program runs continuously.

4.8.8.5 Typical AUTO/MANUAL


Programs
Drawing A-84983 shows typical AUTO and
MANUAL programs. This flowchart shows the
effects of the MANUAL and CYCLE switches. The
sample AUTO program causes the motor to rotate
one revolution each time the CYCLE switch
transitions from off to on. The sample MANUAL
program is written so that I1 and I2 are JOG+ and
JOG- switches. So when the MANUAL switch is on,
the BDS5 monitors the jog buttons; when MANUAL
is off, the CYCLE button causes the motor to rotate
one revolution. Note that both the AUTO and
MANUAL programs end with the END command;
this is the normal way to conclude these programs.

4-30
BDS5 CHAPTER 4 - USER PROGRAMS

* MANUAL SWITCH IS
AN INPUT ON
TYPE " RUN " CONNECTOR C8 - PIN 33

* * CYCLE SWITCH IS
AN INPUT ON
CONNECTOR C7 - PIN 13

YES
BREAK COMMAND
OR
ERROR

NO

ON GO TO
MANUAL * INTERACTIVE
SWITCH MODE
-->

OFF

CYCLE
SWITCH * * NO
POSITIVE
TRANSITION?

YES
SAMPLE SAMPLE
AUTO MANUAL
ROUTINE ROUTINE

AUTO$ MANUAL$
MI 4096 100 IF I1 EQ 1
END J 1000
ELIF I2 EQ 1
J - 1000
ELSE
J 0
EXECUTE EXECUTE ENDIF
AUTO MANUAL END
ROUTINE ROUTINE

Figure 4.2. Auto/Manual Mode Flowchart

4-31
CHAPTER 4 - USER PROGRAMS BDS5

4.8.9.1 Restrictions of Background Table 4.11. Common User Units


Like alarms, background has many restrictions. 1)
You cannot execute GOTO, GOSUB, or RET Current Percent INUM=4095 IDEN=100
Amps INUM=4095 IDEN=FULL
commands from background. 2) You cannot execute
AMPS
a label. 3) The background task must be self-
contained--it cannot "mix" with other tasks. It must Position Counts PNUM=1 PDEN=1
be terminated with an END, Kill (K), or Break (B) Velocity RPM rad/sec VNUM=44739 VDEN=10
command. Again, most other commands are allowed (12-Bit) VNUM=42723 VDEN=1
for the background task, including Block-IFs. If the Accel RPM/sec ANUM=4474 ADEN=1000
background task is present, the execution time of your (12-Bit) rad/(sec×sec) ANUM=4272 ADEN=100
program increases by about 1%.

4.9.1.1 Current Units


4.9 UNITS The BDS5 commands current with a 12-bit digital-to-
analog converter (DAC). The BDS5-basic current
The BDS5 provides user units so that both you and unit is 1/4095th of full-scale current. Full-scale
the machine operator can work in units that are current refers to the peak rating of your BDS5, not
convenient. The BDS5 allows you to define the units the continuous rating. For example, the peak rating
of acceleration, current, velocity, and position for of a 6 Amp BDS5 is 12 Amps.
your machine. Also, if your BDS5 has an external
input, you can define the units of external position The conversion constants that determine user current
and external velocity. units are INUM, current units numerator, and IDEN,
current units denominator:

INUM
4.9.1 User Units ILIM[basic units] = ILIM[user units] ×
IDEN
The BDS5 uses internal units, called BDS5-basic
units, that are very inconvenient to use. For example,
INUM and IDEN have a range of 0 to 231. For
velocity is in (1/65.536)*counts/second. User unit
standard current units (percent), INUM is 4095 and
constants scale the BDS5-basic units. For example, if
IDEN is 100. For example, when setting ILIM to 100
you type:
in Chapter 3, you typed:

VOSPD = 1000
ILIM=100 ;SET ILIM TO 100%

the 1000 is multiplied by VNUM/VDEN before it is


The BDS5 converted the 100% to 4095 BDS5-basic
stored in the BDS5 memory. Your BDS5 is shipped
units:
with VNUM and VDEN set so that the user velocity
units are RPM. However, with a simple, step-by-step
INUM 4095
procedure, you can redefine the units as 100 × = 100 × = 4095
inches/minutes, degrees/second, or any other units IDEN 100
that are convenient for your machine.

The following table shows some common user units. This sets ILIM to 4095 or 100% of full current.
When you typed:

P ILIM

the BDS5 converted the 4095 BDS5-basic units to


100% by multiplying by IDEN and dividing by
INUM.

4-32
BDS5 CHAPTER 4 - USER PROGRAMS

4.9.1.2 Other User Units VXDEN for external velocity (VEXT) and by
BDS5-basic units for position, velocity, and PXNUM and PXDEN for external position (PEXT).
acceleration vary with the system resolution. The Drawing A-84866 shows how external position and
resolution is determined by the R/D converter, which velocity come into a slave BDS5 and are displayed as
converts the position of the motor into a 12-, 14- or PEXT and VEXT.
16-bit number. The system resolution is indicated by
the model number. If the external input is a system with the same
resolution as your BDS5, set external units as
follows:
Table 4.12. System Resolutions

R/D Resolution Counts in One Revolution Table 4.13. Setting External Units in
Master/Slave Systems
12-Bit 4096
VXNUM = VNUM
14-Bit 16384
VXDEN = VDEN
16-Bit 65536
PXNUM = PNUM
PXDEN = PDEN
When shipped from the factory, the standard BDS5
user units are velocity in RPM, acceleration in
RPM/second, current in percent of full-scale, and If the command is something other than a motor of
position in counts. similar resolution, see "Machine Specific Units" in
the next section.
The velocity and acceleration units shown on
"COMMON USER UNITS" above are for the
standard 12-bit R/D converter. For 14-bit resolution,
multiply VNUM and ANUM by 4. For 16-bit
resolution, multiply by 16. Do not change VDEN or
ADEN.

All variables that have units associated with them


should be set after you have specified the user units.
This is because the values actually stored in the
variables are in BDS5-basic units, not user units.
Changing the user units will not affect the basic value
stored in the variables. For example, if you want
VOSPD to be 100 inches/minute, and you type:

VOSPD = 100

when velocity units are in RPM, VOSPD would be


100 RPM. Then, if you change the velocity units to
inches/minute, VOSPD would remain 100 RPM--it
would just be converted to the equivalent of
100 RPM in inches/minute. If you change any user
units, you should reset all programmable variables
that depend on those units. Refer to Appendix E,
which lists all variables and the units associated with
them.

4.9.1.3 External Units


External units are for the external inputs, VEXT and
PEXT. The user units are set by VXNUM and

4-33
CHAPTER 4 - USER PROGRAMS BDS5

COUNTS FROM MASTER


RESOLVER- TO- DIGITAL
CONVERTER

A+ 1 PDEN
PNUM PFS
A- 6
CONNECTOR 1/4 INTERNAL
B+ 2 ENCODER FEEDBACK
C1
B- 7
X VDEN VFS
65.536 VNUM

MICRO-
PROCESSOR

MASTER BDS5

MASTER ENCODER
A+
A-
B+
B-

COUNTS FROM MASTER


RESOLVER- TO- DIGITAL
CONVERTER

PDEN
PNUM PFS
INTERNAL
FEEDBACK
X VDEN VFS
65.536 VNUM

A+ 5 PXDEN
PXNUM PEXT
A - 10
x4 EXTERNAL
CONNECTOR
B+ 4 DECODER FEEDBACK
C1
B- 9 X VXDEN
VEXT
65.536 VXNUM

MICRO-
PROCESSOR

SLAVE BDS5

Figure 4.3. Master/Slave Block Diagram

4-34
BDS5 CHAPTER 4 - USER PROGRAMS

4.9.2 Machine Specific Units


The BDS5 allows you to specify user units for your The procedure to determine PNUM and PDEN is as
machine. You must determine the conversion follows:
constants: PNUM & PDEN for position, VNUM &
VDEN for velocity, and ANUM & ADEN for A. Select Table 4.14 (revolutions) or 4.15
acceleration. Two tables have been provided to help (radians).
you calculate those constants. Tables 4.14 and 4.15
are for position, velocity, and acceleration units B. Select a convenient amount of motor
based. movement in revolutions or radians.

C. Calculate the corresponding machine


Table 4.14. English Conversion (12-bit R/D movement in your user units.
Only)
POSITION UNITS D. Perform the operation indicated in the table
under POSITION UNITS and set
PNUM/PDEN equal to this value.
PNUM  Motor Movement (In Revolutions) 
= 4096 ×  
PDEN  Machine Movement (In Your Units)  E. If your R/D converter resolution is 14-bits,
multiply PNUM by 4. Multiply PNUM by 16
for a 16-bit system.
VELOCITY UNITS
The procedure to determine VNUM and VDEN is as
VNUM  Motor Velocity (In Rev / Min) 
= 447392
. ×   follows:
VDEN  Machine Velocity (In Your Units) 
A. Select Table 4.14 (RPM) or 4.15
ACCELERATION UNITS
(radians/second).
ANUM  Motor Acceleration (In RPM / Sec) 
= 4.47392 ×   B. Select a convenient amount of motor velocity
ADEN  Machine Acceleration (In Your Units)  in RPM or radians/second.

Table 4.15. Metric Conversion (12-bit R/D C. Calculate the corresponding machine velocity
Only) in your user units.
POSITION UNITS
D. Perform the operation indicated in the table
under VELOCITY UNITS and set
PNUM  Motor Movement (In Radians) 
= 651.8971 ×   VNUM/VDEN equal to this value.
PDEN  Machine Movement (In Your Units) 
E. If your R/D converter resolution is 14-bits,
VELOCITY UNITS multiply VNUM by 4. Multiply VNUM by 16
for a 16-bit system.
VNUM  Motor Velocity (In Rad / Sec) 
= 712.047 ×   The procedure to determine ANUM and ADEN is as
VDEN  Machine Velocity (In Your Units)  follows:

A. Select Table 4.14 (RPM/sec) or 4.15


(radians/(second*second).
ACCELERATION UNITS
B. Select a convenient amount of motor
ANUM  Motor Acceleration (Rad / Sec / Sec) 
= 0.712047 ×   acceleration.
ADEN  Machine Acceleration (Your Units) 
C. Calculate the corresponding machine
acceleration.

4-35
CHAPTER 4 - USER PROGRAMS BDS5

D. Perform the operation indicated in the table C. Perform the operation indicated in Table 4.16
under ACCELERATION UNITS and set under EXTERNAL VELOCITY UNITS and
ANUM/ADEN equal to this value. set VXNUM/VXNUM equal to this value.

E. If your R/D converter resolution is 14-bits, Example:


multiply ANUM by 4. Multiply ANUM by 16
for a 16-bit system. A machine has a motor coupled to a 0.1 inch pitch
lead screw which drives a table. A 0.1 inch pitch lead
For external inputs PEXT and VEXT, the procedure screw means the table moves 0.1 inch per motor
for calculating the conversion constants PXNUM, revolution. The R/D resolution is 12 bits.
PXDEN, VXNUM, and VXDEN is similar. It differs
in that the external inputs are not functions of the The user units for table motion you desire are:
motor position or R/D resolution. Table 4.16 has
been provided to assist in calculating the conversion Position Units mils (1 mil = 0.001 inch)
constants.
Velocity Units inches/minute (IPM)
Table 4.16. External Units Conversion
Acceleration Units inches/minute/second
EXTERNAL POSITION UNITS (IPM/second)

PXNUM  External Input (In Counts)  Objective:


= 
PXDEN  Machine Movement (In Your Units)  Find PNUM and PDEN.
Find VNUM and VDEN.
Find ANUM and ADEN.
EXTERNAL VELOCITY UNITS
Solution:
VXNUM  External Input (In Counts / Sec) 
= 65.535 ×  
VXDEN  Machine Velocity (In Your Units)  Find PNUM and PDEN.

A. Select Table 4.14.

B. Select a motor movement of 1 revolution.


The procedure to determine PXNUM and PXDEN is
as follows:
C. 1 revolution of the 0.1 pitch lead screw
translates to 0.1 inch or 100 mils of table
A. Select a convenient number of counts on the
movement.
external input.
D. Refer to Table 4.14 under POSITION UNITS
B. Calculate the corresponding machine
for the formula:
movement in your user units.
PNUM/PDEN = 4096 * (1 / 100) = 40.96
C. Perform the operation indicated in Table 4.16
under EXTERNAL POSITION UNITS and set
Select PNUM and PDEN:
PXNUM/PXNUM equal to this value.
PNUM = 4096 PDEN = 100
The procedure to determine VXNUM and VXDEN is
as follows:
E. Since a 12-bit R/D converter is used,
calculations in step E are not needed.
A. Select a convenient number of counts per
second on the external input.
Find VNUM and VDEN.
B. Calculate the corresponding machine velocity
A. Select Table 4.14.
in your user units.
B. Select 10 RPM motor velocity.

4-36
BDS5 CHAPTER 4 - USER PROGRAMS

C. 10 RPM of the 0.1 pitch lead screw translates The Rotary mode forces all position-related variables
to 1 IPM of table velocity. to "roll-over" after position feedback (PFB) exceeds a
specified limit. The variables that are rolled over are
D. Refer to Table 4.14 under VELOCITY UNITS PFB, PCMD, and PFNL. The rotary distance (the
for the formula: specified limit before roll-over) is stored in
PROTARY. PROTARY is in position units.
VNUM/VDEN = 4473.92 * (10 / 1) = 44739.2
When ROTARY is on, the Rotary mode is enabled.
Select VNUM and VDEN: If PFB is greater than PROTARY, then PFB, PCMD,
and PFNL are decremented by PROTARY. If PFB is
VNUM = 447392 VDEN = 10 less than zero, then PFB, PCMD, and PFNL are
incremented by PROTARY. Note that DIR=0 does
Find ANUM and ADEN. not work well with the Rotary mode as PCMD , PFB,
and PFNL are always less than zero.
A. Refer to Table 4.14.
You cannot change PNUM, PDEN, or PROTARY
B. Select 10 RPM/second motor acceleration. when ROTARY is ON. In addition, you must
normalize PFB so that 0 < PFB < PROTARY before
C. A 10 RPM/second acceleration of the 0.1 pitch turning ROTARY ON. Enable the Rotary mode by
lead screw translates to 1 IPM/second of table typing:
acceleration.
ROTARY ON
D. Refer to Table 4.14 under ACCELERATION
UNITS for the formula:

ANUM/ADEN = 4.47392 * (10 / 1) = 44.7392 4.9.3.1 Choosing PROTARY, PNUM,


and PDEN
Select ANUM and ADEN: If you have a rotary application such as a printing
drum, set PROTARY in position user units to be the
ANUM = 447392 ADEN = 10000 exact equivalent of one revolution of the drum.
PROTARY must be exact or position error will
The BDS5 does not support floating point operations. accumulate over many revolutions. For example,
You must use fractional units to make the resolution suppose the motor of an application is connected
finer. For example, if the units for velocity need to be through a 5:3 gearbox. For convenience, assume the
finer than IPM, 0.1 IPM could be chosen. In this case user units are in degrees of the table. PROTARY
VDEN would be 100 instead of 10. Then to jog at 1 would be one revolution of the table or 360 degrees.
IPM the command J 10 would be required. How do you select PNUM, PDEN, and PROTARY?

The key is selecting PNUM and PDEN so that


4.9.3 Position Rotary Mode, PROTARY can be represented exactly as an integer.
This does not mean that PROTARY must be an
ROTARY, & PROTARY
integer number of counts. In fact, it normally will not
be. Returning to the example, a motor movement of 5
The BDS5 stores position in a 32-bit number. This
revolutions would cause 3 revolutions of machine
number is large enough to count many revolutions.
(table) rotation, or 1080 user units (degrees).
For example, the 32-bit number will store the counts
Returning to Table 4.14,
from a 12-bit R/D converter for about 10 million
revolutions before the 32-bit limit is exceeded.
PNUM = 4096 * 5 PDEN = 360 * 3
Normally, this is sufficient. However, some
applications require the motor to rotate in one
thus, PROTARY would be 360. Notice that
direction indefinitely. Eventually, the 32-bit limit
PROTARY is not exact in counts; it is 5/3 of a
will be exceeded, resulting in an error. The Rotary
revolution or 6826 and 2/3 counts. However, it is
mode allows the BDS5 to support these unidirectional
applications.

4-37
CHAPTER 4 - USER PROGRAMS BDS5

exact in user units. Therefore, error will not 4.10.1 Autobauding


accumulate as the table rotates.
It is not necessary to set the baud rate on the BDS5
The incorrect way to choose PNUM, PDEN, and directly. Once the BDS5 is properly connected, it can
PROTARY would be to select PNUM and PDEN so determine the terminal's baud rate, then set its own
that PROTARY could not be represented as an baud rate accordingly. This is called autobauding.
integer. For example, we could have stated that 5/3 After the BDS5 determines the correct baud rate, it
revolution of the motor would cause one revolution of will store this rate away in BAUD. The BDS5 will
the machine. Then: flash the CPU light to indicate that it is autobauding.
In order for the BDS5 to determine the baud rate
PNUM = 4096 * 5/3 or about 6827 setting on your terminal, you must press the enter key
several times. Press only the enter key; otherwise the
PDEN = 360 BDS5 will not autobaud correctly. The system will
only autobaud during power-up.
In this case, PROTARY would not be exactly 360
degrees (actually, it would be 359.98 degrees), so that
error would accumulate as the table turned. 4.10.1.1 Setting the BDS5 to
Remember, PROTARY must be an integer in user Autobaud
units, though it can have fractional counts. There are three ways to set the BDS5 to autobaud at
power-up:
4.9.3.2 Rotary Mode and Absolute 1. Powering-up with the MOTION input off.
Moves
When the BDS5 is in the Rotary mode, you must limit 2. Turning the switch ABAUD on before the next
the final position of all absolute moves to between 0 power-up.
and PROTARY. If you want to move more than
PROTARY, you can use incremental moves. For 3. Setting the value of the variable BAUD to an
example, invalid value (say, 1000).

MI 50*PROTARY 4.10.1.2 Autobauding and MOTION


If the MOTION input is off during power-up, the
is a legal command. BDS5 will autobaud. (Note that this also sets ADDR
to zero.) This allows you to command autobaud
without being able to communicate with the BDS5.
4.10 SERIAL COMMUNICATIONS The other ways to start autobauding require that
communications be set up first. See the section on
This section discusses details of BDS5 serial ADDR and multidrop communication later in this
communications. This includes autobauding, chapter for more information.
multidrop connections, and transferring your program
to and from the BDS5. If you are using Motion Link, 4.10.1.3 Enabling Autobaud with
the Industrial Drives software package for the BDS5, ABAUD
you do not need to read the sections on transmitting The autobaud software switch (ABAUD) is the usual
and receiving your program, or on system dump. way to tell the BDS5 to autobaud on power-up. If
Motion Link provides facilities for these functions. ABAUD is on, then the system will autobaud when it
is powered-up or reset, provided that the multidrop
address, ADDR, is 0. After a successful autobaud,
the baud rate will be stored in BAUD.

4-38
BDS5 CHAPTER 4 - USER PROGRAMS

If you do not want your BDS5 to autobaud when the


unit is powered-up, then turn ABAUD off. This is The BDS5 serial watchdog is
important if you want the BDS5 to run the Power-Up intended to detect a broken
Label (POWER-UP$), because if ABAUD is on, the serial communications line. It
BDS5 will not execute the program until does not test the validity of
communications have been established. WARNING data received from your
computer.
4.10.1.4 Baud Rate, BAUD
If the MOTION input is on, ADDR is zero, and Set WTIME in milliseconds to the time that you want
ABAUD is off, then the system will check the the serial watchdog to timeout. To enable the serial
variable BAUD for the desired baud rate. If it is not a watchdog, type:
valid baud rate, the BDS5 will autobaud. After a
successful autobaud, an error is generated indicating WATCH ON
that the baud rate was out-of-range on power-up.

4.10.2 Prompts
4.10.4 Transmit/Receive Programs
The BDS5 issues a prompt when it is ready to receive
a new command. Prompts are discussed in Chapter 3. The BDS5 provides commands that allow programs
The BDS5 allows you to suppress the prompt to be transmitted and received without using the
characters by typing: Editor. These commands are intended for
applications which require that a computer directly
transmit and receive programs. This does not include
PROMPT OFF Motion Link, the software communications package
that is run from an IBM-PC or compatible. Refer to
PROMPT is turned on at power-up. Prompts are the Installation and Setup Manual for
particularly important when communicating with communications format.
computers, since the computer that is transmitting to
the BDS5 must wait for a prompt before beginning a
4.10.4.1 <BDS Command Receiving
new line. After the prompt is received, the computer
can transmit at the full baud rate, without inserting from the BDS5
delays. The <BDS command is used to send the BDS5 user
program through the serial port to the terminal or
computer. The transmission can be stopped by
sending an escape character. You should not rely on
4.10.3 Serial Watchdog the BDS5 to store all your programs. Keep back-up
copies elsewhere. The <BDS command will cause
The BDS5 provides a serial watchdog timer for the BDS5 to transmit the entire user program to your
applications where a command should be received computer. It cannot be issued in the Program mode.
from a computer on a regular basis. If a complete For example, from the terminal type:
command is not received from the serial port in the
specified time, an error will be generated that will
<BDS
disable the BDS5 and break the user program.

The serial watchdog is a safety feature that disables and the BDS5 will respond by printing out the entire
the BDS5 if the communications line breaks. The user program.
serial watchdog waits for a carriage return to signify a
completed command. It does not test the validity of 4.10.4.2 The >BDS Command
the command. For example, if your computer fails Transmitting to the BDS5
and begins sending random carriage returns, the serial The >BDS command is used to send a new user
watchdog will not generate an error. program through the serial port to the BDS5. The
transmission is ended by sending an escape character.
Note that this command writes over the contents of

4-39
CHAPTER 4 - USER PROGRAMS BDS5

the user program stored in the BDS5. This command 4.10.5 System Dump
allows the program to be directly entered, presumably
by a computer, to the BDS5. It cannot be issued in The BDS5 can transmit all variables in addition to the
the program mode. user program. This is called a system dump, and you
request it with the DUMP command. For example,
The >BDS command writes type:
over the entire user program.
DUMP
NOTE
and the BDS5 will provide pages of information
including the program, all BDS5 variables, user
The BDS5 issues the "l->" prompt to indicate that it
variables, and user switches. This also includes all
is ready to load a new program line. If you are
protected variables.
loading from a computer, you must wait for the
prompt before beginning to transmit a new line.
The system dump is provided so that the information
from the dump can be directly re-transmitted to any
The >BDS command is password protected. If a
BDS5. This changes all NON-PROTECTED
password was set in the BDS5 Editor, then it must be
variables. The DUMP command precedes protected
given in the >BDS command.
variables with a semicolon (";"). This makes the line
a comment so that when the line is re-transmitted, it
Typing in these examples will has no effect. If the ";" were not there, re-
erase the user program in the transmitting the dump information would generate an
BDS5. Do not type them in error when a protected variable was changed. Every
unless your program is line of the user program is preceded with a semicolon
NOTE backed up. for the same reason.

For example, if a password was not set in the Editor: 4.10.5.1 Version Dump
Your BDS5 will print out its firmware version at any
time with the DUMP VERSION command:
>BDS

DUMP VERSION
will begin transmitting the new program. If you press
the escape key before typing anything else, the
process will be aborted without changing the program
in the BDS5.
4.10.6 Multidrop Communications
If a password was set in the Editor, then the password
must follow the command. For example, if the
password was set as SECRET, type: This function is not available
for the RS-232 option.
>BDS SECRET
NOTE
and the BDS5 will accept programs directly from the
terminal. Multidrop communication allows you to have many
(up to 32) axes on one serial line. This is only
The user program is stored in battery backed-up supported with RS-485. When the BDS5 is in
memory. If the program changes because of a Multidrop mode, each axis must have a unique
hardware problem, the BDS5 issues a "USER address. This address is a prefix on all
PROGRAM CORRUPT" error. The >BDS communications to and from the BDS5. The address
command resets the user program memory, which is stored in variable ADDR. ADDR is set to 0 for
eliminates this condition. standard (single-drop) communications. Valid
addresses are 48 (ASCII '0') through 57 (ASCII '9')
and 65 (ASCII 'A') through 90 (ASCII 'Z') (see

4-40
BDS5 CHAPTER 4 - USER PROGRAMS

Appendix B). Note that the address must be set to "Ae>". In this way, each prompt from each axis is
before multiple units are connected to the same serial unique.
line.
Table 4.17. BDS5 Prompts
When the BDS5 powers-up in Multidrop mode it is
"asleep." When asleep, the BDS5 continues to Non-multidrop Multidrop
execute programs and control the motor properly, but (ADDR=0) (ADDR = 65)
it does not communicate over the serial line. The --> A->
BDS5 executes commands which normally print to
the serial port (P, PS, R, RS, INPUT, and errors) ==> A=>
except that the output is not sent to the serial s-> As>
transmitter. The delays incurred by printing are still
present. If you have print statements that delay the t.. At.
program when the axis is awake, you will have the e-> Ae>
same delays when it is asleep, even though no
characters are being transmitted. i-> Ai>
f-> Af>
When you transmit its address, the BDS5 wakes up
and communicates. The address is a backslash (\) c-> Ac>
followed by the ASCII character represented by
ADDR. For example, if your BDS5 has the RS-485
option, type: 4.10.6.1 Broadcast
You may want to send all BDS5's on the serial line a
ADDR=65 ;SET ADDRESS TO command simultaneously. This is called a broadcast.
;65=ASCII A You can broadcast by sending "\*." In this case, all
\A ;WAKE UP "A" BDS5's execute the command. During a broadcast,
P "THIS IS AXIS" ADDR none of the BDS5's can transmit, but all will receive
;PRINT ADDR and execute the command.
ADDR=0
;RESET DRIVE TO
;SINGLE-DROP 4.11 PROGRAM EXAMPLES
This section lists a typical application program as
This example sets the address well as a sample velocity drive program. Use these
to upper case A. programs as models for your own. This format uses
extensive comments. The assumption is that you are
NOTE using Motion Link so that these comments will not be
transmitted to the BDS5, as they would normally take
Setting ADDR to 65 makes this axis address "A" and an unacceptable amount of space. You are
automatically puts the BDS5 in Multidrop mode. encouraged to use comments because they make the
This axis then waits for the "\A." After this, BDS5 is program easier to understand and correct.
awakened and it remains awake until it receives a "\."
A backslash puts ALL drives on the serial line to For the velocity drive program first you must select
sleep. If you select an axis in multidrop, only that whether the input will be analog or digital (encoder
axis transmits and receives. equivalent). Be sure to set GEARI and GEARO for
your application.
During multidrop, the prompts are changed. If you
typed in the example from above, you would have
noticed the prompt in the above example going from
"-->" to "A->" after you typed in the second line. All
prompts in a multidrop system have the axis address
as the first character of the prompt. This allows you
to know which axis you are communicating with at all
times. For example, the edit prompt goes from "e->"

4-41
CHAPTER 4 - USER PROGRAMS BDS5

;
;NAME OF APPLICATION: PRETZEL MACHINE
;
;DATE A.E. NEUMAN
;
;REVISION HISTORY:
; 8-9-90 ADDED JOG BUTTONS
; 7-17-90 CORRECTED TEACH BUG
;
;
;-------------------------------------------------
;ALARM DESCRIPTION
;
; A$ WATCH THERMOSTAT
; B$,C$ NOT USED
; VARIABLE$ FILL X1 WITH SPEED
; BACKGROUND$ BACKGROUND PRINTING
;
;-------------------------------------------------
;
;I/O DESCRIPTIONS
;
;GENERAL PURPOSE INPUTS
; I1 JOG+ PUSH BUTTON
; I2 JOG- PUSH BUTTON
; I3 TEACH POSITION PUSH BUTTON
; I4 CONTACTOR INTERLOCK SWITCH
; I5 PLC INTERFACE
; I6 HOME REQUEST PUSH BUTTON
; I7 THERMOSTAT
;
;GENERAL PURPOSE OUTPUT
; O1 COOLING FLUID PUMP
; O2 SPINDLE MOTOR CONTACTOR
; O3 PLC INTERFACE
;
;DEDICATED I/O
; CYCLE CONNECTED TO PLC
; GATE NOT USED
; HOME CONNECTED TO HOME LIMIT SWITCH
; LIMIT CONNECTED TO OVERTRAVEL LIMIT SWITCH
; MANUAL NOT USED
; MOTION CONNECTED TO STOP PUSH BUTTON
; READY CONNECT TO PLC
; STATUS NOT USED
;
;-------------------------------------------------
;
;USER VARIABLES
; X1 STORE NUMBER OF CYCLES RUN
; X2 STORE LAST POSITION RUN TO
; X3 INTERMEDIATE CALCULATION
; X4 LOOP COUNTER
; X5 LOOP COUNTER
; X6-X250 NOT USED

4-42
BDS5 CHAPTER 4 - USER PROGRAMS

; ;
;USER SWITCHES
; XS1-XS50 NOT USED
;
;-------------------------------------------------
;
;APPLICATION PROGRAM
;
POWER-UP$ ;POWER-UP LABEL
PLIM OFF ;SOFTWARE LIMITS NOT USED HERE
;CONTINUE YOUR POWER-UP PROGRAM HERE
END
;
;
A$ I7 OFF
P "THERMOSTAT (INPUT I7) OPENED"
P "PROCESS BEING CLOSED DOWN"
DIS ;DISABLE THE BDS5
B ;BREAK PROGRAM EXECUTION
;
;
VARIABLE$
INPUT "ENTER NEW SPEED" X1
END
;
;
AUTO$ ;AUTO LABEL
;WRITE YOUR AUTO PROGRAM HERE
END
;
;
MANUAL$ ;MANUAL LABEL
;WRITE YOUR MANUAL PROGRAM HERE
END
;

...
;WRITE MORE OF YOUR PROGRAMS HERE
END
;
BACKGROUND$
;WRITE YOUR BACKGROUND PRINTING ROUTINE HERE
END
;
;
ERROR$ ;ERROR HANDLER
;WRITE YOUR ERROR HANDLER HERE
B ;END OF SAMPLE PROGRAM

4-43
CHAPTER 4 - USER PROGRAMS BDS5

;VELOCITY DRIVE SAMPLE PROGRAM


;DATE NAME
;-------------------------------------------------------------------

POWER-UP$ ;EXECUTE ON POWER UP


PL OFF ;DISABLE THE POSITION LOOP

VNUM=447392 ;SETS VELOCITY UNITS TO RPM.


VDEN=100

ANUM=447392 ;SETS ACC UNITS TO RPM/SEC


ADEN=100000
;
AMAX=100000 ;SET THE MAX ACCEL RATE (RPM/SEC)
ACC=1000 ;SET THE NORMAL ACCEL LIMIT
DEC=1000 ;SET THE NORMAL DECEL LIMIT
;ACC AND DEC ARE RAMP LIMITS FOR GEAR MODE,
;ASSUMING THAT PL IS OFF.
;
;
GEARI=10 ;THIS SETS THE GEAR MODE FOR 25%,
GEARO=40 ;APPROX. 10 V = 3000 RPM FOR AN
;ANALOG INPUT. THE PROPER LEVEL OF
;GEARI AND GEARO DEPENDS ON THE
;SYSTEM AND THE INPUT FORMAT. THE
;ADJUSTMENT OF GEARI AND GEARO IS
;EQUIVALENT TO A DC GAIN ADJUSTMENT OR
;SCALE FACTOR POT FOUND ON MANY
;ANALOG DRIVES.

;NOTE THAT ACC/DEC RATES ARE LIMITED BY ACC AND


;DEC ONLY WHEN PL IS OFF.
;
EN ;ENABLE DRIVE
GEAR ON ;ENABLE ELECTRONIC GEARBOX
VOFF=0 ;THIS SETS THE OFFSET VELOCITY.
;VOFF IS SET TO ZERO WHEN GEAR IS
;TURNED ON.
;IF THERE IS NEED TO ADJUST FOR VELOCITY
;DRIFT IN THE INPUT, THEN ADJUST VOFF
;TO THE PROPER LEVEL SO THAT DRIFT STOPS.
;
B ;DRIVE IS NOW IN ELECTRONIC GEARBOX
;END OF SAMPLE PROGRAM

4-44
BDS5 CHAPTER 5 - DEBUGGING

CHAPTER 5
DEBUGGING

5.1 INTRODUCTION Press the ENTER key and the response should be:

The information in this chapter will enable you to IF X1 GT 0


rectify problems you may have while programming S-->
the BDS5. When you write programs, you probably
will inadvertently include a few errors or bugs. The You can probe the BDS5 variables from the Single-
best step you can take to correct errors is to prevent Step mode without stopping your program. For
them by following the programming practices example, type:
provided in this manual. Every effort has been made
to make the BDS5 language as simple as possible P X1
with BASIC-like commands, algebraic math, and a
variety of conditional commands. Still, some bugs
are almost certain to surface in a new program. The and the BDS5 should respond with:
BDS5 provides two execution modes to help you
debug your program: Trace and Single-Step. 1
S-->

In this case, the BDS5 executed the print command


5.2 DEBUGGING MODES
and displayed the single-step prompt, indicating it is
ready for another command. Now press the ENTER
5.2.1 Single-Step key repeatedly to step through the program.

If the error occurs in a section of your program that is This example shows several characteristics of the
not time-critical, you can use single-stepping to help Single-Step mode:
track down the error. When you execute your
program in the Single-Step mode, each command is
printed out. The BDS5 waits for you to press the • All commands are preceded by the trace prompt:
ENTER key before executing the command. Use the
nested-IF example given previously in this manual.
S->
Enter the program, set X1 and X2 equal to 1, and turn
SS on by typing SS ON. Then begin execution at
label 55 by typing RUN 55. The following line
should be displayed:
• Print statements are active in the Single-Step
mode. Notice that the results of the P command
55$
are printed normally, as they are in the Trace
S-->
mode.

5-1
CHAPTER 5 - DEBUGGING BDS5

• Only the executed commands in IF, ELIF, ELSE,


• Only the executed commands in the IF, ELIF, and ENDIF sets are shown. Notice that none of
ELSE, and ENDIF sets are shown. Notice that the commands following the first print command
none of the commands following the first print are shown. This helps you debug your program
command are shown. by only showing the commands that are
executing.
• You can execute commands from the Single-Step
mode. • You cannot type in commands from your
terminal while the BDS5 is executing in the
You can also enter the Single-Step mode from your Trace mode.
program. To do this, you should include SS ON in
your program. To exit the Trace mode, you can You can also enter the Trace mode from your
include SS OFF in your program or type it from the program. To do this, you should include TRC ON in
single-step prompt. You can also press the escape your program. To exit the Trace mode, you can
key two times. include TRC OFF in your program, or you can press
the escape key two times.

5.2.2 Trace 5.2.2.1 Motion Link and Trace


Motion Link is the software communications package
If the error occurs in a section of your program that is provided for the IBM-PC and compatibles. IBM-PC
not very time-critical, you can use trace to help track and compatibles can communicate at 9600 baud only
down the error. When you execute your program in in that they can receive and transmit a character at
the Trace mode, each command is printed out just that frequency. However, they cannot receive an
before it is executed. Use the nested-IF example indefinite number of characters at that rate because
given earlier in this chapter. Enter the program, set the computers are not fast enough to process the
X1 and X2 equal to 1, and turn TRC on (TRC ON). characters. This leads to a problem in the Trace
Then begin execution at label 55 (RUN 55), and the mode because the BDS5 can transmit characters
following lines should be displayed: much faster than most PC's can process them. This
can lead to delays of minutes between when the
T...55$ BDS5 transmits a character and when the computer
T...IF X1 GT 0 displays it. The best way to cure this problem is to
T... IF X2 GT 0 reduce the baud rate from Motion Link (use the ^U
T... P "BOTH X1 AND X2 > 0" command), and power the BDS5 down and then up to
BOTH X1 AND X2 > 0 cause a second autobaud (make sure ABAUD is on
T... ELSE before powering down). Start with 1200 baud and
T... ENDIF see if the problem is cured.
T...ELSE
T...ENDIF
T...B 5.3 DEBUGGING AND MULTI-
--> TASKING
This example shows several characteristics of the If your program uses multi-tasking, the Trace and
Trace mode: Single-Step modes show you which level is currently
being executed. For example, enter the program
• All commands are preceded by the trace prefix: given in Section 4.8.5.2. Turn on the Trace mode and
T... type:

• Print statements are active in the Trace mode. RUN 1


Notice that the results of the P command are
printed just below where the print command is The result should be something like this:
displayed.
T...1$ ;MAIN PROGRAM
T...EN

5-2
BDS5 CHAPTER 5 - DEBUGGING

T...MI 10000 10 ;START MOVE sections of your program a few lines at a time. (Of
T...P "MOVE PROCESSED" course, save the original program on your computer
MOVE PROCESSED for later use.) Remove lines that you do not think are
T...W 0 ;WAIT FOR MOVE involved in the problem. Removing lines that you
T.*.BACKGROUND$ suspect are causing the problem can provide false
T.*.P "UPPER TASK IDLED" leads; for example, the problem may be interaction
UPPER TASK IDLED between a section you removed (which was operating
T.*.D 250 ;DWELL 0.25 SEC. properly) and another, unsuspected section of your
T.*.END program (that was the actual source of the problem).
Your false suspicions can be incorrectly confirmed.
...
The best situation is when you can make a short
T.*.BACKGROUND$ (< 20 line) program demonstrate the problem. After
T.*.P "UPPER TASK IDLED" this, it is usually easy to determine the problem. If
UPPER TASK IDLED you get to the point where you cannot figure out your
T.*.D 250 ;DWELL 0.25 SEC. problem, call INDUSTRIAL DRIVES for help; we
T.*.END will be happy to help you. However, in order to make
efficient use of your time and ours, you must trim
(AT THIS POINT, ASSUME MOTION down your program to a few lines that are not
STOPS AND TASK 5 IS NOT IDLED) working. It is very difficult for even a skilled person
to help debug a large program over the telephone.
T...P "ALL MOTION STOPPED"
ALL MOTION STOPPED
T...B

Notice that when the example is executing the


background level task, an asterisk (*) is printed.
Each task level prints out a slightly different prompt
in the Trace and Single-Step modes, as the following
table shows:
Table 5.1. Multi-Tasking Debug Prompts

TASK LEVEL SINGLE-STEP TRACE


PROMPT PROMPT PROMPT

Alarm A s-A> t.A.


Alarm B s-B> t.B.
Alarm C s-C> t.C.
Variable Input s-V> t.V.
Main Program s--> t...
Background s-*> t.*.

5.4 REMOVING CODE


If you cannot find the bug in your program with
single-step or trace, then you must begin removing
sections of your code that you do not think are
causing the problem. The procedure is to remove

5-3
CHAPTER 5 - DEBUGGING BDS5

5.5 SYNCHRONIZING YOUR


PROGRAM 5.5.2 Regulation Timer, RD
This section describes the functions and variables that Fixed length delays can be added into a program with
allow you to synchronize the program to events, both the DWELL (D) command. In some applications,
external and internal. especially those that use profile regulation, it is
necessary to add a delay with a length that varies with
the regulating frequency. The DWELL (RD)
5.5.1 Using the Timers, TMR1-4 command is provided for these occasions. When the
external input frequency is equal to REGKHZ the
delay of the RD command is in milliseconds, just like
The general purpose timers TMR1, TMR2, TMR3,
D command. However, when the external input
and TMR4, are provided for situations where the
frequency decreases, the regulated dwell time
required timing is too complex for the Dwell
lengthens so that the DWELL is proportional to the
command. The timers are set in milliseconds and are
inverse of the external frequency. For example:
limited to 2,147,483,647 milliseconds or about 25
days. The BDS5 then counts down the timer until it
reaches zero. 45$
REGKHZ 100 ;SET REGKHZ TO
Type in this example, which continuously reprints a ;100 KHZ
message for 1 second: RD 2000 ;REG DOES NOT
;NEED TO BE ON
;FOR RD TO
8$
;OPERATE
TMR1=1000
P "DELAY COMPLETE"
TIL TMR1 LE 0 P "WAITING FOR 1
B
SECOND DELAY"
B
In this case, the RD command causes a 2-second
dwell when the external input frequency is 100 KHz
and type:
and a 4-second dwell when the frequency is 50 KHz.
Note that MACRO DWELLS (MCD) are regulated
RUN 8 by the external input that when REG is on. RD
delays are always regulated by the external frequency,
Type in this example showing how multiple waits can even when REG is off.
be based on one timer setting:

9$ 5.5.3 Motion Segments


TMR1 3000 ;SET TMR1 TO 3 SECONDS
P "3 SECONDS" All moves and jogs occur in segments. Normal jogs
TIL TMR1 LE 2000 have two segments: accel/decel, and traverse. Simple
P "2 SECONDS" moves (MRD, MI, and MA) have three segments:
TIL TMR1 LE 1000 accel, traverse, and decel. Position dependent jogs
P "1 SECOND" have three segments: traverse to position, accel/decel,
TIL TMR1 EQ 0 and traverse. The following table shows the different
B segments for BDS5 moves:
Table 5.2. Segments for Different Moves
and type:
Segment MI,MA,MRD J JT/JF
RUN 9
1 Accel Accel/Decel Traverse
2 Traverse Traverse Accel/Decel
3 Decel N.A. Traverse

5-4
BDS5 CHAPTER 5 - DEBUGGING

;SEGMENT 3 IS
Macro moves have up to 30 segments, where each ;STARTED
accel, decel, traverse, and dwell counts as a segment. O1 ON ;TURN ON OUTPUT
In each case, every move begins with the variable ;1
SEG equal to 1. As the move progresses, SEG is B
incremented. When all moves are complete, SEG is
set to zero. 5.5.4 WAIT (W)
You can use the SEG to determine when motion is
The WAIT (W) command can also be used for
complete, since SEG is zero when the BDS5 is not
synchronization. The WAIT command is W followed
commanding a profile. For example,
by the segment for which you want the program to
wait, or a 0 if you want the program to wait for
46$ motion to stop. WAIT is provided in addition to the
MA 10000 1000 TIL command because it takes less space in your
TIL SEG EQ 0 P "MOTION IN program. For example, W 3 performs a similar
PROGRESS" function to TIL SEG EQ 3.
B
The WAIT command provides a few special features
continually prints a message until motion stops. Note needed for motion synchronization. For example, in
that when SEG is zero, the BDS5 is not commanding the following program, the Wait delays execution
motion. However, because there is a lag between the until segment 2 of the second move.
command and the response of the motor, you may
want to insert a short delay after SEG is zero: MI -50000 1000 ;BEGIN THE FIRST
;MOVE
46$ MI -50000 1000 ;CALCULATE THE
MA 10000 1000 ;SECOND MOVE
TIL SEG EQ 0 P "MOTION IN W 2 ;WAIT FOR SEG 2
PROGRESS" ;OF THE SECOND
D 100 ;DWELL 100 MSEC-- ;MOVE
WAIT ;FOR MOTION TO SETTLE
;OUT. AT THIS POINT If TIL SEG EQ 2 were used in place of W 2, then
;MOTION SHOULD BE execution would delay until segment 2 of the first
;ZERO move. Since you normally want to wait for the
B specified segment of the last move calculated, the
WAIT command always applies to the last move.
The commands TIL SEG EQ 0 and W 0 are similar,
since both delay execution until motion profiles are The WAIT command never waits when motion has
complete. However, the W 0 command is an idling stopped. For example, if you entered this program:
command and thus allows lower level tasks to
execute. Also, the TIL command can be followed MI -50000 1000
with a statement (such as the P command above), TIL SEG EQ 4 ;BUG--DELAYS
which is executed continuously until motion stops. ;INDEFINITELY
If you want to synchronize to a segment, the SEG
variable can be used with the TIL command. For
the TIL command would delay execution indefinitely
example, suppose you want to turn on an output after
because SEG would never equal 4. However,
the decel of an MI move begins. The following
sequence can be used:
MI -50000 1000
W 4 ;BUG--DELAYS
47$
;UNTIL MOTION
O1 OFF ;TURN OFF OUTPUT
;STOPS
;1
MI -50000 1000 ;BEGIN THE MOVE
TIL SEG EQ 3 ;WAIT HERE UNTIL only delays until motion stops because the WAIT
command does not delay program execution when

5-5
CHAPTER 5 - DEBUGGING BDS5

motion has stopped. Normally, you should use the (thus, allowing motion to begin), the commanded
WAIT command when you are synchronizing motion motion will be "forgotten" by the BDS5.
to program execution. It is an idling command and
thus allows lower level tasks to execute; also, it takes In the following example, two MI commands are
less space, waits for the last motion program, and it entered and precalculated with GATEMODE on.
does not delay execution when motion has stopped.
Use the TIL command when you need a special GATEMODE ON ;ENABLE GATING
function, such as printing during the wait or if you MI 1000 100 ;PRECALC MOVES.
specifically want to stop lower level tasks from MOTION
executing. MI -1000 ;DELAYED TIL GATE
;IS HIGH
Another example of the WAIT (W) command is seen W 0 ;WAIT FOR MOTION
when using multiple JOG TO/JOG FROM ;TO START
commands. Normally, you should place a WAIT (W)
command between these commands. This is because,
This means no motion will take place until the
the initial traverse of a JOG FROM/JOG TO
hardware input GATE is high. If the above lines
command begins as soon as the command is entered.
were part of a program, the W command would delay
Usually, you will want the traverse to begin at the end
program execution until the GATE switch was on.
last specified acceleration segment. For example,
consider the Macro Move Example #1 in Chapter 3.
It could have been done with one JOG and two JOG
TO commands: 5.6 HINTS

J 1000 ;START MOTION The following section lists some hints addressing the
W 2 ;WAIT TIL JOG most common problems. Most result from a minor
;ACCEL IS DONE misuse or misunderstanding of a BDS5 function.
JT 10000 200 ;ENTER JT FOR
;FIRST DECEL If you change your program in the Motion Link
W 3 ;WAIT TIL JT DECEL Editor and the program function does not change, you
;IS DONE may have forgotten to transmit your updated program
JT 11000 0 ;ENTER FINAL to the BDS5.
;SEGMENT OF
;MOVE If you command motion with MI, MA, MCGO, J, JT,
or JF, and the motor does not move...

5.5.5 Gating Motion with GATE ...make sure GATEMODE is not preventing motion
(turn GATEMODE off if you are not
The GATEMODE variable allows you to pre- certain).
calculate a profile and begin motion within 1.5
milliseconds of a switch closure. To enable GATE,
turn on GATEMODE and follow it with either:

1. One or two MA or MI commands, ...make sure CLAMP is not preventing motion (turn
2. One or two Macro Go (MCGO) commands, or CLAMP off if you are not certain). If it is
3. One Jog or MRD command. CLAMP, try raising the clamp limit,
PECLAMP, somewhat. If that does not
When the hardware input GATE transitions from low help, turn CLAMP off. If you now get
to high, motion begins. GATE is on Connector C7, PE OVERFLOW errors, it may be because
Pin 17. After motion is begun, GATEMODE is the motor is undersized. See the hints for
turned off. You must re-enable GATEMODE for PE OVERFLOW errors below.
each move that you want gated. Also, you cannot
turn GATEMODE on when motion is commanded ...make sure REG is not preventing motion (turn REG
from Jogs, MA, MI, or MCGO commands. If you off if you are not certain). If REG is on, you
turn GATEMODE on and command motion, but turn may not be feeding in the master encoder
GATEMODE off before the GATE input turns on signal properly. Remember, it must always

5-6
BDS5 CHAPTER 5 - DEBUGGING

count up. Check VEXT. It should be ...if you get the error during constant speed, verify
greater than zero for profile regulation to that the AC line voltage is large enough.
work. Chapter 1 lists the BDS5 model numbers. If
the voltage you apply to the BDS5 is lower
...make sure ZERO is off. than the specified voltage, the motor will not
operate properly at high speed.
...make sure all tuning constants are well above zero.
Check KP, KV, KVI, and KPROP. Each If you get overspeed errors (ERROR 13)...
should be at least one hundred; generally,
they are above one thousand. ...if the error occurs occasionally, it may be because
you have the limit (VOSPD) set too low.
...make sure ILIM is not too small. If ILIM is below Raise it by 20% (or as high as 120% of
10%, the motor may not be able to overcome VMAX) and see if the problem is corrected.
frictional load.
...if it happens on acceleration, it may be because
...make sure you are commanding a speed that you your motor is not tuned properly. Is your
can see. The BDS5 can command speeds as motor overshooting or ringing? Retuning
low as .0004 RPM or about one revolution the motor should correct the problem.
every three days, depending on how you
program velocity units. If you have changed ...if it happens when the motor is rotating very slowly
VNUM or VDEN from the factory setting, so that you are sure that the speed is not near
temporarily restore them to see if the VOSPD, your resolver or R/D converter
problem goes away. may have failed. This is simple to confirm.
Disable the BDS5 and write a program that
If the motor moves and you get "PE OVERFLOW" continuously prints PRD. Rotate the motor
error (ERROR 25)... slowly by hand and observe PRD to see if it
skips several counts (do not be concerned if
...if the error occurs occasionally, it may be because PRD skips a few counts--look for skips of 50
you have the limit (PEMAX) set too low. counts or more). If PRD skips more than 50
Raise it by 20% and see if the problem is counts when the motor is rotating slowly,
corrected. contact the factory.

...use the BDS5 RECORD function to record ICMD If the system works differently on power-up than it
when a PE overflow occurs. If ICMD is does after your program starts running, remember that
saturating (that is, equal to ILIM for more many switches are reset on power-up. Your program
than a few milliseconds), you are may set a switch that is cleared, or clear one that is set
commanding motion that your motor cannot during the initial cycle. After that, the program may
perform. See hints on motor loading, ILIM, operate differently. You may also be setting or
ACC, DEC, and PEMAX below. If the clearing switches in your power-up routine that may
overflow occurs at high speeds and with low have the same effect.
ICMD (below ILIM), see the hint about
speed problem.
5.7 ERROR LOG
...make sure that the load does not exceed the
capability of the motor.
The BDS5 responds to a variety of conditions, both
internal and external, hardware and software, which
...make sure that ILIM is set high enough.
are grouped in a single broad category: errors. An
error indicates that there is a problem somewhere.
...if you get the error during acceleration or
More serious errors are grouped as faults.
deceleration, make sure ACC and DEC are
not set too high. If they are too high, the
commanded profile will exceed the
capability of the motor.

5-7
CHAPTER 5 - DEBUGGING BDS5

ERR 83 '2' ;BAD OR OUT OF RANGE

5.7.1 Error Levels since PROP is a switch and cannot be set to 2. If the
error comes from the program, the line number of the
The BDS5's response to an error depends on the offending entry is also printed. Use the Editor to
error's severity. There are four levels of severity, enter these lines at the top of the user program:
listed below in increasing order:
Table 5.3. Error Severity Levels and 11$
Actions PROP 2
B
1. Errors which cause warnings.
2. Errors which cause a program break and stop Exit the Editor and type:
motion, in addition to Level 1 Actions.
RUN 11
3. Errors which disable the system and set the
FAULT LED, in addition to Level 2 Actions.
and the response should be:
4. Errors which disable almost all BDS5
functions (including communications) and ERR 83 LINE 2 '2' ;BAD OR OUT OF
flash the CPU LED to indicate the error ;RANGE
number. These are called firmware errors.
This message shows that the error occurred on line 2.
When any error except a firmware error occurs, a You can enter the Editor and type:
message is displayed on the screen. The following
items are printed: the error number, the offending P 2
entry, and an abbreviated error message. For
example, disable the drive and type in a jog:
and the line:
DIS
PROP 2
J 100
will be displayed.
The BDS5 will respond with:

ERR 50 'J 100' BDS5 INHIBITED


5.7.2 DEP
The error number (50), the offending entry (the whole
If your BDS5 prints to a Data Entry Panel (DEP-01)
line), and the error message (you cannot command a
or any other 40 character wide display, the standard
jog when the drive is inhibited) are given on one 80-
error messages will not print properly. The problem
character line. The error message starts at character
is that error messages are based on an 80 character
40 so that if a 40-character display is used, the error
wide display and the DEP-01 is only 40 characters
message will not be printed. You can display the line
wide. To correct this problem, the BDS5 provides
directly, either with the Motion Link Editor (GOTO
the DEP switch, which, when turned on, cuts all error
A LINE NUMBER selection or ^Q^I), or with the
messages down to 40 characters. If your BDS5 prints
BDS5 Editor (P command).
to a DEP-01, type:
Sometimes only an entry is bad and not the whole
line. In this case only the bad entry is printed. For DEP ON
example,
5.7.3 Error History
PROP 2
The BDS5 stores the twenty most recent errors in the
generates: Error History. To display the entire Error History,
type:

5-8
BDS5 CHAPTER 5 - DEBUGGING

5.7.4 Displaying Error Messages


ERR HIST
The ERR command can also be used to display an
This causes the Error History to be sent to the abbreviated description of the error. For example,
terminal, with the most recent error sent first. When type:
the BDS5 is powered-up, a "DRIVE POWERED UP"
message is inserted into Error History even though ERR 50
this is not an actual error.
To clear the Error History, type: The BDS5 responds with:

ERR CLR ERR 50 BDS5 INHIBITED

Error History remains intact even through power- You may display messages for errors from 1 through
down. 999. If you type in an error number that the BDS5
does not recognize, it will respond with:

ERROR NOT FOUND

A description of all errors is given in Appendix D.

5.7.5 Firmware Errors


Firmware errors are an indication of a serious
problem with the BDS5. These errors stop
communications, disable the drive, and flash the CPU
LED. The CPU LED flashes several times, then turns
off and pauses. The number of flashes represents the
error number. These error numbers range from 2 to
9. See Appendix D for information on these errors.
Contact the factory should one of these errors occur.

5-9
BDS5 CHAPTER 6 - COMPENSATION

CHAPTER 6
COMPENSATION

6.1 INTRODUCTION In a broad sense, the performance of a system is


characterized by its noise susceptibility, response, and
The information in this chapter will enable you to stability. These quantities tend to be mutually
compensate your motor for load conditions. Tuning exclusive. The system designer must decide what
is an important step in setting up and maintaining noise susceptibility (in the form of a "busy" motor) is
your BDS5 servo system. This chapter defines and acceptable.
explains tuning in detail. A flowchart is also
provided for easy step-by-step instructions to tune the "Busyness" is random activity in the motor and can
servo system. often be felt on the motor shaft. Busyness in a motor
should not be confused with PWM noise. PWM
noise is high-pitched, relatively constant noise and
cannot be felt on the motor shaft.
6.2 SYSTEM COMPENSATION
Response is a measure of the system's quickness.
Feedback systems (like a motor controller) require Response can also be characterized by bandwidth and
tuning to attain high performance. Tuning is the by rise time in response to a step command.
process whereby the position and velocity loop gains Normally, designers want high bandwidth, though
are set, attempting to optimize the performance of a sometimes the response is purposely degraded to
system (a BDS5 and a motor connected to a load) to a reduce stress on mechanical components. This is
three-part criterion: called detuning. Typical velocity loop bandwidths
range from 20 to 60 Hz. Typical position loop
Table 6.1. Tuning Criterion bandwidths range from 0.1 to 0.2 times the velocity
loop bandwidth.
Noise Susceptibility
Response Stability measures how controlled the system is.
Stability Stability can be measured with damping ratio or with
overshoot in response to a step command. A
Tuning is normally a laborious procedure requiring discussion of different levels of stability follows.
an experienced person. However, the BDS5 provides
many tools to aid tuning, making it a much simpler
process than it has been in the past.

6-1
CHAPTER 6 - COMPENSATION BDS5

6.2.1 Critical Damping 6.2.3 Overdamping


Generally, the most desirable amount of damping is An overdamped system is very stable but has a longer
Critical Damping. Critically damped systems response time than critically damped or underdamped
respond as fast as possible with little or no overshoot. systems. Also, overdamped systems are noisier than
In Figure 6.1, the graph shows the response of a less damped systems with the same response rate.
BDS5 TACH signal (on Connector C2, Pin 2) to a The graph in Figure 6.3 shows an overdamped
square wave input when the system is critically system.
damped.

Figure 6.3. Overdamping


Figure 6.1. Critical Damping
6.2.4 Ringing
6.2.2 Underdamping
When you are tuning the BDS5 you may tune it so
Sometimes the system is tuned for critical damping that the response rings. Ringing is caused when you
and the system is still too slow. In these cases, you attempt to tune the BDS5 for either too rapid
may be willing to accept less than critical damping. response (too high bandwidth) or too much stability
For applications that can work properly with a (too much damping) or both. The only solution is to
slightly underdamped system, you may reduce the reduce the bandwidth or the stability or both. In
stability to improve the response. The graph in Figure 6.4, the graph shows a system that rings.
Figure 6.2 shows a BDS5 slightly underdamped.

Figure 6.4. Ringing


Figure 6.2. Underdamping

6-2
BDS5 CHAPTER 6 - COMPENSATION

6.3 TUNING ;ENABLE IT. DON'T FORGET TO


;RESTORE PL WHEN YOU HAVE
;FINISHED TUNING.
The TUNE command shakes PL OFF
the motor vigorously. Secure KVI = 0
the motor before tuning. KV = 100
WARNING

If the BDS5 is still unstable, remove power and


The BDS5 is usually shipped with a tuning that will
contact the factory. If it is stable, continue on with
work reasonably well with the load inertia between 0
tuning. Do not forget to turn PL back on when you
to 4 times the rotor inertia. Many applications have
have finished tuning. Also, PL is always turned on
approximately matching inertia. If your system does,
during the BDS5 power-up.
you may not have to adjust the tuning of your BDS5.
The following section describes how you can re-tune
your system.
6.3.2 Reducing ILIM
When tuning a system, it may You may need to reduce ILIM before executing the
be desirable to disable the TUNE command since the TUNE command causes
BDS5 quickly. You can use K, the motor to "shake" at about 15 Hz and at full
the KILL command, to disable torque. This may damage some machines. Also,
NOTE with a one-letter command. lightly loaded motors can overspeed if ILIM is too
high. You should raise ILIM to the highest level that
The BDS5 provides self-tuning. This is a feature that does not cause problems, because the tuning may not
senses the inertial load of your system and then be acceptable if ILIM is too low. The effect can be
attempts to set tuning parameters accordingly. Note that the torque the BDS5 produces is "swamped out"
that self-tuning is not fool-proof. You may need to by friction. If you are not sure how much ILIM is
adjust one or two of the tuning parameters to get necessary, reduce ILIM to a low value (say 5 or 10%)
exactly the response you need. and gradually raise it. If the tuning is acceptable (that
is, it does not ring or overshoot excessively, and it
does respond fast enough), then you are done. Do not
THE MOTOR MAY forget to restore ILIM to its original value.
OSCILLATE!

Unloaded motors tuned for a The TUNE command shakes


large inertia load may become the motor vigorously. You
WARNING unstable when the system is may need to reduce ILIM
activated. If the system before executing the TUNE
becomes unstable, remove command to protect your
CAUTION machine. Do not forget to
the power immediately.
restore ILIM when tuning is
complete.

6.3.1 If Your System Is Completely


Unstable... The TUNE command can
cause the motor to overspeed.
If your system is completely unstable when you You may need to reduce ILIM
enable it, remove power immediately. After restoring to prevent overspeed errors.
NOTE Do not forget to restore ILIM
power, but before enabling the BDS5, turn off the
switch PL, reduce KV to 100, and reduce KVI to 0. when tuning is complete.
This should make the system stable.

;TYPE THESE LINES ONLY IF YOUR


;BDS5 IS UNSTABLE WHEN YOU

6-3
CHAPTER 6 - COMPENSATION BDS5

In either case, first raise the low-pass filter frequency


(LPFHZ) to as high a level as is acceptable. You may
6.4 TUNE COMMAND even decide to remove it by setting LPF to off.

If the TUNE command does not provide a suitable set


When you enter a TUNE command, you specify the
of tuning variables, then you have the option of
response time and the stability level. The response
tuning the BDS5 yourself. You will need an
time is specified in the form of bandwidth. The
oscilloscope. Connect an oscilloscope channel to
higher the bandwidth, the faster the response. The
TACH MONITOR on Connector C2, Pin 2; attach
level of stability is specified as follows:
the scope ground to COMMON on Connector C2, Pin
14. Use the TUNE command to get as close as
Table 6.2. Allowed Tune Command possible.
Stability Settings
1 Slightly overdamped
2 Critically damped 6.5.1 Tuning the Velocity Loop
3 Slightly underdamped
The drive will be enabled and
the motor will turn. Make sure
The drive will be enabled and the motor is secured.
the motor will turn. Make sure
WARNING
the motor is secured. Even if
the BDS5 is disabled, it will
WARNING enable long enough to
execute the TUNE command. Drawing A-84888 shows how to manually tune an
integrating velocity loop. This procedure sets KV
and KVI. First, you should use the TUNE command
Enable the BDS5 and type this command: to set KV and KVI close to optimum values. Apply
DC bus voltage to the BDS5. Follow the instructions
shown on Drawing A-84888. The motor should start
TUNE 30 2 and stop every second. Press the escape key to enter
the Monitor mode where you can change tuning
The BDS5 will shake the motor and set the tuning so constants. The tach should be on the oscilloscope,
that the velocity loop has a bandwidth of showing the motor performance. As the drawing
approximately 30 Hz and is critically damped. The notes, you should increase KV for increased stability
allowed bandwidths are 5, 10, 15, 20, 25, 30, 40, and and increase KVI to make the system more
50 Hz. responsive.

The tune command does not always provide an You need to make several decisions: Is the unit
acceptable tuning. If not, you can tune the BDS5 underdamped? Is the system response too fast? Is
yourself. the system ringing? Is there a resonance present?
6.5 TUNING THE BDS5 YOURSELF Then, take the action listed on Drawing A-84888 in
the the Installation and Setup Manual.
If you use the TUNE command, and the resulting
There is a close relationship between the response of
tuning variables cause the system to oscillate, there
the system and the variable KVI. Response is often
are generally two reasons:
measured by the system bandwidth. Bandwidth is the
frequency with which the system response falls to
1. The bandwidth in the TUNE command is set
70% of the nominal response. For example, if your
too high for the system to function properly.
velocity command was a sine wave with peaks of
±100 RPM, the bandwidth would be the frequency
2. The low-pass filter is set too low (this only
that the response fell to a sine wave with peaks of
applies if LPF is on).
±70 RPM. The relationship between velocity loop
bandwidth and KVI is shown in Table 6.3.

6-4
BDS5 CHAPTER 6 - COMPENSATION

tuned position loop (that is, the highest setting for


Table 6.3. Velocity Loop Bandwith vs. KVI
KP) and velocity loop bandwidth. Note that the
VELOCITY LOOP position loop bandwidth will be substantially lower
KVI BANDWIDTH than the velocity loop bandwidth (usually by a factor
of 5 to 10).
1400 5 Hz
2650 10 Hz Table 6.4. Velocity Loop Bandwidth vs.
4000 15 Hz KPMAX

5000 20 Hz VELOCITY LOOP


KPMAX BANDWIDTH
6250 25 Hz
500 5 Hz
7500 30 Hz
1000 10 Hz
8750 40 Hz
1500 15 Hz
10000 50 Hz
2000 20 Hz
If you are using a proportional velocity loop (PROP 2500 25 Hz
is on), then adjust KPROP until the motor is
3000 30 Hz
performing appropriately.
4000 40 Hz
5000 50 Hz
6.5.2 Tuning the Position Loop
If you want to eliminate some or all of the following
Once the velocity loop is tuned, you can tune the
error, you can raise KF as high as unity feed-
position loop. Break program execution and stop
forward (Unity is defined as KF = 16384). However,
motion by typing S. Type in the following
the larger you make KF, the more you must reduce
commands:
KP to eliminate overshoot and thus reduce the
position loop performance. If you cannot get the
The drive will be enabled and desired performance from the position loop, then try
the motor will turn. Make sure reducing ACC and DEC to reduce overshoot. This
the motor is secured. can be a good way to limit overshoot in the position
WARNING loop, and you may be able to raise KP slightly (about
20%) to improve performance.
6.6 RECORD AND PLAY
The RECORD command allows you to record most
BDS5 variables in real time for later playback. You
PEMAX 30000 can simultaneously record up to four variables. You
ZPE ;ZERO POSITION can record any variable except PE, REMOTE,
;ERROR TO AVOID TMR1, TMR2, TMR3, TMR4, VAVG, VXAVG, or
;POSITION ERROR any user switches. You can specify the time between
;OVERFLOW WHEN points from one millisecond to one minute. You can
;ENABLING POSITION record up to 1000 instances of 1 variable, 500
;LOOP instances of 2 variables, 333 instances of 3, and 250
PL ON instances of 4 variables.
KF=0
RUN 80 The format of the RECORD command is:

The motor should again begin turning. Now adjust RECORD <Number> <Time> <1 to 4 Variables>
KP until the motor is performing appropriately.
Table 6.4 shows the relationship between a properly

6-5
CHAPTER 6 - COMPENSATION BDS5

Where number is the number of intervals over which


the variables will be recorded, and time is the time in
milliseconds of each interval. 6.7.1 Overloading the Motor
Note: <Number> <= 1000 for 1 Variable
Overloading the motor is the most common problem
<Number> <= 500 for 2 Variables
for positioning systems (that is, systems with PL on).
<Number> <= 333 for 3 Variables
If you overload the system, the position error can
<Number> <= 250 for 4 Variables
grow to very large values. When the command stops,
the motor "reels in" the following error and can
For example,
overshoot excessively. It looks like a tuning problem,
but it is actually caused by the motor being
405$ ;BEGINNING LABEL undersized, ACC or DEC being set too high, or ILIM
EN ;ENABLE BDS5 being set too low.
RECORD 500 1 VFB ;RECORD VFB FOR
J 1000 ;1/2 SECOND JOG When a motor is overloaded, it has the following
B ;1000 RPM characteristics:

Records the velocity response of the BDS5 to a JOG • The system overshoots, sometimes excessively,
command. but does not ring or oscillate.

After data is recorded, you can use the PLAY • Reducing ACC and DEC eliminates the
command to print each point on the screen. However, problem.
Motion Link provides all the routines to retrieve, plot,
print, and store recorded data on your computer and • Turning off PL eliminates the problem.
line printer.
• The motor current is near or at saturation
The RECORD command is useful when tuning a during a large part of the move. Use the BDS5
system because you can display the BDS5 response to RECORD function to record ICMD. If ICMD
commands without an oscilloscope. However, it is is equal to ILIM for more than a few
not limited to tuning. For example, you can record milliseconds, then your system is saturated.
VCMD to plot a motion profile, or you can plot
VEXT to watch the external encoder/analog input. Overloading the motor can be corrected by the
You can also plot user variables to watch the following actions:
performance of your program.
6.7 PROBLEMS • Reducing ACC and DEC.

Some times there are problems tuning. Usually the • Reducing the load on the motor.
TUNE command will provide you with a tuning that
is either acceptable or close to acceptable. If not, you • Increasing ILIM (if it is less than IMAX).
can tune the system yourself. Sometimes there are
physical factors that prevent you from attaining the • Using a BDS5 with a higher current rating.
performance you need. These problems fall into four
categories: • Using a motor with more peak stall torque.

1. Overloading the Motor


6.7.2 Compliance
2. Compliance
In compliant systems, the load is not tightly coupled
3. Resonance to the motor shaft. If you move the load by hand, you
can feel springiness. Compliant systems often are
4. Changing Load Inertia or Reflected Inertia very stable when you tune with lower target
bandwidths. However, they oscillate vigorously at
low frequencies when you try to tune them for higher
bandwidths.

6-6
BDS5 CHAPTER 6 - COMPENSATION

• Detune (that is, reduce the bandwidth of) the


When a system is compliant, it has the following system. If the times when your system will
characteristics: have excessively changing inertia are
predictable, you can write your program to
• There is springiness between the motor and the detune your system in these regions.
load or at the motor mounting plate.

• The TUNE command calculates tuning 6.7.4 Resonance


variables that cause the system to oscillate.
Resonance is a high frequency (> 500 Hz) where the
• The frequency of oscillation is less than
system mechanics oscillate. Normally, systems with
100 Hz.
resonance will be very stable when you tune with
lower target bandwidths. As you increase the target
Compliance can be corrected by the following
bandwidth, you will begin to hear a fairly pure, high
actions:
pitch. If you want to decrease resonance, use shorter,
larger diameter driving shafts. Often, the low-pass
• Reduce the bandwidth of the system.
filter can help you raise the bandwidth 20% or 30%,
but this can be a difficult trial-and-error process: you
• Stiffen the machine so the load is not springy.
slowly lower the low-pass filter frequency (LPFHZ)
and attempt to raise the target bandwidth for tuning.

6.7.3 Non-Linear Mechanics When your system has a resonance, it will have the
following characteristics:
BDS5 tuning is based on linear control theory. The
most important requirement of a linear motor • The system will make a clear, high pitch
controller is that the total reflected inertia should not (>500 Hz). Do not confuse this problem with
change substantially during operation. Load inertia compliance, which has a low pitch.
includes all the inertia reflected to the motor, such as
inertia through gearboxes and leadscrews. Inertia can If the system performance is poor because of
change in ways that are easy to understand, such as changing inertia, you can make the following
the inertia of a spool of cable decreasing when the corrections:
cable is unrolled. It can also change in less intuitive • Enable the low-pass filter (LPF) and reduce
ways, such as chain drives (which have load in one LPFHZ, if necessary.
direction but are unloaded in the other) and systems
with excessive backlash (where there is no load when • Reduce the bandwidth of the system.
gear teeth are not touching).
• Shorten the length and increase the diameter of
When the inertia changes, the system has the shafts and lead screws.
following characteristics:

• System performance is excellent when the 6.7.5 Low-Pass Filters


motor is in some positions and unacceptable
when the motor is in other positions.
The LPF switch enables the low-pass filter. It can be
turned on and off when the drive is operating. The
• Reducing the bandwidth eliminates the
frequency of the low-pass filter is stored in LPFHZ in
problem.
Hz. It can also be changed when the drive is
operating. For example, if LPFHZ is 200 and LPF is
If the system performance is poor because of
on, then a 200 Hz low-pass filter is run in the BDS5.
changing inertia, you can make the following
The filter can be modeled as two cascaded, low-pass,
corrections:
single-pole filters, both with a 3 dB frequency of 200
Hz. LPFHZ should be set as high as possible, since it
• Correct the system mechanics so that inertia is
degrades the system performance.
constant.

6-7
CHAPTER 6 - COMPENSATION BDS5

For example, the following sequence sets the low-


pass filter to 250 Hz and enables the drive.

LPF ON ;ENABLE LOW-PASS FILTER


LPFHZ 250 ;SET BREAK FREQ. TO 250
;HZ

If the low-pass filter is on, the


TUNE command may not work
well.
NOTE

6-8
BDS5 APPENDIX A - WARRANTY INFORMATION

APPENDIX A
WARRANTY INFORMATION

Industrial Drives, a Kollmorgen Division, warrants The terms and conditions of this Warranty are
that equipment, delivered by it to the Purchaser, will provided with the product at the time of shipping or
be of the kind and quality described in the sales in advance upon request.
agreement and/or catalog and that the equipment will
be free of defects in design, workmanship, and The items described in this manual are offered for
material. sale at prices to be established by Industrial Drives
and its authorized dealers.

A-1
BDS5 APPENDIX B- ASCII TABLE

APPENDIX B
ASCII TABLE

The chart on the following pages is an ASCII Code


and Hexadecimal conversion chart. The BDS5
doesnot support extended ASCII (128-255).

B-1
APPENDIX B - ASCII TABLE BDS5

ASCII CODE AND HEX CONVERSION CHART


00 NUL 10 DLE 20 30 40 50 60 70
^P SP 0 @ P ` p
0 16 32 48 64 80 96 112
01 SOH 11 DC1 21 31 41 51 61 71
^A ^Q ! 1 A Q a q
1 17 33 49 65 81 97 113
02 STX 12 DC2 22 32 42 52 62 72
^B ^R “ 2 B R b r
2 18 34 50 66 82 98 114
03 ETX 13 DC3 23 33 43 53 63 73
^C ^S # 3 C S c s
3 19 35 51 67 83 99 115
04 EOT 14 DC4 24 34 44 54 64 74
^D ^T $ 4 D T d t
4 20 36 52 68 84 100 116
05 ENQ 15 NAK 25 35 45 55 65 75
^E ^U % 5 E U e u
5 21 37 53 69 85 101 117
06 ACK 16 SYN 26 36 46 56 66 76
^F ^V & 6 F V f v
6 22 38 54 70 86 102 118
07 BEL 17 ETB 27 37 47 57 67 77
^G ^W ‘ 7 G W g w
7 23 39 55 71 87 103 119
08 BS 18 CAN 28 38 48 58 68 78
^H ^X ( 8 H X h x
8 24 40 56 72 88 104 120
09 HT 19 EM 29 39 49 59 69 79
^I ^Y ) 9 I Y i y
9 25 41 57 73 89 105 121
0A LF 1A SUB 2A 3A 4A 5A 6A 7A
^J ^Z * : J Z j z
10 26 42 58 74 90 106 122
0B VT 1B ESC 2B 3B 4B 5B 6B 7B
^K ^[ + ; K [ k {
11 27 43 59 75 91 107 123
0C FF 1C FS 2C 3C 4C 5C 6C 7C
^L ^\ , < L \ l |
12 28 44 60 76 92 108 124
0D CR 1D GS 2D 3D 4D 5D 6D 7D
^M ^] - = M ] m }
13 29 45 61 77 93 109 125
0E SO 1E RS 2E 3E 4E 5E 6E 7E
^N ^^ . > N ^ n ~
14 30 46 62 78 94 110 126
0F SI 1F US 2F 3F 4F 5F 6F 7F
^O ^_ / ? O _ o DEL
15 31 47 63 79 95 111 127

B-2
BDS5 APPENDIX B- ASCII TABLE

ASCII CODE AND HEX CONVERSION CHART ( CONTD )


80 90 A0 B0 C0 D0 E0 F0

128 144 160 176 192 208 224 240


81 91 A1 B1 C1 D1 E1 F1

129 145 161 177 193 209 225 241


82 92 A2 B2 C2 D2 E2 F2

130 146 162 178 194 210 226 242


83 93 A3 B3 C3 D3 E3 F3

131 147 163 179 195 211 227 243


84 94 A4 B4 C4 D4 E4 F4

132 148 164 180 196 212 228 244


85 95 A5 B5 C5 D5 E5 F5

133 149 165 181 197 213 229 245


86 96 A6 B6 C6 D6 E6 F6

134 150 166 182 198 214 230 246


87 97 A7 B7 C7 D7 E7 F7

135 151 167 183 199 215 231 247


88 98 A8 B8 C8 D8 E8 F8

136 152 168 184 200 216 232 248


89 99 A9 B9 C9 D9 E9 F9

137 153 169 185 201 217 233 249


8A 9A AA BA CA DA EA FA

138 154 170 186 202 218 234 250


8B 9B AB BB CB DB EB FB

139 155 171 187 203 219 235 251


8C 9C AC BC CC DC EC FC

140 156 172 188 204 220 236 252


8D 9D AD BD CD DD ED FD

141 157 173 189 205 221 237 253


8E 9E AE BE CE DE EE FE

142 158 174 190 206 222 238 254


8F 9F AF BF CF DF EF FF

143 159 175 191 207 223 239 255

This side of the table is provided for Decimal to Hex Conversion.


The BDS5 does no support extended ASCII ( 128-255 ) Decimal to Hex Conversion.

B-3
BDS5 APPENDIX C - SOFTWARE COMMANDS

APPENDIX C
SOFTWARE COMMANDS

C.1 EXPRESSIONS AND SYMBOLS


The following expressions and symbols are used in defining the syntax of the instruction set:

<Label>$ One or two digits followed by a dollar sign. When using GOSUB or GOTO, a user
variable can be used as <Label> if its value is between 0 and 99.

<Time> Specifies time in milliseconds. Must be between 0 and 2,147,483,647 (about 25 days).

<Logical> One of the following: GT, GE, LT, LE, EQ or NE for greater-than, greater-than-or-
equal-to, less-than, less-than-or-equal-to, equal-to, or not-equal-to, respectively.

<Expr> Any valid math expression. Valid math expressions include user variables, indirect
references to user variables, constants, algebraic and logical math operators,
parentheses.

Examples of valid expressions are:

X1*X2*X3
(X2-VFB)/VOFF
X1&07FH
PFB-PCMD
TMR1/100
(X1+X2)*(X1+(X2-X3))

<Position> Any valid expression for position. The result is assumed to be in position units. The
range is +/-2,147,483,647 counts. If your system has position units, then the limits are
the position unit equivalent of +/-2,147,483,647.

<Velocity> Any valid expression for velocity. The result is assumed to be in velocity units.

C-1
APPENDIX C - SOFTWARE COMMANDS BDS5

<Traverse> Any valid expression for velocity. The result is assumed to be in velocity units.
Traverse is used in macro-moves as the middle speed of three speed moves.

<End> Any valid expression for velocity. The result is assumed to be in velocity units. End is
used in macro moves as the end speed of two and three speed moves.

<Text> <Text> is any text string of characters. The control character symbol(^) converts the
succeeding character to a control character.

{} Indicates an optional parameter.

Constants-ON, ON and Y are equivalent to 1. OFF and N are equivalent to 0. The constants can be
OFF, Y, and N used in any expression and in response to the Input command.

C-2
APPENDIX C - SOFTWARE COMMANDS BDS5

C.2 COMMANDS
The following commands are the instructions used to program the BDS5.

; Comment. Comments can follow any instruction. Also, entire lines can be comments.
The semicolon must be preceded by a space unless it is the first character in a line.
Allowed on any line including the BDS5 Editor.

GOTO 5 ;THIS IS A COMMENT FOR A COMMAND


;THIS ENTIRE LINE IS A COMMENT

$ Labels. Labels can be 0-500 and cannot be repeated. They must be decimal constants.
They are allowed only from the user program. The following labels are special
purpose labels:

A$ A alarm label
B$ B alarm label
C$ C alarm label
VARIABLE$ variable input label
POWER-UP$ power-up label
AUTO$ AUTO label
MANUAL$ MANUAL label
ERROR$ error handler label.
BACKGROUND$ background label.

Alarm labels require that you specify the switch that starts the alarm and the state of the
switch (ON or OFF) that should trigger the alarm. If the switch is in the specified state
when execution is enabled, the alarm will be fired. Otherwise, the alarm is edge
sensitive. Specifying ON is actually specifying the positive edge.

Format: <Label>$
<Alarm Label>$ <Switch> <On/Off>

Example:

55$
BACKGROUND$
A$ I1 ON

C-3
BDS5 APPENDIX C - SOFTWARE COMMANDS

? Quick If. Conditionally executes one instruction if the condition is true, and another
instruction if the condition is false. Allowed from the interactive and monitor modes,
and the user program.

Format: ? <Condition> {Instruction} {:} {Instruction}

Example:

? PFB GT 100 P PFB


? X1 EQ 1 P “X1 = 1” : P “X1 <> 1”
? X1*X2 NE X4/(X5+5) B
? LIMIT EQ ON : P “LIMIT IS OFF”

<Condition> is the same as <Expr> <Logical> <Expr>.

<Instruction> is any instruction except TIL.

B Break program execution. Allowed from the user program or the monitor mode.

Format: B

CONTINUE Continue motion at the present speed. Turn REG and GEAR off. Optionally, you can
specify the number of milliseconds, up to 1 second, that you want the present speed
averaged over. If this time is not specified, the speed is averaged over 1 millisecond.

Format: CONTINUE
CONTINUE <time>

Example:

CONTINUE 100 ;AVERAGE SPEED FOR .1 SEC.

DUMP Display all the variables and the user program on the terminal, or display the version.
Allowed from interactive. Drive must be disabled.

Format: DUMP ;Dump variables and program


DUMP VERSION ;Dump firmware version

C-4
APPENDIX C - SOFTWARE COMMANDS BDS5

D Delay program execution for a specified amount of time, up to 2,147,483,647


milliseconds or 25 days. D is an idling command (that is, if you are using multi-
tasking, D suspends the task but lets other tasks proceed). Allowed only from the user
program.

Format: D <Time>

Example:

D 1000 ;DWELL FOR 1 SECOND

DIS Disable the BDS5. This command turns off the variable READY. Refer to Drawing
C-84732 for more information. Allowed from interactive mode, monitor mode, and
user program.

Format: DIS

ED Edit the user program. Allowed only from interactive mode.

Format: ED

Editor Commands:

DEL Delete a line


F Find string
C Change string
I Enter insert mode
P Go to a line and print it
NEW Clear user program
SIZE Show remaining program memory
PASS Change password
Empty Line Go to the next line and print
Escape Key Exit the insert mode/editor

ELIF Part of block if. Conditionally begins block execution. Allowed from the user
program. (See the IF command).

Format: ELIF <Expr> <Logical> <Expr>

Example:

ELIF PFB GT 100

<Expr> <Logical> <Expr> is the condition.

C-5
BDS5 APPENDIX C - SOFTWARE COMMANDS

ELSE Part of block if. Begins last block execution. Allowed from the user program. (See
the IF command).

Format: ELSE

EN Enable the BDS5 This command turns on the variable READY. Refer to Drawing C-
84732 for more information. Allowed from interactive mode, monitor mode, and user
program.

Format: EN

END End a task. If you are using multi-tasking, END ends that task. If there are no special
labels present in the program (except POWER-UP$), then END is equivalent to Break
(B). If there are special labels, the BDS5 becomes inactive waiting for a task to
resume execution.

Format: END

ENDIF Part of block if. Ends block if. Allowed from the user program. (See the IF
command).

Format: ENDIF

ERR Display an error message, display the error history, or clear the error history. Allowed
from interactive and monitor modes and user program.

Format: ERR <Error Number>


ERR <Option>

Where <Error Number> is a valid error number and <Option> can be HIST or CLR.

Example:

ERR 25 ;DISPLAY MESSAGE FOR ERR 25


ERR HIST ;DISPLAY ERROR HISTORY
ERR CLR ;CLEAR ERROR HISTORY

GOSUB Go to a subroutine. Allowed only from the user program.

Format: GOSUB <Label>

Example:

GOSUB 25
GOSUB X3

C-6
APPENDIX C - SOFTWARE COMMANDS BDS5

GOTO Go to a program label. Allowed only from the user program.

Format: GOTO <Label>

Example:

GOTO 25
GOTO X5

H Delay (Hold-up) execution of a task until a switch is in the specified state. You can
use any switch except REMOTE and XS11-XS50 (XS1-XS10 are allowed.) H is an
idling command; if you are using multi-tasking, H suspends the task but lets other tasks
proceed. Allowed only from the user program.

Format: H <Switch> <ON/OFF>

Example:

H XS1 ON
H I1 OFF

IF Conditionally execute a block of instructions. Allowed from the user program.

Format: IF <Expr> <Logical> <Expr>

Example:

IF PFB GT 100
... ;FOLLOW WITH ELSE, ETC

IF X1*X2 NE X4/(X5+5)
... ;FOLLOW WITH ELSE, ETC

C-7
BDS5 APPENDIX C - SOFTWARE COMMANDS

INPUT Prompt the operator for an input variable. If limits are specified, then make sure
operator stays within them. If they are not specified, then use the limits of the variable
being prompted for. W is an idling command (that is, if you are using multi-tasking,
INPUT suspends the task until the operator presses the enter key, but lets other tasks
proceed). Allowed only from the user program.

Format: INPUT “<Text>” <Variable>{decimal} {Min} {Max}

Where <Variable> is any valid, programmable variable. You can optionally specify
maximum and minimum limits (if you include one, you must include the other). {Min}
is the minimum input allowed and {Max} is the maximum input allowed.

If you specify decimal, the input received from the operator will be multiplied by
10^{decimal}. The BDS5 does not use floating point math internally. The input
command allows you to receive floating point input from the operator.

Example:

INPUT “ENTER NEW SPEED” X1[3] -5000 5000


INPUT “ENTER NEW CURRENT LIMIT” ILIM

In the first example, if the operator entered 1.234, the BDS5 would store 1234.0 in X1;
that is, 1.234 is multiplied by 10^3 = 1000. Note that if you specify {decimal}, {Max}
and {Min} limit the value after the multiplication. In the above example, {Max} = -
5000 limits the operator to -5.000.

J Jog at a continuous speed. Allowed from the interactive mode and the user program.

Format: J <Velocity>

Example:

J 1000
J X1

JF Jog, but wait until the Position command (PCMD) crosses the specified position before
beginning accel/decel. Speed must not be zero when executing this instruction.
Allowed from the interactive mode and the user program.

Format: JF <Position> <Velocity>

Example:

JF 10000 10
JF 100*X1 4000

C-8
APPENDIX C - SOFTWARE COMMANDS BDS5

JT Jog at a continuous speed, but delay beginning accel/decel so that the Position
command will equal the specified position when the accel/decel is complete. Allowed
from the interactive mode and the user program.

Format: JT <Position> <Velocity>

Example:

JT -610000 100
JT 100*X45 -800

K Disable the drive and break the program. Allowed from interactive and monitor modes
and the user program. See Drawing C-84732 for more information.

Format: K

MA Move to the specified position at the specified speed. If the speed is not specified, it is
assumed to be VDEFAULT. Allowed from the interactive mode and the user program.

Format: MA <Position> {Velocity}

Example:

MA 10000 1000 ;MOVE AT 1000


MA 0 ;MOVE TO 0 AT VDEFAULT

MCA Define an absolute macro-move section to the specified position at the specified
traverse and ending speeds. See Chapter 5 for descriptions of defaults. Allowed from
the interactive mode and the user program.

Format: MCA <Position> {Traverse} {End}

Example:

MCA 1000 100 500


MCA 2000 10
MCA 5000
MCA 7000 0

C-9
BDS5 APPENDIX C - SOFTWARE COMMANDS

MCD Define a macro-move dwell section for the specified time. This is only valid when the
previous macro-move section ended at zero speed. When used with the profile
regulation mode, time is inversely proportional to external input frequency. Allowed
from the interactive mode and the user program.

Format: MCD <Time>

Example:

MCD 500 ;DWELL 0.5 SECONDS

MCGO Execute a macro move. This is only valid when the last macro-move section ended at
zero speed. Allowed from the interactive mode and the user program.

Format: MCGO

MCI Define an incremental macro-move section for the specified distance at the specified
traverse and ending speed. See Chapter 5 for descriptions of defaults. Allowed from
the interactive mode and the user program.

Format: MCI <Position> {Traverse} {End}

Example:

MCI 100000 500 5000


MCI 3000 10
MCI -56000
MCI 8000 0 ;LAST SECTION

MI Incrementally move the specified distance at the specified speed. If the speed is not
specified, it is assumed to be VDEFAULT. Allowed from the interactive mode and the
user program.

Format: MI <Position> {Velocity}

Example:

MI 10000 1000 ;MOVE AT 1000


MI -1000 ;MOVE BACK 1000

MOTOR Display the present motor drive combination. This command is used to determine the
motor for which your BDS5 was configured when it was shipped. This command is
not normally used by the customer.

Format: MOTOR

C-10
APPENDIX C - SOFTWARE COMMANDS BDS5

MRD Make an absolute move so that the output of the Resolver-to-Digital converter output
(PRD) will equal the specified value. A direction option indicates whether the motion
should be clockwise (CW), counter-clockwise (CCW), or whichever way is shortest
(no option specified). Allowed from the interactive mode and the user program.

Format: MRD <R/D-Position> <Velocity> {Option}

Where R/D-Position is greater than 0 and less than the resolution of the Resolver-to-
Digital (R/D) converter. For the standard 12-bit resolution R/D converter, the upper
limit is 4095. Option is either CCW or CW.

Example:

MRD 3200 100 CCW ;MOVE CCW AT 100 RPM


MRD 0 50 ;GO BEST WAY AT 50 RPM

NORM Normalize the Position command and position feedback to the specified position.
Allowed from the interactive mode and the user program when there is no commanded
motion.

Format: NORM <Position>

Example:

NORM 1000

C-11
BDS5 APPENDIX C - SOFTWARE COMMANDS

P Print the variables specified with optional formats on a new line. Allowed from the
interactive and monitor modes and the user program.

Format: P <Expr>{format} | “<Text>” ...

Where {format} is the print format specifying field width and Hex output. The ellipsis
(...) indicates that the P can be followed by up to 15 different expressions and text
strings.

Format can be: B Binary


H Hex
S ON or OFF
C ASCII Character
Blank Decimal Integer
nn.m Floating Point Output where
nn is the total number of digits
m is the number of digits after the
decimal point.

nn.m.p Same as nn.m except only print p


digits after the decimal point (p must
be less than m).
Examples:

P PFB VFB IMON ;PRINT 3 FEEDBACK VARS


P PFB[4] ;PRINT PFB IN 4 CHARS
P IN[H] ;PRINT INPUT IN HEX
P IN[5H] ;PRINT INPUT, 5 HEX CHARS
P 123456[.4] ;PRINT 12.3456
P 123456[.4.2] ;PRINT 12.34
P “BDS5” ;PRINT “BDS5” ON THE SCREEN
P “XPOS=” PFB ;PRINT PFB WITH TEXT

PS Print with status. This is identical to the P command, except status of the BDS5 is
displayed on the end of the printed line. See P for format and examples. Allowed
from the interactive and monitor modes and the user program.

PLAY Playback recorded points. This command prints all the variables that were recorded by
the last RECORD command. Normally, you should use Motion Link’s
PLAYBACK,FROM BDS5 command rather than the BDS5 PLAY command. Motion
Link formats, plots, and prints data in a much more readable form than does the BDS5.

R Refresh screen. This command is the same as the P command except that no line feed
is printed. This command can be used to overprint, the practice of refreshing the
display by printing a line with new values over the same line with old values. It is
generally used for status updating. See P for examples and formats. Allowed from the
interactive and monitor modes and the user program.

C-12
APPENDIX C - SOFTWARE COMMANDS BDS5

RD Delay program execution for a specified period of time, but use the external clock to
time the delay. REG need not be on for RD to function properly. Allowed only from
the user program.

Format: RD <Time>

Example:

RD 1000

RECORD Record 1-4 variables for a specified period of time. This command allows you to
record most BDS5 variables in real time for later playback. You cannot record PE,
REMOTE, TMR1, TMR2, TMR3, TMR4, VAVG, VXAVG, or any user switches.
Allowed from the user program or from the interactive mode.

Format: RECORD <Number> <Time> <1 to 4 Variables>

Where <Number> is the number of intervals over which the variables


will be recorded,

and <Time> is the time in milliseconds of each interval.

Note: <Number> <= 1000 for 1 Variable


<Number> <= 500 for 2 Variables
<Number> <= 333 for 3 Variables
<Number> <= 250 for 4 Variables
Examples:

RECORD 1000 1 VFB


;RECORD VFB ONCE/MSEC FOR 1 SECOND
RECORD 500 10 VCMD VFB
;RECORD VCMD AND VFB ONCE/10 MSEC FOR
;5.0 SECOND
RECORD 100 1000 VCMD VFB PCMD
;RECORD VCMD, VFB, AND PCMD
;ONCE/SECOND FOR 100 SECONDS

RET Return from a subroutine. Allowed only from the user program.

Format: RET

RS Refresh screen with status. This command is identical to the R command, except status
of the drive is displayed at the end of the printed line. See P for format and examples.
Allowed from the interactive and monitor modes and the user program.

C-13
BDS5 APPENDIX C - SOFTWARE COMMANDS

RUN Run a program starting at the specified label. Allowed from the interactive mode. If
no label is specified, run multi-tasking.

Format: RUN <Label>


RUN ;RUN MULTITASKING

Example:

RUN 4
RUN X1
RUN

S Stop motion using a deceleration of AMAX. Allowed from the interactive and monitor
modes and the user program.

Format: S

TIL Continuously execute an optional instruction until condition is true. If no instruction is


specified, then delay program execution until the condition is true. <Instruction>
cannot be another TIL. Allowed only from the user program.

Format: TIL <Expr> <Logical> <Expr> [Instruction]

Example:

TIL PFB GT 100 P PFB


TIL X1*X2 NE X4/(X5+5) GOSUB 100
TIL VFB LT 100 ;DELAY EXECUTION

TUNE Tune the motor to a new load. This command is used if the motor needs to be re-tuned.
The tuning parameters (KP, KV, KVI, and KPROP) determine the motor stability and
response time. Often when the motor load is changed, tuning parameters need to be
reset. The Tune command specifies Bandwidth and Stability. Higher bandwidth will
produce faster response time. Higher stability will produce less overshoot, but noisier
performance. Allowed from the interactive mode and the user program.

Format: TUNE <Bandwidth> <Stability>

Where Bandwidth is 5,10,15,...50 Hz and stability is 1, 2, or 3.

Example:

TUNE 25 2

C-14
APPENDIX C - SOFTWARE COMMANDS BDS5

W Wait for a specified motion profile segment to start before continuing program
execution. W is an idling command (that is, if you are using multi-tasking, W suspends
the task but lets other tasks proceed). Allowed only from the user program.

Format: W <Segment>

Where Segment is a motion segment

Examples:

W 3 ;WAIT FOR SEGMENT 3 TO START


W 0 ;WAIT FOR MOTION TO STOP

ZPE Clear the position error. This command is useful when enabling the position loop
when position error has been allowed to accumulate. Allowed from the interactive and
monitor modes and the user program.

<BDS Send (download) a program from the BDS5 Program Memory to the terminal.
Allowed from the interactive mode and the user program.

Format: <BDS

>BDS Receive (upload) a program from the terminal and store it in BDS5 program memory.
This command destroys the old program memory. A password may be specified. If
the editor password has been set and the password is incorrect or not specified, then an
error will result and the original program memory will remain. Allowed from the
interactive mode and the user program.

Format: >BDS {PASS}

where PASS is the password as set in the editor.

Example:

>BDS SECRET ;UPLOAD, PASSWORD=SECRET


>BDS ;UPLOAD, NO PASSWORD

C-15
BDS5 APPENDIX D - ERROR CODES

APPENDIX D
ERROR CODES

D.1 INTRODUCTION
The BDS5's response to an error depends on the error's severity. There are four levels of severity, listed below in
increasing order:

Table D.1. Error Severity Levels and Actions

1. Errors which cause warnings.


2. Errors which cause a program break and stop motion, in addition to Level 1 Actions.
3. Errors which cause the system to disable and set the FAULT Hardware Output, in addition to Level 2
Actions.
4. Errors which disable almost all BDS5 functions (including communications) and flash the CPU LED to
indicate the error number. These are called firmware errors.

See Chapter 5 for more information about error severity. The following is a complete list of errors generated by the
BDS5.

D.2 HARDWARE FAULTS

D.2.1 Firmware Faults

ERROR 2 ”HARDWARE- U-P FAIL” SEVERITY 4


The microprocessor cannot pass self-test. This fault causes the
microprocessor to blink the CPU light twice and then pause. The BDS5 will
not communicate or run the user program. Contact the factory.

ERROR 3 ”HARDWARE-CHECKSUM” SEVERITY 4


The microprocessor cannot pass the checksum self-test. This fault causes the
microprocessor to blink the CPU light three times and then pause. The BDS5
will not communicate or run the user program. Contact the factory.

ERROR 4 ”SOFTWARE WATCHDOG” SEVERITY 4


The microprocessor has failed the software watchdog self-test. This fault
causes the microprocessor to blink the CPU light four times and then pause.
The BDS5 will not communicate or run the user program. Contact the
factory.

D-1
APPENDIX D - ERROR CODES BDS5

ERROR 5 ”+5 VOLTS” SEVERITY 4


The +5 volts is too low. This fault causes the microprocessor to blink the
CPU light five times and then pause. The BDS5 will not communicate or run
the user program. Check the +10 VDC input into the BDS5 (Connector C4,
pin 4 or 8). If it is below 6.5 Volts for even a short time, this error will occur.
This happens when the logic supply is loaded too heavily, or when the line
voltage (PSR4/5 Connector C1, pins 2 and 3) is below 98 VAC (115 VAC
less 15%).

D.2.2 BDS5 Faults

ERROR 10 ”REMOTE OFF” SEVERITY 2


You attempted to execute an instruction that requires the hardware input
REMOTE on the signal connector to be active. This error breaks program
execution.

ERROR 11 ”OVER-TEMP” SEVERITY 3


The thermostat on the BDS5 heatsink opened, indicating overheating.
Overheating may be caused by excessive ambient temperature, obstructed
airflow, broken fan, etc. Correct any such condition before resuming
operation. REMOVE ALL POWER BEFORE CHECKING THIS. If
everything is functioning properly, a drive with a higher current rating may be
required. This error breaks program execution and disables the BDS5.

ERROR 12 ”OVER-CURRENT” SEVERITY 3


The BDS5 detected an overcurrent. This can be caused by a shorted motor
winding, a shorted power transistor or a short circuit in the wiring. Be sure to
check all wiring before resuming operation. This error breaks program
execution and disables the BDS5.

ERROR 13 ”OVER-SPEED” SEVERITY 3


The BDS5 determined that the speed of the motor was greater than the
variable VOSPD. If this occurs occasionally, it may be a nuisance fault that
should be corrected by raising VOSPD by 5% or 10%. This error breaks
program execution and disables the BDS5.

ERROR 14 ”POWER BUS” SEVERITY 3


The power supply high voltage bus has either an overvoltage fault or an
undervoltage fault. This error breaks program execution and disables the
BDS5.

ERROR 15 ”COMP BOARD” SEVERITY 3


You attempted to enable the BDS5 with the compensation board removed.
Replace the compensation board. This error breaks program execution.

D-2
BDS5 APPENDIX D - ERROR CODES

ERROR 17 ”FEEDBACK LOSS” SEVERITY 3


The BDS5 has detected that one or more wires to the resolver have been
broken, or the resolver connector has been removed. This error breaks
program execution.

ERROR 18 ”BAD TL” SEVERITY 3


The BDS5 has two boards: a small MC board and a larger IBD board. Both
boards have the current and voltage rating encoded and they must match. If
this error occurs because you exchanged the MC card, then you should
replace the original card. If it occurs for some other reason, contact the
factory. This error breaks program execution.

ERROR 19 ”MOTION (HDWR LINE)” SEVERITY 2


The MOTION input was off at the beginning of a motion instruction, or it
turned off during a motion instruction. This signal comes from the optional
I/O card. This error breaks program execution.

ERROR 20 ”TUNE FAILED” SEVERITY 3


The Tune command failed. Either the inertia on the motor is too large for the
desired bandwidth, the motor is not functioning properly, the bus voltage is
too low, or the BDS5 is not functioning properly. Try reducing the desired
bandwidth to correct this problem. Make sure REMOTE is on. If this does
not work, attempt to tune the system by hand.

ERROR 22 ”+/- 12 VOLTS” SEVERITY 3


The ±12 volts is out of tolerance. Contact the factory. This error breaks
program execution.

D.2.3 Positioner Faults

ERROR 23 ”SOFTWARE OVERTRAVEL” SEVERITY 2


Software travel limits are enabled and either PMAX or PMIN, the software
limits, have been exceeded. If your application does not need software travel
limits, or if you want to disable software travel limits temporarily, type:

PLIM OFF

This error breaks program execution.

D-3
APPENDIX D - ERROR CODES BDS5

ERROR 24 ”HARDWARE OVERTRAVEL” SEVERITY 3


The BDS5 detected an overtravel condition while it was enabled. You can
print the state of the overtravel limit switch by typing:

P LIMIT

If LIMIT is 0, then an overtravel condition exists. LIMIT should be connected


to a limit switch that has contacts that are normally closed but which open
where an overtravel condition occurs. Hardware overtravel limits cannot be
disabled. This error breaks program execution and disables the BDS5.

ERROR 25 ”PE OVERFLOW” SEVERITY 3


The variable PE, the position error, exceeded the variable PEMAX. This is
also called a following error overflow. This error breaks program execution
and disables the BDS5.

ERROR 26 ”PFB ROLLOVER” SEVERITY 3


The variable PFB, the position feedback, exceeded +/-2,147,483,647 counts.
If you are using position units, then PFB exceeded the position unit equivalent
of +/-2,147,483,647 counts. This can occur if the motor rotates indefinitely in
one direction. If your application requires this, consider using the rotary
mode.

ERROR 27 ”R/D JUMPERS” SEVERITY 3


Either the jumpers on your BDS5 MC2 card are incorrectly set or the wrong
TL has been loaded. Contact the factory.

D.3 MOTION ERRORS

D.3.1 Position Calculation Errors

ERROR 30 ”TOO MANY MOVES” SEVERITY 2


You typed in too many move commands (MA, MI, MCGO) from the
interactive mode. You can have one move executing and the other pending.
The error does not occur when move commands are executed from the user
program, because the BDS5 sees that the motion buffer is full and delays
execution to prevent the error. This error breaks program execution.

ERROR 31 ”TOO MANY MRD MOVES” SEVERITY 2


You attempted to execute a motion instruction that required the profile buffer
to be empty. This occurs when two MRD instructions are active at once. You
should use a synchronizer to delay the execution of the instruction that caused
the error. This error breaks program execution.
ERROR 32 ”ACC/DEC TOO LOW” SEVERITY 2

D-4
BDS5 APPENDIX D - ERROR CODES

You entered a motion command that calculated a motion profile where either
the acceleration or deceleration segment was more than 30 seconds long. You
must increase ACC or DEC or reduce the speed change of the move. This
error breaks program execution.

ERROR 33 ”VEL OUT OF BOUNDS” SEVERITY 2


You entered a motion command where the commanded velocity was out of
the allowable range. The range for Jog (J) commands is ±VMAX. The range
for other motion commands is 0 to +VMAX. This error breaks program
execution.

D.3.2 Macro Move/JT/JF Errors

ERROR 40 ”CHANGED DIRECTION” SEVERITY 2


You attempted to change direction with an instruction that does not allow
direction to change. These instructions include JT, JF and macro moves.
This error breaks program execution.

ERROR 41 ”MOVE NEEDS MOTION” SEVERITY 2


You attempted to execute an instruction that requires the motor to be in
motion. These instructions include JT, JF and MCI/MCA with no velocity
parameter specified. This error breaks program execution.

ERROR 42 ”MOVE w/o TIME” SEVERITY 2


You attempted to execute a move that required more time than was available.
For example, you attempted a JT or macro segment where the final position
could not be reached because of acceleration limits. You may have attempted
a JT or JF when you were already well beyond the specified position. This
error breaks program execution.

ERROR 43 ”MACRO NOT READY” SEVERITY 2


You attempted to execute a macro move (with the MCGO instruction) in
which the last segment of the move did not end at zero speed, or the macro-
move memory is empty. The macro-move memory is cleared every time the
BDS5 is turned on. This error breaks program execution.

ERROR 44 ”MCD w/MACRO MOVING” SEVERITY 2


You attempted to insert a macro-move dwell when the previous macro-move
segment ended at a speed other than zero. This error breaks program
execution.

ERROR 45 ”MCA ACTIVE” SEVERITY 2

D-5
APPENDIX D - ERROR CODES BDS5

You attempted to insert an MCA segment after an MCI segment. This error
breaks program execution.

ERROR 46 ”MCI ACTIVE” SEVERITY 2


You attempted to insert an MCI segment after an MCA segment in a macro
move. This error breaks program execution.

ERROR 47 ”MCI/MCA TOO COMPLEX” SEVERITY 2


You attempted to execute a macro move that required too many segments.
This error breaks program execution.

ERROR 48 ”MCA/MCI RUNNING” SEVERITY 2


You attempted to build a macro move while another macro move was running.
This error breaks program execution.

D.4 SOFTWARE ERRORS

D.4.1 Programming Modes or Motion Modes

ERROR 50 ”DRIVE INHIBITED” SEVERITY 2


You attempted to execute an instruction that required the BDS5 to be enabled
while it was inhibited. This error will break program execution if the
instruction is issued from the user program.

ERROR 51 ”DRIVE ENABLED” SEVERITY 2


You attempted to execute an instruction that required the BDS5 to be
inhibited while it was enabled. This error will break program execution if the
instruction is issued from the user program.

ERROR 52 ”NOT FROM TERMINAL” SEVERITY 1


You attempted to execute an instruction from the terminal that is not allowed
from the terminal. This error generates no action.

ERROR 53 ”NOT FROM PROGRAM” SEVERITY 1


You attempted to execute an instruction from the program that is not allowed
from the program. This error breaks program execution.

ERROR 54 ”NOT FROM MONITOR” SEVERITY 1


You attempted to execute an instruction while in the monitor mode that is not
allowed from the monitor mode. This error generates no action.
ERROR 55 ”NOT FROM RECOVERY” SEVERITY 2

D-6
BDS5 APPENDIX D - ERROR CODES

You attempted to execute an instruction from the error recovery (the user’s
error handler or “ERROR$”) that is not allowed. This includes attempting to
enable the BDS5, GOSUB, and GOTO. This error breaks execution.

ERROR 56 ”NOT w/GEAR” SEVERITY 2


You attempted to execute an instruction when the gear mode was enabled that
is not allowed with the gear mode. For example, MRD, MA, JT, and JF are
not allowed with the gear mode on. This error breaks execution if the
instruction was issued from the program.

ERROR 57 ”NOT w/PROFILE” SEVERITY 2


You attempted to execute an instruction that is not allowed while the BDS5 is
profiling. Profiling occurs when move instructions (MA, MI, MRD) or
macro moves are executing. Other examples of this are the traverse segment
before the accel/decel portion of position dependent jogs (JT, JF), and the
accel/decel portions of all jogs (J, JT, JF). This error breaks execution.

ERROR 58 ”NOT w/JOGGING” SEVERITY 2


You attempted to execute an instruction that is not allowed when the BDS5 is
jogging. This error breaks execution if the instruction was issued from the
program.

ERROR 59 ”NOT w/ROTARY” SEVERITY 2


You attempted to execute an instruction that is not allowed when the BDS5 is
in the rotary mode. Type:

ROTARY OFF

to turn the rotary mode off. This error breaks execution if the instruction was
issued from the program.

ERROR 60 ”OUTSIDE PROTARY” SEVERITY 2


You attempted to make an absolute move (either MA or MCA) beyond
PROTARY. For example, if PROTARY is 1000 and you typed:

MA 2000

Use incremental moves (MI and MCI) if you want to move beyond the rotary
limit. This error breaks execution if the instruction was issued from the
program.

ERROR 61 ”NORMALIZE FIRST” SEVERITY 2

D-7
APPENDIX D - ERROR CODES BDS5

You attempted to turn on the rotary mode when PFB was less than zero or
greater than PROTARY. Use the NORM command to normalize the position
to between 0 and PROTARY. This error breaks execution if the instruction
was issued from the program.

ERROR 62 ”RD ALREADY IN USE” SEVERITY 2


You attempted to execute RD when RD was in use from some other task.
This error occurs when two task levels attempt to simultaneously use the RD
command. This error breaks program execution.

ERROR 63 ”NOT AT THIS LEVEL” SEVERITY 2


You attempted to execute a command that is not allowed at the present task
level. For example, GOSUB and GOTO are not allowed from within an
alarm. This error breaks program execution.

ERROR 64 ”BACKWARD REGULATION” SEVERITY 3


The external input counted backwards more than 30,000 counts when REG
was on. This error breaks program execution and disables the BDS5.

ERROR 65 ”RECORD NOT READY” SEVERITY 3


You entered a PLAY command when nothing had been recorded since the last
time the BDS5 powered up.

D.4.2 Improper Use of Labels

ERROR 70 ”LABEL NOT FOUND” SEVERITY 2


You attempted to branch to a label (either from RUN, GOSUB, or GOTO)
that does not exist. This error breaks program execution.

ERROR 71 ”LABEL USED TWICE” SEVERITY 2


The user program has a label that is used more than once. This error breaks
program execution.

ERROR 74 ”ERROR$ MUST BE LAST” SEVERITY 2


The user’s error (ERROR$) must be the last label in the program buffer. You
cannot have labels after ERROR$, nor can you use the GOTO or GOSUB
commands when the BDS5 is executing the error handler. The error handler
is intended to provide a graceful exit during error conditions and cannot be
used to restart the program. You can use the IF, TIL, and ? commands to
execute conditional commands in the error handler. This error breaks
program execution.

D-8
BDS5 APPENDIX D - ERROR CODES

D.4.3 Invalid Instructions or Entries

ERROR 79 ”BAD FORMAT” SEVERITY 2


You entered a format that the BDS5 does not recognize. For example, you
may have entered:

INPUT “INPUT X1” X1[.3]

In this case, the decimal point (following the “[”) is incorrect. Pay careful
attention to the rules for formats in Chapter 4. This error breaks program
execution if the instruction is issued from the user program.

ERROR 80 ”INVALID INSTRUCTION” SEVERITY 2


You attempted to execute an instruction or change a variable that the BDS5
does not recognize. This error breaks program execution if the instruction is
issued from the user program.

ERROR 81 ”NOT PROGRAMMABLE” SEVERITY 2


You attempted to change a variable that is not programmable. This error will
break program execution if the instruction is issued from the user program.

ERROR 82 ”BAD NUMBER ENTRIES” SEVERITY 2


The instruction that is executing has too many or too few parameters. Look
up the instruction in Appendix B to determine the correct number of entries.
This error breaks program execution if the instruction is issued from the user
program.

ERROR 83 ”BAD OR OUT OF RANGE” SEVERITY 2


You entered a parameter to an instruction that was too large or too small.
Check Appendix C for limits on variables. This error can also occur when a
parameter is in the wrong format, such as a character string where a number is
expected. This error breaks program execution if the instruction is issued
from the user program.

ERROR 84 ”OUT OF BOUNDS” SEVERITY 2


The variable listed is out of bounds. If the variable is protected (that is, set by
the factory as defined in Appendix C), contact the factory. If the variable is
not protected, set it within its bounds. This error breaks execution.

ERROR 85 ”BAD INDIRECTION” SEVERITY 2

D-9
APPENDIX D - ERROR CODES BDS5

You attempted an indirect reference to a user variable that does not exist.
For example:

X1 10000
P X(X1)

X(X1) refers to user variable X10000, which does not exist. The “P X(X1)”
will generate this error. This error breaks program execution if the instruction
is issued from the user program.

ERROR 86 ”USER PROGRAM FULL” SEVERITY 2


You attempted to load a program larger than the BDS5 can hold. This occurs
with the >BDS instruction and from the Motion Link communications
software “Program Transmit (^T)”. This error breaks program execution.

ERROR 87 ”EMBEDDED QUOTE” SEVERITY 2


You entered a command with an embedded quote. A space must precede an
opening quote and follow a closing quote. For example:

P”BAD COMMAND”

has an embedded quote after the “P”. This error breaks program execution if
the instruction is issued from the user program.

ERROR 88 ”NO CLOSING QUOTE” SEVERITY 2


You entered a command with an odd (as opposed to even) number of quotes.
This error breaks program execution if the instruction is issued from the user
program.

ERROR 89 ”NOT FOR ALARM/HOLD/RECORD” SEVERITY 2


You have specified a switch that is not an allowable switch for an alarm or a
hold or record command. For example:

A$ REMOTE ON ;ERROR—REMOTE NOT ALLOWED FOR


ALARMS

This line causes Error 89 since REMOTE is not allowed to fire an alarm.

ERROR 90 ”TOO MANY POINTS” SEVERITY 2

D-10
BDS5 APPENDIX D - ERROR CODES

You specified too many points in a RECORD command. Only 1000 points
total can be recorded. For example, if you are recording four variables, they
can be recorded no more than 250 times, since 4*250 = 1000.

D.4.4 Math Errors

ERROR 92 ”ZERO DIVIDE” SEVERITY 2


You attempted to divide a number by 0. This error breaks program execution
if the instruction is issued from the user program.

ERROR 93 ”MATH OVERFLOW” SEVERITY 2


The final result of a calculation or an intermediate result during the
calculation of an expression was greater than 231 or less than -231. This error
breaks program execution.

ERROR 94 ”>2 PARENTHESES” SEVERITY 2


The BDS5 evaluated an expression with more levels of parentheses than the
BDS5 supports. Up to two levels of parentheses are allowed. This error
breaks program execution.

ERROR 95 ”UNEVEN PARENTHESES” SEVERITY 2


The BDS5 encountered an expression in which the number of closing
parentheses was not equal to the number of opening parentheses. This error
breaks program execution.

ERROR 96 ”SCALING OVERFLOW” SEVERITY 2


During a conversion to or from user units, the result was greater than 231 or
less than -231. This error breaks program execution if the instruction is
issued from the user program.

ERROR 97 ”GEAR OVERFLOW” SEVERITY 3


The BDS5 encountered an overflow when calculating the velocity from the
external pulse input. This can be caused when the variable GEARI is too
small or GEARO is too large. That is, the input times the ratio of
GEARO/GEARI was greater than the highest allowable input frequency, 2
MHz. This error breaks program execution and disables the BDS5.

D.4.5 Communication Errors

ERROR 103 ”BAUD RATE” SEVERITY 1

D-11
APPENDIX D - ERROR CODES BDS5

The variable BAUD contains a value that is not supported by the BDS5. This
error occurs during the autobaud sequence and so is never printed to the
terminal. You will only see it in the error history buffer. This error has no
action.

ERROR 104 ”ABAUD & MULTIDROP” SEVERITY 1


This error is caused by attempting to autobaud while in multidrop
communications, which is not allowed. The variable ABAUD is on,
indicating request for autobaud, and the variable ADDR is not zero, indicating
multidrop communications. This error occurs during the autobaud sequence
and so is never printed to the terminal. You will only see it in the error
history buffer. This error has no action.

ERROR 105 ”SERIAL WDOG” SEVERITY 3


The serial port did not receive a valid command for WTIME milliseconds
when the serial watchdog was enabled (that is, WATCH = 1). This error
breaks program execution and disables the BDS5.

D.4.6 Password Errors

ERROR 110 ”EDIT PASSWORD” SEVERITY 1


You attempted to execute an instruction that requires the Editor password.
This occurs with the >BDS command. In this case, you must follow the
command with the password.

ERROR 111 ”FACTORY SETTABLE” SEVERITY 2


You attempted to change a variable that is protected. These variables are set
at the factory. This error breaks program execution if the instruction is issued
from the user program.

D.4.7 Errors From IF, TIL and GOSUB Commands

ERROR 115 ”IF w/o ENDIF” SEVERITY 2


The program executed an IF command to begin an IF BLOCK, but could not
find the corresponding ENDIF to end the IF block. This error breaks program
execution.

ERROR 116 ”IF NOT STARTED” SEVERITY 2

D-12
BDS5 APPENDIX D - ERROR CODES

An ELSE, ELIF, or ENDIF was encountered when there was no IF. This will
occur, among other times, if you use a GOTO to branch to the middle of an
IF/ELIF/ELSE/ENDIF block. This error breaks program execution.

ERROR 117 ”TIL FOLLOWS ?/TIL” SEVERITY 2


The ? or TIL instruction was used to execute a conditional TIL. This error
breaks program execution.

ERROR 118 ”TOO MANY GOSUBS” SEVERITY 2


The last GOSUB was one GOSUB too many. The BDS5 has 4 levels of
subroutines. This error breaks program execution.

ERROR 119 ”RETURN w/o GOSUB” SEVERITY 2


The BDS5 encountered a RET when it was not expecting one. This occurs
when there are more returns than GOSUBs. This error breaks program
execution.

D.4.8 Power-Up Marker (Not an Error)

ERROR 199 ”DRIVE POWERED UP” N/A


This is not a true error. ERROR 199 is used to mark the error history buffer
when the BDS5 powers-up.

D.4.9 Internal Errors

ERROR 200 ”FOLDBACK OUT” SEVERITY 3


The factory set variables that control foldback are out of bounds. Contact the
factory. This error breaks program execution and disables the BDS5.

ERROR 201 ”SLIP TOO BIG” SEVERITY 3


The induction motor variables that control slip are out of bounds. Contact the
factory. This error breaks program execution and disables the BDS5.

ERROR 202 ”USER PROGRAM CORRUPT” SEVERITY 3


The user program is corrupt. Usually, this problem is caused by installing a
new battery back-up RAM. This can also occur if power to the BDS5 is lost
while editing the program. This error will break program execution. (See
BDS5 Editor New Command to reset the user program; you will need to
reload your program.)
ERROR 203 ”AMPS BAD” SEVERITY 3

D-13
APPENDIX D - ERROR CODES BDS5

The BDS5 variable AMPS is invalid. Contact the factory. This error breaks
program execution.

ERROR 204 ”PROGRAM OVERRUN” SEVERITY 3


This is an internal error. Contact the factory. This error breaks program
execution and disables the BDS5.

ERROR 205 ”MBUF OVRRUN” SEVERITY 3


This is an internal error. Contact the factory. This error breaks program
execution and disables the BDS5.

ERROR 206 ”PROFILE OVERFLOW” SEVERITY 3


This is an internal error. Contact the factory. This error breaks program
execution and disables the BDS5.

ERROR 208 ”GENERAL INTERNAL” SEVERITY 3


This is an internal error. Carefully write down the entire line that is printed
with the error and contact the factory. This error breaks program execution
and disables the BDS5.

ERROR 209 ”STACK OVERFLOW” SEVERITY 3


This is an internal error. Carefully write down the entire line that is printed
with the error and contact the factory. This error breaks program execution
and disables the BDS5.

ERROR 211-219 ”INTERNAL 1-9” SEVERITY 3


These are internal errors. Contact the factory. These errors break program
execution and disable the BDS5.

ERROR 255 ”UNKNOWN” SEVERITY 3


This is an internal error. If this error exists in the error history upon initial
power-up, clear it with ERR CLR. Contact the factory if this error occurs
during operation. This error breaks program execution and disables the
BDS5.

D-14
BDS5 APPENDIX E - VARIABLE QUICK REFERENCE

APPENDIX E
VARIABLE QUICK REFERENCE

E.1 INTRODUCTION
This appendix lists all the variables on the BDS5. All variables are shown with the required programming
conditions. For example, ABAUD has the programming condition "ALWAYS". This means ABAUD can be
changed at any time. Other variables require the BDS5 to be enabled or disabled. Others, such as feedback
variables, are never programmable. "FACTORY" variables can only be changed at the factory. Factory variables
program the BDS5 for the particular motor it will be controlling. The MOTOR command changes these variables as
necessary for the motor.

E.2 STANDARD VARIABLES

Table E.1. Standard Variables

VARIABLE DESCRIPTION PROGRAM UNITS PROGRAM LIMITS1


CONDITION

AMPS Drive Amps Factory I


ABAUD Autobaud On Always None 0,1

ACC Acceleration Rate Always ACC 0-AMAX

ACTIVE Monitor Drive Never None


ADDR Multidrop Address Always 0,48-57,65-90

ADEN ACC Units Denominator Always None Long

AMAX Acc/Dec Maximum Disabled ACC Long>0


ANUM ACC Units Numerator Always None long
BAUD Baud Rate Always None 300-19200

CAP Enable Capture Always None 0,1


CAPDIR Polarity of Capture Always None 0,1
CLAMP Enable Clamp Mode Always None 0,1

CYCLE Start Cycle Never None


DEC Deceleration Rate Always ACC 0-AMAX

1 See table at end of selection for description of long and short.

E-1
APPENDIX E - VARIABLE QUICK REFERENCE BDS5

VARIABLE DESCRIPTION PROGRAM UNITS PROGRAM LIMITS


CONDITION

DEP Shorten Error Msgs Always None 0,1


DIR On if CW is Positive Always None 0,1
EXTLOOP On for Encoder feedback Disabled None 0,1

FAULT On for BDS5 Fault Always None 0,1


FOLD Monitor Foldback Mode Never None

GATE Monitor GATE Input Never None


GATEMODE Enable Gate Mode Always None 0,1
GEAR Enable Gear Mode Always None 0,1
GEARI Input Gear Teeth Always None Short

GEARO Output Gear Teeth Always None Short>0

HOME Monitor HOME Input Never None


ICMD Commanded Current Never I

ICONT Continuous Current Factory I


IDEN I Units Denominator Always None Long

IFOLD Monitor Foldback Never I


ILIM Set Current Limit Always I 1-IMAX

IMAX Maximum Current Factory I

IMON Monitor Current Never I

I1-16 Monitor 16 Input Lines Never None

IN Input Word Never None


INUM I Units Numerator Always None Long
KC Low Speed Adjust Always None 0-255

KF Feed-Forward Gain Always None Short>0


KP Pos Loop Gain Always None Short>0
KPROP Prop. Vel Loop Gain Always None Short>0

KV Integrating Vel Loop Gain Always None Short>0


KVI Integrating Vel Loop Gain Always None Short>0
LIMIT Monitor LIMIT Input Never None

LPF Enable Low Pass Filter Always None 0,1


LPFHZ Low Pass Filter Freq Always Hz 0-500

E-2
BDS5 APPENDIX E - VARIABLE QUICK REFERENCE

VARIABLE DESCRIPTION PROGRAM UNITS PROGRAM LIMITS


CONDITION

LSTERR Last error Never None


LSTLBL Last label executed Always None
MANUAL Monitor MANUAL Input Never None

MOTION Monitor MOTION Input Never None


MULTI Enable Multi-tasking Always None 0,1

N Special Constant=0 Never None


O1-8 Set/Monitor Output Lines Always None 0,1
OFF Special Constant=0 Never None
OK2EN OK to enable BDS5 Never None

ON Special Constant=1 Never None

OUT Set/Monitor Output Word Always None 0-255


PCAP Capture Position Never POS

PCMD Position Command Never POS


PDEN POS Units Denominator Always None Long

PE Position Error Never POS


PECLAMP Clamp Position Error Always POS Short>0

PEMAX Maximum Position Error Always POS Short>0

PEXT External Position Always POS Long

PFB Position Feedback No Motion POS Long

PFNL Final Position Never POS


PL Enable Position Loop Always None 0,1
PLIM Enable Soft Limits Always None 0,1

PMAX Soft Upper Limit Always POS Long


PMIN Soft Lower Limit Always POS Long
PROMPT Enable Prompts Always None 0,1

PROTARY Rotary Distance Always POS Long


PNUM POS Units Numerator Always None Long
PRD Position from R/D Never Counts

PROP Enable Prop. Mode Always None 0,1


PTRIP1 Position Trip Point #1 Always POS Long

E-3
APPENDIX E - VARIABLE QUICK REFERENCE BDS5

VARIABLE DESCRIPTION PROGRAM UNITS PROGRAM LIMITS


CONDITION

PTRIP2 Position Trip Point #2 Always POS Long


PXDEN Extern. Pos Denominator Always None Long
PXNUM Extern. Pos Numerator Always None Long

RAMP Ramp control with gear Always None 0,1


READY Enable Drive Never None

REG Enable Profile Regulation Always None 0,1


REGKHZ Max Regulation Freq. Always kHz 1-2000
REMOTE Monitor REMOTE Input Never None
ROTARY Enable Rotary Mode Always None 0,1

SAT Monitor Saturation Never None

SCRV S-curve Type Always None 1-5


SEG Motion Segment Never None

SERIAL Monitor Serial Port Never None


SS Enable Single Step Always None 0,1

STATMODE Select STATUS Type Always None 0,1


STATUS Monitor STATUS Output Never None

TMR1 Standard Timer Always Msec Long>0

TMR2 Standard Timer Always Msec Long>0

TMR3 Standard Timer Always Msec Long>0

TMR4 Standard Timer Always Msec Long>0


TRC Enable Trace Always None 0,1
TRIP Enable Trip Points Always None 0,1

TRIP1 Trip #1 Indicator Never None 0,1


TRIP2 Trip #2 Indicator Never None 0,1
TQ Enable Torque Loop Always None 0,1

VAVG Averaged VFB Never VEL


VCMD Velocity Command Never VEL
VDEFAULT MI/MA Default Velocity Always VEL <VMAX

VDEN VEL Units Denominator Always None Long


VE Velocity Error Never VEL

E-4
BDS5 APPENDIX E - VARIABLE QUICK REFERENCE

VARIABLE DESCRIPTION PROGRAM UNITS PROGRAM LIMITS


CONDITION

VEXT External Velocity Never VEL


VFB Velocity Feedback Never VEL
VMAX Maximum Speed Factory VEL

VNUM VEL Units Numerator Always None Long


VOFF Gearbox Velocity Offset Always VEL Long

VOLTS Drive Voltage Factory Volts


VOSPD Overspeed Setpoint Disabled VEL Long
VXAVG Averaged VEXT Never VEL
VXDEN External Vel Denominator Always None Long

VXNUM External Vel Numerator Always None Long

WATCH Enable Serial Watchdog Always None 0,1


WTIME Serial Watchdog Timeout Always Msec Short>0

X1-X250 User Variables Always None Long


XS1-XS50 User Switches Always None 0,1

X(X1-X250) User Indirect Vars Always None Long


Y Special Constant=1 Never None

ZERO Enable ZEROing Mode Always None 0,1

Table E.2. Description Of Program Limits

Long Limit -2147483648 < x < 2147483647

Long>0 Limit 0 < x < 2147483647

Short Limit -32768 < x < 32767

Short>0 Limit 0 < x < 32767

E-5
APPENDIX E - VARIABLE QUICK REFERENCE BDS5

E.3 INTERNAL VARIABLES


The following variables are internal variables and are not normally used by customers. They are set at the factory
and program the BDS5 for the particular motor it will be controlling. The Motor command changes these variables
as necessary for the motor.

Table E.3. Internal Variables

VARIABLE DESCRIPTION PROGRAM UNITS


CONDITION

A1-A16 Internal
ADVSLIP Internal
ADVSPD Internal
ADVLD Internal
ANGLD Internal Factory none
BSLIP Inductn Base Slip Factory mHz
FOLDD Foldback Delay Factory sec/100
FOLDR Foldback Reset Factory sec/100
FOLDT Foldback Const Factory sec/100
IBASE Inductn Base Amps Factory I
IMAG Induc Mag Current Factory I
IND Select Induction Factory None
IZERO Zeroing Current Factory I
MADV Enable Manual Adv Factory None
MANG Internal
MSLIP Manual Slip Factory None
POLES Motor Poles Factory Poles*128
SGOOSE Induction Angle Factory None
SLIP Induction Slip Never None
SLOPE Inductn Slip Slope Factory 1/10%
VADVTBL Angle Table Max Factory VEL
VBASE Inductn Base Speed Factory VEL

E-6
BDS5 APPENDIX F - COMMAND TIMINGS

APPENDIX F
COMMAND TIMINGS

This appendix gives approximate timings of representative commands. Command times are difficult to predict
because they depend on many factors, including whether the BDS5 is enabled, whether profile motion has been
commanded, whether electronic gearbox or profile regulation have been enabled and so on. The times listed here are
based on these conditions:

1. The BDS5 is enabled.

2. PLIM, PL, and LPF are on.

3. TQ, and PROP are off.

4. No profiles are being calculated. That is, the BDS5 is enabled, but not in motion.

5. GEAR and REG are off.

Acceleration profiles increase the execution time by 40%-50%. If the GEAR mode is enabled, increase execution
time by 10% to 20%. Profile regulation increases execution time by as much as 20%. As you can see, if either gear
or profile regulation is enabled, and the BDS5 is executing the acceleration or deceleration portion of a motion
profile, then the times can be 60% greater than those shown here. These commands are not meant to represent the
worst case, but are only provided as an estimate of the execution times1.

1These times are based on tests run at Industrial Drives Electronic Lab. Reference Test 67 of May 21, 1990.

F-1
BDS5 APPENDIX F - COMMAND TIMINGS

GOSUB 10 ;1.6 MSEC


GOTO 10 ;1.6 MSEC

JT 50000 1000 ;5.8 MSEC (CALCULATION TIME ONLY)


JF 50000 1000 ;5.8 MSEC (CALCULATION TIME ONLY)

MA 4096 100 ;5.5 MSEC (CALCULATION TIME ONLY)


MA 4096 ;5.0 MSEC (CALCULATION TIME ONLY)

MI 4096 100 ;5.8 MSEC (CALCULATION TIME ONLY)


MI 4096 ;5.0 MSEC (CALCULATION TIME ONLY)

MCI 10000 1000 200


MCI 1000 0 ;11.0 MSEC FOR ALL 3 COMMANDS
MCGO ; (CALCULATION TIME ONLY)

MRD 1000 100 CW ;3.5 MSEC

O1 ON ;1.9 MSEC
O1 OFF ;1.9 MSEC
OUT=OUT!0C8H ;2.8 MSEC

NORM 0 ;2.0 MSEC

P X1 ;3.5 MSEC
P X1[8] ;3.5 MSEC
P "X1=" X1 ;3.8 MSEC

RET ;0.8 MSEC

TIL 1 EQ 0 ;2.6 MSEC

X1=X2 ;1.7 MSEC


X1=X2+1 ;2.2 MSEC
X1=X2-1 ;2.2 MSEC
X1=X2*100 ;2.3 MSEC
X1=X2/100 ;2.3 MSEC

ZPE ;1.0 MSEC

? 1 EQ 1 O1 ON ;4.0 MSEC

IF 1 EQ 0 ;9.0 MSEC (ALL 7 LINES)


X1=1
ELIF 1 EQ 0
X1=2
ELSE
X1=3
ENDIF

10$ ;1.0 MSEC

F-2
BDS5 GLOSSARY

GLOSSARY
A device which creates mechanical motion by
Absolute Position converting various forms of energy to mechanical
energy.
Position referenced to a fixed zero position.

Adaptive Control
Absolute Positioning
A technique to allow the control to automatically
Refers to a motion control system employing position
compensate for changes in system parameters such as
feedback devices (absolute encoders) to maintain a
load variations.
given mechanical location.

Ambient Temperature
Absolute Programming
The temperature of the cooling medium, usually air,
A positioning coordinate reference wherein all
immediately surrounding the motor or another device.
positions are specified relative to some reference, or
"home" position. This is different from incremental
programming, where distances are specified relative
Amplifier
to the current position.
Electronics which convert low level command signals
to high power voltages and currents to operate a
AC Adjustable-Speed Drive servomotor.
All equipment required to adjust the speed or torque
of AC electric motor(s) by controlling both frequency
ASCII
and voltage applied to the motor(s).
(American Standard Code for Information
Interchange) This code assigns a number to each
AC Servo Drive numeral letter of the alphabet. In this manner,
information can be transmitted between machines as a
A servo drive used to control either or both
series of binary numbers.
synchronous or induction AC motors.

Back EMF
Acceleration
The voltage generated when a permanent magnet
The change in velocity as a function of time.
motor is rotated. This voltage is proportional to
Acceleration usually refers to increasing velocity and
motor speed and is present regardless of whether the
deceleration describes decreasing velocity.
motor winding(s) are energized or un-energized.

Accuracy
Bandwidth
A measure of the difference between expected
The frequency range in which the magnitude of the
position and actual position of a motor or mechanical
system gain expressed in dB is greater than -3 dB.
system. Motor accuracy is usually specified as an
angle representing the maximum deviation from
Baud Rate
expected position.
The number of binary bits transmitted per second on
Actuator a serial communications link (such as RS-232).

Glossary-i
GLOSSARY BDS5

information.

Bit (Binary Digit)


CAM Profile
A unit of information equal to 1 binary decision or
having only a value 0 or 1. A technique used to perform nonlinear motion
electronically similar to that achieved with
mechanical cams.
Block Diagram
A simplified schematic representing components and
Characteristic Equation
signal flow through a system.
1+GH = 0, where G is the transfer function of the
forward signal path and H is the transfer function of
Bode Plot the feedback signal path.
A plot of the magnitude of system gain in dB and the
phase of system gain in degrees versus the sinusoidal
Circular Coordinated Move
input signal frequency in logarithmic scale.
A coordinated move where the path between
endpoints is the arc of a circle.
Brownout
Low-line voltage at which the device no longer
Class B Insulation
functions properly.
A NEMA insulation specification. Class B insulation
is rated to an operating temperature of 130 degrees
Brush centigrade.
Conducting material which passes current from the
DC motor terminals to the rotating commutator.
Class H Insulation
A NEMA insulation specification. Class H insulation
Brushless Servo Drive is rated to an operating temperature of 180 degrees
centigrade.
A servo drive used to control a permanent magnet
synchronous AC motor. May also be referred to as an
AC Servo Drive.
Closed Loop
A broadly applied term relating to any system where
Bus the output is measured and compared to the input.
The output is then adjusted to reach the desired
A group of parallel connections carrying pre-assigned
condition. In motion control, the term is used to
digital signals. Buses usually consist of address and
describe a system wherein a velocity or position (or
data information and miscellaneous control signals
both) transducer is used to generate correction signals
for the interconnection of microprocessors, memories,
by comparison to desired parameters.
and other computing elements.

Cogging
A term used to describe non-uniform angular
velocity. Cogging appears as a jerkiness especially at
low speeds.
Byte
Command Position
A group of 8 bits treated as a whole with 256
possible combinations of ones and zeros, each The desired angular or linear position of an actuator.
combination representing a unique piece of

Glossary-ii
BDS5 GLOSSARY

Commutation A control action which combines the characteristics


of lead and lag compensations.
A term which refers to the action of steering currents
or voltage to the proper motor phases so as to
produce optimum motor torque. In brush type
Compensation, Proportional
motors, commutation is done electromechanically via
the brushes and commutator. In brushless motors, A control action which is directly proportional to the
commutation is done by the switching electronics error signal of a feedback loop. It is used to improve
using rotor position information typically obtained by system accuracy and response time.
hall sensors, a tachsyn, a resolver or an encoder.

Compliance
Commutator
The amount of displacement per unit of applied force.
A mechanical cylinder consisting of alternating
segments of conductive and insulating material. This
cylinder used in DC motors passes currents from the Computer Numerical Control
brushes into the rotor windings and performs motor
A computer-based motion control device
commutation as the motor rotates.
programmable in a numerical word address format.
A computer numerical control (CNC) product
typically includes a CPU section, operator interface
Compensation
devices, input/output signal and data devices,
The corrective or control action in a feedback loop software and related peripheral apparatus.
system which is used to improve system performance
characteristics such as accuracy and response time.
Control Systems or Automatic Control
Systems
Compensation, Feedforward
An engineering or scientific field that deals with
A control action which depends on the command only controlling or determining the performance of
and not the error to improve system response time. dynamic systems such as servo systems.

Compensation, Integral Coordinated Motion


A control action which is proportional to the integral Multi-axis motion where the position of each axis is
or accumulative time error value product of the dependent on the other axis such that the path and
feedback loop error signal. It is usually used to velocity of a move can be accurately controlled.
reduce static error. (Requires coordination between axes.)

Compensation, Lag Coupling Ratio


A control action which causes the lag at low The ratio of motor velocity to load velocity for a load
frequencies and tends to increase the delay between coupled to motor through a gear or similar
the input and output of a system while decreasing mechanical device.
static error.
Critical Damping
A system is critically damped when the response to a
Compensation, Lead
step change in desired velocity or position is achieved
A control action which causes the phase to lead at in the minimum possible time with little or no
high frequencies and tends to decrease the delay overshoot.
between the input and output of a system.

Daisy Chain
Compensation, Lead Lag

Glossary-iii
GLOSSARY BDS5

A term used to describe the linking of several The maximum torque that can be applied to an un-
RS232C devices in sequence such that a single data energized stepping motor without causing continuous
stream flows through one device and on to the next. rotating motion.
Daisy-chained devices usually are distinguished by
device addresses which serve to indicate the desired
destination for data in the stream. Dielectric Test
A high voltage breakdown test of insulation's ability
to withstand an AC voltage. Test criterion limits the
Damping
leakage current to a specified magnitude and
An indication of the rate of decay of a signal to its frequency, applied between the specified test points.
steady state value. Related to setting time.

Differential
Damping Ratio
An electrical input or output signal which uses two
Ratio of actual damping to critical damping. Less lines of opposite polarity referenced to the local
than one is an underdamped system and greater than signal ground.
one is an overdamped system.

Distributed Processing
DC Adjustable-Speed Drive
A technique to gain increased performance and
All equipment required to adjust the speed or torque modularity in control systems utilizing multiple
of DC motor(s) by controlling the voltages applied to computers or processors.
the armature and/or field of the motors.

DNC, Direct Numerical Control


DC Drive
Technique of transferring part program data to a
An electronic control unit for running DC motors. numerical control system via direct electrical
The DC drive converts AC line current to a variable connection in place of paper tapes.
DC current to control a DC motor. The DC drive has
a signal input that controls the torque and speed of the
motor. Drive
This is the electronics portion of the system that
controls power to the motor.
Dead Band
A range of input signals for which there is no system
response. Drive, Analog
Usually referring to any type of motor drive in which
the input is an analog signal.
Decibel (dB)
A logarithmic measurement of gain. If G is a systems
gain (ratio of output to input) then 20 log G = gain in
decibels (dB).
Drive, Digital
Demag Current
Usually referring to any type of motor drive in which
The current level at which the motor magnets will be the tuning or compensation is done digitally. Input
demagnetized. This is an irreversible effect which may be an analog or digital signal.
will alter the motor characteristics and degrade
performance.
Drive, Linear

Detent Torque

Glossary-iv
BDS5 GLOSSARY

A motor drive in which the output is directly Efficiency


proportional to either a voltage or current input.
The ratio of power output to power input.
Normally both inputs and outputs are analog signals.
This is a relatively inefficient drive type.
Electrical Time Constant
Drive, PWM The ratio of armature inductance to armature
resistance.
A motor drive utilizing Pulse-Width Modulation
techniques to control power to the motor. Typically a
high efficiency drive that can be used for high
Electronic Gearing
response application.
A technique used to electrically simulate mechanical
gearing. Causes one closed loop axis to be slaved to
Drive, SCR another open or closed loop axis with a variable ratio.
A DC motor drive which utilizes internal silicon
controlled rectifiers as the power control elements.
EMI: Electro-Magnetic Interference
Usually used for low bandwidths, high power
applications. EMI is noise which, when coupled into sensitive
electronic circuits, may cause problems.

Drive, Servo
Encoder
A motor drive which utilizes internal feedback loops
for accurate control of motor current and/or velocity. A type of feedback device which converts mechanical
motion into electrical signals to indicate actuator
position. Typical encoders are designed with a
Drive, Stepper printed disc and a light source. As the disc turns with
the actuator shaft, the light source shines through the
Electronics which convert step and direction inputs to
printed pattern onto a sensor. The light transmission
high power currents and voltages to drive a stepping
is interrupted by the patterns on the disc. These
motor. The stepping motor driver is analogous to the
interruptions are sensed and converted to electrical
servo motor amplifier.
pulses. By counting these pulses, actuator shaft
position is determined.
Duty Cycle
For a repetitive cycle, the ratio of an on time to total Encoder, Absolute
cycle time.
A digital position transducer in which the output is
representative of the absolute position of the input
Duty Cycle =
(On Time) ×100% shaft within one (or more) revolutions. Output is
(On Time + Off Time) usually a parallel digital word.

Encoder, Incremental
A position encoding device in which the output
represents incremental changes in position.
Dynamic Braking
A passive technique for stopping a permanent magnet
brush or brushless motor. The motor windings are Encoder, Linear
shorted together through a resistor which results in A digital position transducer which directly measures
motor braking with an exponential decrease in speed. linear position.

Glossary-v
GLOSSARY BDS5

Encoder Marker Flutter


A ounce-per-revolution signal provided by some Flutter is an error of the basic cycle of an encoder per
incremental encoders to specify a reference point one revolution.
within that revolution. Also known as Zero
Reference signal or index pulse.
Following Error
The positional error during motion resulting from use
Encoder Resolution
of a position control loop with proportional gain only.
A measure of the smallest positional change which
can be detected by the encoder.
Form Factor
The ratio of RMS current to average current. This
Explosion-proof
number is a measure of the current ripple in a PWM
A motor classification that indicates a motor is or other switch mode type of controller. Since motor
capable of withstanding internal explosions without heating is a function of RMS current while motor
bursting or allowing ignition to reach beyond the torque is a function of average current, a form factor
confines of the motor frame. greater than 1.00 means some fraction of motor
current is producing heat but not torque.

Fall Time
Four Quadrant
The time for the amplitude of system response to
decay to 37% of its steady-state value after the Refers to a motion system which can operate in all
removal of a steady-state step input signal. four quadrants i.e. velocity in either direction and
torque in either direction. This means that the motor
can accelerate, run, and decelerate in either direction.
Feed Forward
A technique used to pre-compensate control a loop
Friction
for known errors due to motor, drive, or lead
characteristics. Provides improved response. A resistance to motion caused by surfaces rubbing
together. Friction can be constant with varying speed
(coulomb friction) or proportional to speed (viscous
Feedback friction) or present at rest (static friction).
A signal which is transferred from the output back to
the input for use in a closed loop system.
Full Load Current
The armature current of a motor operated at its full
load torque and speed with rated voltage applied.

Full Load Speed


The speed of a motor operated with rated voltage and
Field Weakening
full load torque.
A method of increasing the speed of a wound field
DC motor; reducing stator magnetic field instantly by
reducing magnet winding current. Gain
The ratio of system output signal to system input
signal.
Filter (Control Systems)
A transfer function used to modify the frequency or
time response of a control system. Hall Sensors

Glossary-vi
BDS5 GLOSSARY

A feedback device which is used in a brushless servo Hysteresis


system to provide information for the amplifier to
The difference in response of a system to an
electronically commutate the motor. The device uses
increasing or a decreasing input signal.
a magnetized wheel and hall-effect sensors to
generate the commutation signals.
I/O: Input/Output
Holding Torque The reception and transmission of information
between control devices. In modern control systems,
Sometimes called torque, it specifies the maximum
I/O has two distinct forms: switches, relays, etc.,
external force or torque that can be applied to a
which are in either an on or off state, or analog
stopped, energized motor without causing the rotor to
signals that are continuous in nature such as speed,
rotate continuously.
temperature, flow, etc.

Home Position
Idle Current Reduction
A reference position for all absolute positioning
A stepping motor driver feature that reduces the
movements. Usually defined by a home limit switch
phase current to the motor when no motor motion
and/or encoder marker. Normally set at power up and
(idle) is commanded for a specified period of time.
retained for as long as the control system is
This reduces motor heating and allows high machine
operational.
throughput to be obtained from a given motor.

Host Computer
Incremental Motion
An auxiliary computer system which is connected to a
A motion control term that is used to describe a
controller or controllers. The host computer in
device that produces one step of motion for each step
distributed control systems is frequently involved
command (usually a pulse) received.
with controlling many remote and distributed motion
control devices. It may also be used for off-line tasks
such as program preparation, storage, and supervisory
Indexer
control and evaluation.
Electronics which convert high level motion
commands from a host computer, programmable
HP: Horsepower controller, or operator panel into step direction pulse
streams for use by the stepping motor driver.
One horsepower is equal to 746 watts. Since Power =
Torque x Speed, horsepower is a measure of a
motor's torque and speed capability (e.g. a 1 HP
motor will produce 35 lb.-in. at 1800 rpm).
Inertia
Hunting The property of an object to resist changes in velocity
unless acted upon by an outside force. Higher inertia
The oscillation of the system response about a
objects require larger torques to accelerate and
theoretical steady-state value.
decelerate. Inertia is dependent upon the mass and
shape of the object.
Hybrid Stepping Motor
A motor designed to move in discrete increments or Inertial Match
steps. The motor has a permanent magnet rotor and
An inertial match between motor and load is obtained
wound stator. These motors are brushless and phase
by selecting the coupling ratio such that the load
currents are commutated as a function of time to
moment of inertia referred to the motor shaft is equal
produce motion.
to the motor moment of inertia.

Glossary-vii
GLOSSARY BDS5

Inrush Current For a speed control system it is the maximum


deviation between actual and set speed expressed as a
The current surge generated when a piece of
percentage of set speed.
equipment such as a servoamplifier is connected to an
AC line. This surge is typically due to the impulse
charging of a large capacitor located in the
Logic Ground
equipment.
An electrical potential to which all control signals in a
particular system are referenced.
Instability
Undesirable motion of an actuator that is different
Loop, Feedback Control
from the command motion. Instability can take the
form of irregular speed or hunting of the final rest A control method that compares the input from a
position. measurement device, such as an encoder or
tachometer, to a desired parameter, such as a position
or velocity and causes action to correct any detected
Lead Ball Screw error. Several types of loops can be used in
combination (i.e. velocity and position together) for
A lead screw which has its threads formed as a ball
high performance requirements.
bearing race; the carriage contains a circulating
supply of balls for increased efficiency.
Loop Gain, Open
Lead Screw The product of the forward path and feedback path
gains.
A device for translating rotary motion into linear
motion, consisting of an externally threaded screw
and an internally threaded carriage (nut).
Loop, PID: Proportional, Integral, and
Derivative Loop
Least Significant Bit Specialized very high performance control loop
which gives superior response.
The bit in a binary number that is the least important,
or having the least weight.
Loop, Position
A feedback control loop in which the controlled
parameter is motor position.

Limits
Properly designed motion control systems have
Loop, Velocity
sensors called limits that alert the control electronics
that the physical end of travel is being approached A feedback control loop in which the controlled
and that motion should stop. parameter is mechanical velocity.

Linear Coordinated Move Master Slave Motion Control


A coordinated move where the path between A type of coordinated motion control where the
endpoints is a line. master axis position is used to generate one or more
slave axis position commands.

Linearity
Mechanical Time Constant

Glossary-viii
BDS5 GLOSSARY

The time for an unloaded motor to reach 63.2% of its


final velocity after the application of a DC armature
voltage. Motor, DC
A device that converts electrical direct current into
mechanical energy. It requires a commutating device,
Microstepping
either brushes or electronic. Usually requires a
An electronic control technique that proportions the source of DC power.
current in a step motor's windings to provide
additional intermediate positions between poles.
Produces smooth rotation over a wide speed range Motor, DC Brushless
and high positional resolution.
A type of direct current motor that utilizes electronic
commutation rather than brushes to transfer current.
Mid-Range Instability
A phenomenon in which a stepping motor can fall out Motor, DC Permanent Magnet
of synchronism due to loss of torque at mid-range
A motor utilizing permanent magnets to produce a
speeds. The loss of torque is due to interaction
magnetic field. Has linear torque speed
between the motor's electrical characteristics and the
characteristics.
driver electronics. Some drivers have circuitry to
eliminate or reduce this phenomenon.
Motor, DC Wound Field
Most Significant Bit A direct current utilizing a coil to produce a magnetic
field. Usually used in high power applications where
The bit in a binary number that is the most important
constant horsepower operation is desired.
or that has the most weight.

Motor, Stepping
Motor, AC
A specialized AC motor that allows discrete
A device that converts electrical alternating current
positioning without feedback. Normally used for
into mechanical energy. Requires no commutation
non-critical, low power applications, since positional
devices such as brushes. Normally operated off
information is easily lost if acceleration or velocity
commercial AC power. Can be single- or multiple-
limits are exceeded. Load variations can also cause
phase.
loss of position. If encoders are used, these
limitations can be overcome.

NC, Numerical Control


Motor, AC Asynchronous or Induction Usually refers to any type of automated equipment or
process used for contouring or positioning.
An AC motor in which speed is proportional to the
frequency of the applied AC. Requires no magnets or
field coil. Usually used for non-precise constant
speed applications. Negative Feedback
The type of feedbacks used in a closed loop system
where the output value is inverted and combined with
Motor, AC Synchronous the input to be used to stabilize or improve system
characteristics.
Another term for brushless DC motor.

No Load Speed
Motor Constant
Motor speed with no external load.
The ratio of the motor torque to motor input power.

Glossary-ix
GLOSSARY BDS5

The difference between 180 degrees and the phase


angle of a system at the frequency where the open
Open Collector loop gain is unity.
A term used to describe a signal output that is
performed with a transistor. An open collector output
PID
acts like a switch closure with one end of the switch
at ground potential and the other end of the switch Proportional-Integral-Derivative. An acronym that
accessible. describes the compensation structure that can be used
in a closed-loop system.

Open-Loop System
PLC
A system where the command signal results in
actuator movement but, because the movement is not Programmable Logic Controller. An industrial
sensed, there is no way to correct for error. Open control device that turns on and off outputs based
loop means no feedback. upon responses to inputs.

Operator Interface PMDC Motor


A device that allows the operator to communicate A motor consisting of a permanent magnet stator and
with a machine. This device typically has a keyboard a wound iron-core rotor. These are brush type motors
or thumbwheel to enter instructions into the machine. and are operated by application of DC current.
It also has a display device that allows the machine to
display messages.
Point to Point Move
A multi-axis move from one point to another where
Optically Isolated
each axis is controlled independently. (No
A system or circuit that transmits signals with no coordination between axes is required.)
direct electrical connection. Used to protectively
isolate electrically noisy machine signals from low
level control logic. Pole
A frequency at which the transfer function of a system
goes to infinity.
Oscillation
An effect that varies periodically between two values.

Pole Pair, Electromechanical


Overshoot
The number of cycles of magnetic flux distribution in
The amount of the parameter being controlled the air gap of a rotary electromechanical device.
exceeds the desired value for a step input.

Position Error
Phase-Locked Servo System
The difference between the present actuator
A hybrid control system in which the output of an (feedback) value and the desired position command
optical tachometer is compared to a reference square for a position loop.
wave signal to generate a system error signal
proportional to both shaft velocity and position
errors. Position Feedback
Present actuator position as measured by a position
transducer.
Phase Margin

Glossary-x
BDS5 GLOSSARY

Power The acceleration and deceleration of a motor. May


also refer to the change in frequency of the applied
The rate at which work is done. In motion control,
step pulse train.
Power = Torque x Speed.

Rated Torque
Process Control
The torque producing capacity of a motor at a given
A term used to describe the control of machine or
speed. This is the maximum continuous torque the
manufacturing processes, especially in continuous
motor can deliver to a load and is usually specified
production environments.
with a torque/speed curve.

Pull-In Torque
Regeneration
The maximum torque at which an energized stepping
The action during motor braking, in which the motor
motor or synchronous motor will start and run in
acts as a generator and takes kinetic energy from the
synchronism.
load, converts it to electrical energy, and returns it to
the amplifier.
Pull-Out Torque
The maximum torque that can be applied to a Repeatability
stepping motor or synchronous motor running at
The degree to which the positioning accuracy for a
constant speed without causing a loss of synchronism.
given move performed repetitively can be duplicated.

Pulse Rate
Resolution
The frequency of the step pulses applied to a stepper
The smallest positioning increment that can be
motor driver. The pulse rate divided by the
achieved. Frequently defined as the number of steps
resolution of the motor/drive combination (in steps
or feedback units required for a motor's shaft to rotate
per revolution) yields the rotational speed in
one complete revolution.
revolutions per second.

Resolver
A position transducer utilizing magnetic coupling to
measure absolute shaft position over one revolution.
PWM
Resonance
Pulse Width Modulation. An acronym which
describes a switch-mode control technique used in The effect of a periodic driving force that causes
amplifiers and drivers to control motor voltage and large amplitude increases at a particular frequency.
current. This control technique is used in contrast to (Resonance frequency.)
linear control and offers the advantages of greatly
improved efficiency.
RFI
Radio Frequency Interference.
Quadrature
Refers to signal characteristics of interfaces to
positioning devices such as encoders or resolvers. Ringing
Specifically, that property of position
Oscillation of a system following sudden change in
state.
Ramping

Glossary-xi
GLOSSARY BDS5

Rise Time low level control signal into high voltage and current
levels top produce torque in the motor.
The time required for a signal to rise from 10% of its
final value to 90% of its final value.
Servo System
RMS Current An automatic feedback control system for mechanical
motion in which the controlled or output quantity is
Root mean square current. In an intermittent duty
position, velocity, or acceleration. Servo systems are
cycle application, the RMS current is equal to the
closed loop systems.
value of steady state current which would produce the
equivalent resistive heating over a long period of
time.
Settling Time
The time required for a step response of a system
RMS Torque parameter to stop oscillating or ringing and reach its
final value.
Root Mean Square Torque. For an intermittent duty
cycle application, the RMS torque is equal to the
steady state torque which would produce the same
Shunt Resistor
amount of motor heating over long periods of time.
A device located in a servoamplifier for controlling
regenerative energy generated when braking a motor.
Robot This device dissipates or "dumps" the kinetic energy
as heat.
A reprogrammable multifunctional manipulator
designed to move material, parts, tools, or specialized
devices through variable programmed motions for the
Single Point Ground
performance of a variety of tasks.
The common connection point for signal grounds in a
control wiring environment.
Robot Control
A computer-based motion control device to control
Slew
the servo-axis motion of a robot.
In motion control the portion of a move made at a
constant non-zero velocity.

Rotor Slew Speed


The rotating part of a magnetic structure. In a motor, The maximum velocity at which an encoder will be
the rotor is connected to the motor shaft. required to perform.

Serial Port Speed


A digital data communications port configured with a In motion control, the concept used to describe the
minimum number of signal lines. This is achieved by linear or rotational velocity of a motor or other object
passing binary information signals as a time series of in motion.
"1"s and "0"s on a single line.

Speed Regulation
Servo Amplifier/Servo Drive
For a speed control system, speed regulation is the
An electronic device which produces the winding variation in actual speed expressed as a percentage of
current for a servo motor. The amplifier converts a set speed.

Glossary-xii
BDS5 GLOSSARY

A brushless, electromagnetic feedback transducer


which produces an analog velocity feedback signal
SPS and commutation signals for a brushless servo motor.
The tachsyn is functionally equivalent to hall sensors
Steps-Per-Second. A measure of velocity used with
and a tachometer.
stepping motors.

Torque
Stall Torque
The rotary equivalent to force. Equal to the product
The torque available from a motor at stall or zero
of the force perpendicular to the radius of motion and
rpm.
distance from the center of rotation to the point where
the force is applied.
Static Torque
The angle the shaft rotates upon receipt of a single Torque Constant
step command.
A number representing the relationship between
motor input current and motor output torque.
Typically expressed in units of torque/amp.
Stator
The non-rotating part of a magnetic structure. In a
motor the stator usually contains the mounting Torque Ripple
surface, bearings, and non-rotating windings or
The cyclical variation of generated torque given by
permanent magnets.
the product of motor angular velocity and number of
commutator segments.
Stiffness
The ability to resist movement induced by an applied Torque-to-Inertia Ratio
torque. It is often specified as a displacement curve,
Defined as a motor's torque divided by the inertia of
indicating the amount a motor shaft will rotate upon
its rotor, the higher the ratio the higher the
application of a known external force when stopped.
acceleration will be.

Transducer
Synchronism Any device that translates a physical parameter into
an electrical parameter. Tachometers and encoders
A motor rotating at a speed correctly corresponding
are examples of transducers.
to the applied step pulse frequency is said to be in
synchronism. Load torques in excess of the motor's
capacity (rated torque) will cause a loss of
Transfer Function
synchronism.
The ratio of the Laplace transforms of system output
signal and system input signal.
Tachometer
An electromagnetic feedback transducer which
Trapezoidal Profile
produces an analog voltage signal proportional to
rotational velocity. Tachometers can be either brush A motion profile in which the velocity vs. time profile
or brushless. resembles a trapezoid. Characterized by constant
acceleration, constant velocity, and constant
deceleration.
Tachsyn

Glossary-xiii
GLOSSARY BDS5

TTL Velocity
Transistor-Transistor Logic. The change in position as a function of time.
Velocity has both a magnitude and a direction.

Variable Frequency Drive


Voltage Constant (or Back EMF Constant)
An electronic device used to control the speed of a
standard AC induction motor. The device controls A number representing the relationship between Back
the speed by varying the frequency of the winding EMF voltage and angular velocity. Typically
current used to drive the motor. expressed as V/Krpm.

Vector Control Zero


A method of obtaining servo type performance from A frequency at which the transfer function of a system
an AC motor by controlling two components of motor goes to zero.
current.

Glossary-xiv
INDEX BDS5

INDEX

NOTE :

F PAGE NUMBER PREFIX DENOTES A FIGURE

T PAGE NUMBER PREFIX DENOTES A TABLE

-A-
Basic Motion Commands................................... 3-18
A Simple Profile .............................................. F3-20 AMAX, ACC, & DEC .............................. 3-18
ACTIVE, Area 5 ................................................ 3-13 EN, STOP, & LIMITS.............................. 3-18
Alarms (Task Levels 1-3)................................... 4-26 Enabling Motion with MOTION .............. 3-19
Printing with Alarms ................................. 4-27 STOP (S) Command ................................. 3-19
Restrictions of Alarms............................... 4-27 STOP and BREAK with
Algebraic Functions ........................................... 3-10 Control X (^X).................................... 3-19
Allowed Tune Command Baud Rate, BAUD ............................................. 4-39
Stability Settings ....................................T6-4 BDS5 Conditions .............................................T4-11
AMAX, ACC, & DEC ....................................... 3-18 BDS5 Control Modes....................................... F3-40
Analog Input ...................................................... 3-32 BDS5 Enable/Fault Logic Diagram ................. F3-12
and PDEN ............................................... 4-37 BDS5 Instruction Screen.................................... F2-3
Application Flowchart.......................................... 4-3 BDS5 Master/Slaving ...................................... F3-34
Application Specification..................................... 4-3 BDS5 Model Number .......................................... 1-4
Auto Routine (AUTO$) ..................................... 4-29 BDS5 Model Number Scheme........................... F1-4
Auto/Manual Flowchart ................................... F4-31 BDS5 Model Number Scheme...........................T1-4
Autobauding....................................................... 4-38 BDS5 Prompts .................................................T2-10
Autobauding and MOTION ...................... 4-38 BDS5 Prompts .................................................T4-41
Baud Rate, BAUD .................................... 4-39 BDS5 Resident Editor.......................................... 4-7
Enabling Autobaud with ABAUD ............ 4-38 CHANGE (C) ............................................. 4-8
Setting the BDS5 to Autobaud.................. 4-38 DELETE (DEL).......................................... 4-9
Autobauding and MOTION ............................... 4-38 Editor Print (P)............................................ 4-7
Avoiding Idling.................................................. 4-26 FIND (F) ..................................................... 4-8
INSERT (I) ................................................. 4-8
NEW ........................................................... 4-9
-B- Next Line .................................................... 4-7
Password (PASS) ........................................ 4-7
Background (Task Level 6)................................ 4-30 Size ............................................................. 4-9
Restrictions of Background....................... 4-32 BDS5 Rules for Prompts..................................T2-10
Backing Up the Disk(s)........................................ 2-1 BDS5 State Table ............................................ F2-11
Basic Commands................................................ 4-10 Block-IF Restrictions and Options...................T4-14
BREAK (B) .............................................. 4-10 BREAK (B) ....................................................... 4-10
GOSUB and RET...................................... 4-11 Broadcast ........................................................... 4-41
GOTO ....................................................... 4-10 Building A Program........................................... 4-10
Labels........................................................ 4-10 Basic Commands........................................... 4-10
RUN.......................................................... 4-10 Conditional Commands................................. 4-11

-C-

Index-i
BDS5 INDEX

Capture .............................................................. 2-5 Debugging Modes ................................................ 5-1


Capture Direction, CAPDIR............................... 3-26 Single-Step ...................................................... 5-1
Capturing Position.............................................. 3-26 Trace .............................................................. 5-2
Capture Direction, CAPDIR...................... 3-26 DELETE (DEL) ................................................... 4-9
Enabling Capture, CAP & PCAP .............. 3-26 DEP .............................................................. 5-8
Speeding Up Homing Sequences .............. 3-26 Descriptions of Modes ....................................... 2-10
CHANGE (C)....................................................... 4-8 Interactive Mode ....................................... 2-10
Changing a Variable............................................. 3-3 Monitor Mode ........................................... 2-12
Changing Profiles During Motion ...................... 3-30 Other Modes.............................................. 2-13
Choosing PROTARY, PNUM, Run Mode.................................................. 2-12
and PDEN ............................................. 4-37 Single-Step Mode...................................... 2-12
Clamping ........................................................... 3-27 Trace Mode ............................................... 2-12
Clamping and Homing .............................. 3-27 Desired Operation of Program
Clamping and Homing ....................................... 3-27 Example ......................................................T4-14
Commented Program............................................ 4-5 Direction Control, DIR....................................... 3-14
Comments............................................................. 3-1 Displaying Error Messages .................................. 5-9
Common User Units.........................................T4-32 Drive Control ..................................................... 3-14
Compensation Model Number Scheme ..............F1-5 Controlling the Velocity Loop
Compensation Module Model Number ................ 1-5 with PROP.................................................. 3-16
Compliance .......................................................... 6-7 Current .......................................................... 3-16
Computer Requirements....................................... 2-1 Direction Control, DIR.................................. 3-14
Conditional Commands ...................................... 4-11 Enabling the BDS5........................................ 3-16
IF vs. ?....................................................... 4-14 Enabling the Position Loop with PL.............. 3-16
IF's with GOTO and GOSUB.................... 4-15 Limiting Motor Current................................. 3-17
IF, ELIF, ELSE, and ENDIF Position ......................................................... 3-14
Commands........................................... 4-13 Velocity......................................................... 3-15
Nesting ? Commands................................. 4-12 DWELL (D) ....................................................... 4-22
Nesting IF commands................................ 4-15
Quick IF (?) Command.............................. 4-11
TIL Command ........................................... 4-12
-E-
CONTINUE ....................................................... 3-37
Edit .............................................................. 2-7
Continuous Current, ICONT .............................. 3-17
Editing .............................................................. 4-6
CONTROL LOOPS ........................................... 3-37
BDS5 Resident Editor ..................................... 4-7
Position Loop ................................................ 3-38
Motion Link Editor ......................................... 4-6
Power-Up Control Loops .............................. 3-39
Editor .............................................................. 2-7
Torque Command.......................................... 3-39
Cursor.......................................................... 2-8
Velocity Loop................................................ 3-38
Edit.............................................................. 2-7
Controlling the Velocity Loop
File .............................................................. 2-7
with PROP.................................................. 3-16
GOTO ......................................................... 2-8
Critical Damping .................................................. 6-2
Help............................................................. 2-8
Critical Damping ................................................F6-2
Insert/Delete ................................................ 2-8
Current ............................................................ 3-16
Editor Print (P) ..................................................... 4-7
Current Limits, IMAX & ILIM ................. 3-16
Electronic Gearbox............................................. 3-32
Motor Current, ICMD & IMON................ 3-16
Gear Ratio, GEARI & GEARO................. 3-32
Current Limits, IMAX & ILIM .......................... 3-16
Gearbox Example 1................................... 3-32
Current Units...................................................... 4-32
Gearbox Example 2................................... 3-33
Cursor .............................................................. 2-8
Gearbox, ACC/DEC, and Jogs .................. 3-35
Cursor Addressing.............................................. 4-19
Profiles and Gearbox................................. 3-33
Cursor Control Keys...........................................T2-8
Velocity Offset, VOFF .............................. 3-35
Customer Service ................................................. 4-6
EN, STOP, & LIMITS ....................................... 3-18
Enabling and Disabling Multi-tasking................ 4-23
-D- Enabling Autobaud with ABAUD...................... 4-38
Enabling Capture, CAP & PCAP ....................... 3-26
Debugging and Multi-Tasking.............................. 5-2 Enabling Motion with MOTION........................ 3-19

Index-ii
INDEX BDS5

Enabling the BDS5 ............................................ 3-16 Gating Motion with GATE .................................. 5-6
Enabling the Position Loop with PL .................. 3-16 Gear Ratio, GEARI & GEARO ......................... 3-32
Encoder Feedback.............................................. 3-37 Gearbox Example 1............................................ 3-32
Encoder Resolution..........................................T3-37 Gearbox Example 2............................................ 3-33
END Command.................................................. 4-23 Gearbox, ACC/DEC, and Jogs........................... 3-35
English Conversion (12-bit General Purpose Input/ Output .......................... 3-10
R/D Only) .................................................T4-35 Whole Word I/O ........................................... 3-10
Environmental Specifications ..........................T1-12 GOSUB and RET............................................... 4-11
ER-External Resistor Kit Model Number ............ 1-7 GOTO .............................................................. 2-8
Error Handler (ERROR$) .................................. 4-29 GOTO ............................................................ 4-10
Error History........................................................ 5-9
Error Levels ......................................................... 5-8
Error Log ............................................................. 5-8
-H-
DEP .............................................................. 5-8
Hardware Travel Limits ..................................... 3-19
Displaying Error Messages ............................. 5-9
Help .............................................................. 2-6
Error History................................................... 5-9
Help .............................................................. 2-8
Error Levels .................................................... 5-8
Hexadecimal ........................................................ 3-8
Firmware Errors .............................................. 5-9
Hints .............................................................. 5-6
Error Severity Levels and Actions .....................T5-8
HOLD (H).......................................................... 4-21
Establishing Communications.............................. 2-3
How to Disable Multitasking ...........................T4-25
Example Application............................................ 4-3
How to Enable Multi-Tasking..........................T4-25
External Inputs ................................................... 3-31
Analog Input ............................................. 3-32
External Regen Resistor Model -I-
Number Scheme............................................ F1-7
External Regen Resistor Model Idling ............................................................ 4-25
Number Scheme............................................T1-7 Avoiding Idling......................................... 4-26
External Units .................................................... 4-33 Post-Execution Idle................................... 4-26
External Units Conversion ...............................T4-36 Pre-Execution Idle .................................... 4-25
Idling Commands............................................... 4-21
-F- DWELL (D).................................................. 4-22
HOLD (H)..................................................... 4-21
WAIT (W) .................................................... 4-22
Fault Latch, Area 3 ............................................ 3-13
IF vs. ? ............................................................ 4-14
Fault Logic......................................................... 3-11
If Your System Is Completely Unstable............... 6-3
ACTIVE, Area 5 ........................................... 3-13
IF's with GOTO and GOSUB ............................ 4-15
Fault Latch, Area 3 ....................................... 3-13
IF, ELIF, ELSE, and ENDIF
Fault Logic, Area 2 ....................................... 3-13
Commands ............................................... 4-13
Firmware Faults, Area 1................................ 3-13
Incremental Move Example ............................... 3-22
Motor Brake.................................................. 3-14
Indirect User Variables ........................................ 3-7
Output Relay ................................................. 3-14
Initial Settings of Control
Ready Latch, Area 4...................................... 3-13
and User Variables....................................... 3-4
Relay and STATUS Control, Area 6............. 3-13
INPUT ............................................................ 4-20
Fault Logic, Area 2 ............................................ 3-13
INPUT and Decimal Point ........................ 4-21
Features .............................................................. 1-1
INPUT Limits ........................................... 4-20
File .............................................................. 2-7
Input 1-16 Decimal Values ..............................T3-11
FIND (F) .............................................................. 4-8
INPUT and Decimal Point ................................. 4-21
Firmware Errors ................................................... 5-9
INPUT Limits .................................................... 4-20
Firmware Faults, Area 1..................................... 3-13
INSERT (I) .......................................................... 4-8
Foldback Current, IFOLD.................................. 3-17
Insert/Delete......................................................... 2-8
Four Idling Commands ....................................T4-26
Install on a Floppy Disk ....................................... 2-2
Install on a Hard Disk .......................................... 2-2
-G- Instructions........................................................... 3-1
Comments ....................................................... 3-1

Index-iii
BDS5 INDEX

Integrating Velocity Loop .................................. 3-38 Manual Program (MANUAL $) ................ 4-30
Interactive Mode ................................................ 2-10 Power-Up Routine (POWER-UP$)........... 4-29
Interfacing with the Operator ............................. 4-16 Typical AUTO/MANUAL Programs........ 4-30
INPUT........................................................... 4-20 Manual Program (MANUAL $) ......................... 4-30
PRINT (P) ..................................................... 4-17 Master/Slave Block Diagram ...........................F4-34
REFRESH (R & RS) Commands .................. 4-20 Math .............................................................. 3-8
SERIAL Switch............................................. 4-21 Algebraic Functions ...................................... 3-10
Hexadecimal.................................................... 3-8
Logical Functions: AND, OR.......................... 3-9
-J- MCA, MCI, MCD, & MCGO ............................ 3-24
Mechanical Specifications................................T1-12
JOG (J) Command.............................................. 3-23
Menus and Windows ............................................ 2-4
Jog From (JF) Command..................................F3-28
Capture ........................................................ 2-5
JOG TO (JT) & JOG FROM (JF) ...................... 3-28
Help............................................................. 2-6
Changing Profiles During Motion .......... A3-30
Options ........................................................ 2-5
Multiple JF/JT Commands ........................ 3-30
Program....................................................... 2-4
Registration ............................................ A3-29
Scope........................................................... 2-5
Registration Example ................................ 3-29
Utilities........................................................ 2-6
Jog To (JT) Command .....................................F3-29
Variables ..................................................... 2-4
Metric Conversion (12-bit
-K- R/D Only)..................................................T4-35
Molex Assembly Tools ........................................ 1-7
Monitor Mode .................................................... 2-12
-L- Monitor Mode Commands ...............................T2-12
Monitoring Current Limits ................................. 3-18
Labels ............................................................ 4-10 Motion Commands ............................................. 3-18
Limiting Motion ................................................. 3-19 Basic Motion Commands .............................. 3-18
Hardware Travel Limits ............................ 3-19 Capturing Position......................................... 3-26
Software Travel Limits, PMAX Clamping ....................................................... 3-27
& PMIN .............................................. 3-20 CONTINUE .................................................. 3-37
User Position Trip Points, PTRIP1 Electronic Gearbox........................................ 3-32
& PTRIP2............................................ 3-20 Encoder Feedback ......................................... 3-37
Limiting Motor Current...................................... 3-17 External Inputs .............................................. 3-31
Continuous Current, ICONT ..................... 3-17 JOG (J) Command......................................... 3-23
Foldback Current, IFOLD ......................... 3-17 JOG TO (JT) & JOG FROM (JF) ................. 3-28
Monitoring Current Limits ........................ 3-18 Limiting Motion ............................................ 3-19
Logical Functions: AND, OR............................... 3-9 MACRO MOVES ......................................... 3-24
Low-Pass Filters................................................... 6-8 NORMALIZE (NORM) Command .............. 3-23
Profile Regulation ......................................... 3-35
-M- Profiles .......................................................... 3-20
R/D BASED MOVE (MRD) Command ....... 3-26
Machine Specific Units ...................................... 4-35 Zero Position Error (ZPE) Command............ 3-24
Macro Move Example #1................................... 3-25 Motion Link and Trace......................................... 5-2
Macro Move Example #1.................................F3-25 Motion Link Editor .............................................. 4-6
Macro Move Example #2................................... 3-25
Macro Move Example #2.................................F3-25

MACRO MOVES .............................................. 3-24 Motion Link Overview......................................... 2-4


Macro Move Example #1.......................... 3-25 Menus and Windows ........................................ 2-4
Macro Move Example #2.......................... 3-25 Editor2-7
MCA, MCI, MCD, & MCGO ................... 3-24 Types Of Data Files......................................... 2-9
Main Program Level (Task Level 5) .................. 4-29 Using IBM-PC Compatibles ........................... 2-9
Auto Routine (AUTO$) ............................ 4-29 Motion Link Setup Program................................. 2-9
Error Handler (ERROR$) ......................... 4-29 Motion Segments.................................................. 5-4
Motor Brake ....................................................... 3-14

Index-iv
INDEX BDS5

Motor Current, ICMD & IMON ........................ 3-16 Position ............................................................ 3-14
Move Absolute (MA) Command ....................... 3-21 Position Command and Feedback,
Move Incremental (MI) Command .................... 3-22 PCMD & PFB.................................... 3-14
MULTI ............................................................ 4-23 Position Error, PE & PEMAX .................. 3-14
MULTI-TASKING ............................................ 4-23 R/D Position, PRD.................................... 3-15
Alarms (Task Levels 1-3).............................. 4-26 Sampling PFB, PCMD and PEXT ............ 3-15
Background (Task Level 6)........................... 4-30 Position Command and Feedback,
Enabling and Disabling Multi-tasking........... 4-23 PCMD & PFB......................................... 3-14
END Command............................................. 4-23 Position Error, PE & PEMAX ........................... 3-14
Idling 4-25 Position Loop..................................................... 3-38
Main Program Level (Task Level 5) ............. 4-29 Position Rotary Mode, ROTARY, &
MULTI.......................................................... 4-23 PROTARY................................................. 4-37
Multitasking and Autobauding...................... 4-23 Choosing PROTARY, PNUM,
Variable Input (Task Level 4)....................... 4-27 and PDEN ............................................. 4-37
Multi-Tasking Debug Prompts...........................T5-3 Rotary Mode and Absolute Moves ......... 4-38
Multi-Tasking Overview..................................T4-24 Post-Execution Idle............................................ 4-26
Multidrop Communications ............................... 4-40 Power-up and Control Variables.......................... 3-3
Broadcast .................................................. 4-41 Power-Up Control Loops ................................... 3-39
Multiple JF/JT Commands................................. 3-30 Power-Up Routine (POWER-UP$).................... 4-29
Multiple Profile Commands............................... 3-23 Power-Up State of Programmable Units ............T3-4
Multitasking and Autobauding........................... 4-23 PRD: Ranges and R/D Resolutions..................T3-15
Pre-Execution Idle ............................................. 4-25
PRINT (P).......................................................... 4-17
-N- Cursor Addressing .................................... 4-19
Printing ASCII Characters ........................ 4-18
Nesting ? Commands ......................................... 4-12
Printing BDS5 Status (PS) ........................ 4-20
Nesting IF commands ........................................ 4-15
Printing Binary Numbers .......................... 4-18
NEW .............................................................. 4-9
Printing Control Characters ...................... 4-19
Next Line ............................................................. 4-7
Printing Decimal Numbers........................ 4-17
Non-Linear Mechanics......................................... 6-7
Printing Decimal Points ............................ 4-17
NORMALIZE (NORM) Command ................... 3-23
Printing Expressions ................................. 4-18
Printing Hex Numbers .............................. 4-17
-O- Printing Switches ...................................... 4-18
Printing ASCII Characters ................................. 4-18
Options .............................................................. 2-5 Printing BDS5 Status .......................................T4-20
Other Modes ...................................................... 2-13 Printing BDS5 Status (PS) ................................. 4-20
Other User Units ................................................ 4-33 Printing Binary Numbers ................................... 4-18
Output 1-8 Decimal Values..............................T3-10 Printing Control Characters ............................... 4-19
Output Relay ...................................................... 3-14 Printing Decimal Numbers................................. 4-17
Overdamping........................................................ 6-2 Printing Decimal Points ..................................... 4-17
Overdamping...................................................... F6-2
Overloading the Motor......................................... 6-6

Printing Expressions .......................................... 4-18


Printing Hex Numbers ....................................... 4-17
-P- Printing Switches ............................................... 4-18
Printing Variables ................................................ 3-2
Part Number Description ..................................... 1-3 Printing with Alarms .......................................... 4-27
BDS5 Model Number ..................................... 1-4 Problems6-6
Compensation Module Model Number........... 1-5 Compliance ..................................................... 6-7
ER-External Resistor Kit Model Number ....... 1-7 Low Pass Filters.............................................. 6-7
Molex Assembly Tools ................................... 1-7 Non-Linear Mechanics.................................... 6-7
PSR4/5 Model Number................................... 1-6 Overloading the Motor.................................... 6-6
Password (PASS) ................................................. 4-7 Resonance ....................................................... 6-7

Index-v
BDS5 INDEX

Processor Modes .................................................. 2-9 Registration Example ......................................... 3-29


Descriptions of Modes .................................. 2-10 Regulation Example ........................................... 3-36
Prompts ........................................................... 2-9 Regulation Timer, RD .......................................... 5-4
Product Description.............................................. 1-1 Relay and STATUS Control, Area 6.................. 3-13
Profile Final Position, PFNL.............................. 3-23 Removing Code.................................................... 5-3
Profile Limits ..................................................... 3-22 Resonance ............................................................ 6-7
Profile Regulation .............................................. 3-35 Restrictions of Alarms........................................ 4-27
Profile Regulation and Counting Restrictions of Background ................................ 4-32
Backwards ........................................... 3-36 Restrictions of Variable Input ............................ 4-28
REG & REGKHZ...................................... 3-35 Ringing .............................................................. 6-2
Regulation Example .................................. 3-36 Ringing ............................................................F6-2
Profile Regulation and Counting Rotary Mode and Absolute Moves..................... 4-38
Backwards ........................................... 3-36 Rules For Math Expressions...............................T3-9
Profiles ............................................................ 3-20 RUN ............................................................ 4-10
Incremental Move Example ...................... 3-22 Run Mode........................................................... 2-12
Move Absolute (MA) Command............... 3-21
Move Incremental (MI) Command............ 3-22
Multiple Profile Commands ...................... 3-23
-S-
Profile Final Position, PFNL..................... 3-23
S-Curve Acceleration Chart .............................T3-21
Profile Limits ............................................ 3-22
S-Curve Profile.................................................F3-21
S-Curves.................................................... 3-20
S-Curves ............................................................ 3-20
Profiles and Gearbox.......................................... 3-33
Sample Flowchart...............................................F4-4
Program .............................................................. 2-4
Sampling PFB, PCMD and PEXT ..................... 3-15
Program Examples ............................................. 4-41
Scope .............................................................. 2-5
Programming Conditions...................................... 3-3
Segments for Different Moves ...........................T5-5
Programming Techniques..................................... 4-1
Serial Communications ...................................... 4-38
Application Flowchart..................................... 4-3
Autobauding.................................................. 4-38
Application Specification ................................ 4-3
Multidrop Communications........................... 4-40
Commented Program....................................... 4-5
Prompts ......................................................... 4-39
Customer Service ............................................ 4-6
Serial Watchdog ............................................ 4-39
Example Application....................................... 4-3
System Dump ................................................ 4-40
Prompts .............................................................. 2-9
Transmit/Receive Programs .......................... 4-39
Prompts 4-39
SERIAL Switch.................................................. 4-21
Proportional Velocity Loop................................ 3-38
Serial Watchdog ................................................. 4-39
PROTARY ................................................. 4-37
Setting External Units in
PSR4/5 Model Number ........................................ 1-6
Master/Slave Systems................................T4-33
PSR4/5 Model Number Scheme.........................F1-6
Setting the BDS5 to Autobaud ........................... 4-38
PSR4/5 Model Number Scheme.........................T1-6
Simplified Schematic Diagram
and System Diagram...................................... 1-13
-Q- Single-Step ........................................................... 5-1
Single-Step Mode............................................... 2-12
Quick IF (?) Command....................................... 4-11 Size .............................................................. 4-9
Software Installation............................................. 2-1
-R- Software Installation............................................. 2-1
Backing Up the Disk(s) ................................... 2-1
R/D BASED MOVE (MRD) Command ............ 3-26
Establishing Communications ......................... 2-3
R/D Converter Accuracy ..................................T3-26
Software Installation........................................ 2-2
R/D Position, PRD ............................................. 3-15
Software Installation............................................. 2-2
Ready Latch, Area 4........................................... 3-13
Install on a Floppy Disk .............................. 2-2
RECORD and PLAY ........................................... 6-6
Install on a Hard Disk.................................. 2-2
Reducing ILIM..................................................... 6-3
Software Travel Limits, PMAX
REFRESH (R & RS) Commands ....................... 4-20
& PMIN ................................................... 3-20
REG & REGKHZ............................................... 3-35
Special Constants ................................................. 3-8
Registration ........................................................ 3-29
Specifications .....................................................T1-8

Index-vi
INDEX BDS5

Specifications and Ratings ................................... 1-8


Speeding Up Homing Sequences ....................... 3-26
-U-
Standard Units....................................................T3-2
Underdamping...................................................... 6-2
STOP (S) Command .......................................... 3-19
Underdamping.................................................... F6-2
STOP and BREAK with
Units ............................................................ 4-32
Control X (^X)......................................... 3-19
Machine Specific Units................................. 4-35
Switche s............................................................. 3-2
Position Rotary Mode, ROTARY, &
Synchronizing Your Program............................... 5-4
PROTARY................................................. 4-37
Gating Motion with GATE ............................. 5-6
User Position Trip Points, PTRIP1
Motion Segments ............................................ 5-4
& PTRIP2 ................................................ 3-20
Regulation Timer, RD..................................... 5-4
User Switches....................................................... 3-8
Using the Timers, TMR1-4 ............................. 5-4
User Units .......................................................... 4-32
WAIT (W) ...................................................... 5-5
Current Units............................................. 4-32
System Compensation .......................................... 6-1
External Units ........................................... 4-33
Critical Damping............................................. 6-2
Other User Units ....................................... 4-33
Overdamping................................................... 6-2
User Variables...................................................... 3-7
Ringing............................................................ 6-2
Indirect User Variables ............................... 3-7
Underdamping................................................. 6-2
Using IBM-PC Compatibles ................................ 2-9
System Dump ..................................................... 4-40
Using the General Purpose Inputs...................... 4-15
Version Dump........................................... 4-40
Using the Timers, TMR1-4 .................................. 5-4
System Resolutions ..........................................T4-33
Using Variable Input with Profiles..................... 4-28
Utilities .............................................................. 2-6
-T-
The >BDS Command Transmitting
-V-
to the BDS5.......................................... 4-39
Variable Input (Task Level 4)............................ 4-27
Theory of Operation........................................... 1-12
Restrictions of Variable Input ................... 4-28
Three Types of Variables..................................... 3-2
Using Variable Input with Profiles............ 4-28
TIL Command.................................................... 4-12
Variable Limits .................................................... 3-2
To Execute AUTO$ .........................................T4-30
Variable Units ...................................................... 3-2
To Execute MANUAL$...................................T4-30
Variables .............................................................. 2-4
Torque Command .............................................. 3-39
Variables .............................................................. 3-1
Trace .............................................................. 5-2
Changing a Variable........................................ 3-3
Motion Link and Trace ................................ 5-2
Initial Settings of Control
Trace Mode........................................................ 2-12
and User Variables....................................... 3-4
Transmit/Receive Programs ............................... 4-39
Power-up and Control Variables..................... 3-3
<BDS Command Receiving from
Printing Variables ........................................... 3-2
the BDS5............................................... 4-39
Programming Conditions ................................ 3-3
The >BDS Command Transmitting
Special Constants ............................................ 3-8
to the BDS5.......................................... 4-39
Switches .......................................................... 3-2
TUNE Command ................................................. 6-4
Three Types of Variables................................ 3-2
Tuning .............................................................. 6-3
User Switches.................................................. 3-8
If Your System Is Completely Unstable.......... 6-3
User Variables................................................. 3-7
Reducing ILIM................................................ 6-3
Variable Limits ............................................... 3-2
Tuning Criterion.................................................T6-1
Variable Units ................................................. 3-2
Tuning the BDS5 Yourself .................................. 6-4
VCMD, VFB, VE, & VAVG............................. 3-15
Tuning the Position Loop................................ 6-5
Velocity ............................................................ 3-15
Tuning the Velocity Loop ................................ 6-4
VCMD, VFB, VE, & VAVG.................... 3-15
Tuning the Position Loop..................................... 6-5
Velocity Limits, VMAX & VOSPD ......... 3-16
Tuning the Velocity Loop .................................... 6-4
Velocity Limits, VMAX & VOSPD .................. 3-16
Types Of Data Files ............................................. 2-9
Velocity Loop .................................................... 3-38
Typical AUTO/MANUAL Programs................. 4-30
Integrating Velocity Loop ......................... 3-38
Proportional Velocity Loop ...................... 3-38

Index-vii
BDS5 INDEX

Velocity Loop Bandwidth vs. KPMAX .............T6-5


Velocity Loop Bandwidth vs. KVI.....................T6-5
Velocity Offset, VOFF ....................................... 3-35
Version Dump .................................................... 4-40

-W-
WAIT (W).......................................................... 4-22
WAIT (W)............................................................ 5-5
Whole Word I/O................................................. 3-10

-X-
-Y-
-Z-
Zero Position Error (ZPE) Command................. 3-24

---
<BDS Command Receiving from
the BDS5 ............................................... 4-39

Index-viii
BDS5 UPGRADE NOTICES
VERSION 3.0.x FIRMWARE HISTORY
FIRMWARE OBSOLETE/ MC
DATE LLL VERSION CURRENT/ VERSION DESCRIPTION OF CHANGES
S.O.
10-93 030 3.0.0 Obsolete MC2 • Added “MONITOR” switch to force Monitor
Rev 2 and mode during program run.
later • Added a serial port “ECHO” switch.
• Added “MSG” switch to control the Power-up
and Monitor messages.
• Added a fix for the Serial watchdog (took
35 sec to print).
• Added a random number command (“RAND”).
• Added Print Append command (“PA
and “PAS”).
• Changed the “RUN” command to work from
user program
• Added Real Time Trace commands
(“TRECORD” and “TPLAY”).
• Added an Electronic Cam mode (CAM
and PCAM).
• Enhanced “NORM” command to enable
Camming
• Moved position interrupt code around to make
CAM work properly. This reduced the loop
delay and increased BDS5 stability (i.e.
bandwidth).
• Stopped “CONTINUE” from working with
CAM.
• Made drive disable also disable Camming.
• Added “LPF” and “LPFHZ” to the
“DUMP TL” command.
• Added Extended User Registers “EXTDX”
for X251-X750.
• Added “CLEARX” command.
• Fixed the 16-bit R/D problem.
• Fixed motion bug due to multiple “J 0”
commands
• Eliminated micro register test to make more
room for code.
• Fixed bug that ignored Escape when
background was continuously printing.
• Fixed bug where error messages occasionally
printed the wrong line number.
• Added code to initialize the new Dallas Bat-
RAMS to prevent power-up and program crash
problems.
• Register based instructions will execute .3 msec
slower.

1
VERSION 3.0.x FIRMWARE HISTORY (Continued)
FIRMWARE OBSOLETE/ MC
DATE LLL VERSION CURRENT/ VERSION DESCRIPTION OF CHANGES
S.O.
10-93 030 3.0.1 Obsolete MC2 • Changed the lower limit of “PEMAX” from
Rev 2 and 0 to 1.
later • Force “PEMAX” to 1 if less than 1.
2-94 030 3.0.2b Obsolete MC2 • Enhanced the Message command (“MSG”) to
Beta Bug Fix Rev 2 and also suppress error messages.
(Shipped to later • Fixed error handler to properly handle more
some than one error.
customers for • Fixed ERROR$ to reliably execute to
test and completion on first error.
verification of • An error will now force off Monitor mode to
bug fixes) prevent program hang.
• Fixed Jog command (“J”) that could cause
software watchdog if executed during an error.
2-94 030 3.0.2 Obsolete MC2 • Functionally equivalent to BDS5 3.0.2b plus. . .
Rev 2 and • Current foldback fix
later • INPUT”” command fix
• Clear “LSTERR” to 0 on “EN”.
• Fixed Print problem due to program terminating
with an “END” while in Monitor mode.
KNOWN PROBLEMS
• On power-up the program corrupt message is
suppressed.
• The TPLAY command will not display the
newest trace line if the number of lines stored
exceed 1000.
• On power-up with a new uninitialized
BATRAM the BDS5 will often trigger a
software watchdog (this is an inconvenience to
the factory test people).
4-94 030 3.0.3 Obsolete MC2 • Fixed non-printing error message on power-up
Rev 2 and due to corrupt user program.
later • Fixed TPLAY to properly display the trace
information after the number of lines stored
exceed 1000.
• Fixed the factory initialization problem that
would cause a software watchdog trip due to the
user program being uninitialized in a new
BATRAM chip.

VERSION 3.0.x FIRMWARE HISTORY (Continued)

2
FIRMWARE OBSOLETE/ MC
DATE LLL VERSION CURRENT/ VERSION DESCRIPTION OF CHANGES
S.O.
5-94 030 3.0.4 Obsolete MC2 • Enhanced the CLEARX command to allow
Rev 2 and separate clearing of all User Registers or User
later Flags or both.
• Fixed LSTERR to work even if MSG=0.
• Fixed another factory initialization problem that
would cause a software watchdog trip on entry
to the User Program Editor due to the user
program being uninitialized in a new BATRAM
chip.
• Enhanced the Break (B) command to allow the
optional breaking of a user INPUT command (B
I).
• Enhanced the Error Recovery Task to cancel the
user INPUT command if it is active.
• Enhanced the Error Recovery Task to cancel a
Task idling command such as “H”.
11-94 030 3.0.5 Current MC2 • Added MONITOR=OFF support from the user
Rev 2 and program.
later • Fixed a problem with EXTLOOP.
• Added PCMD=PEXT when EXTLOOP=1 and
drive disabled.
• Fixed front panel LED initialization on power-
up.
• Syntax error in ERROR$ will break the
program.
• An invalid command will not allow any program
execution.
• An error occurring while in Monitor mode will
print the error message and return to Monitor
mode.

3
BDS5 UPGRADE NOTICE

VERSION 3.0.0
• It provides many new commands to control serial communications with.
• It provides the user with up to 750 user registers.
• It provides a real time trace function.
• It provides an electronic cam function.
• It provides a random number generator.
• It provides for using the run command from within the user program for purposes of restarting
a program.
• It provides up to 5% higher position loop bandwidth.

EXISTING APPLICATIONS
Please be aware that register based operations will run approximately .3 msecs slower (see next
page). This could cause a problem with older, time critical applications. Should this problem
occur with older applications - please contact the factory for the older firmware version 2.0.6.

UPGRADES
When upgrading older systems with 3.0.0. be sure to initialize the three new non-volatile flags for
proper operation:
• ECHO=1
• MSG=1
• EXTDX=0

750 USER REGISTERS


Be aware that while the extra 500 user registers are enabled, the PC-SCOPE and PC-TRACE
commands will be unavailable.

1
BDS5 version 3.0.0 Firmware
BDS5300.DOC Rev 4 June 15, 1993

MONITOR 0|1 This will automatically force entry into the


Monitor mode at the start of running a program.
MONITOR is set to 0 on Power-up.
ECHO 0|1 Used to suppress the echo of serial port characters
ECHO is remembered on Power-up.
MSG 0|1 Used to suppress the power-up message and the
Monitor mode message.
MSG is remembered on Power-up.
PA <expr>{[<format>]} | “<text>” {...} Print Append command - This command is like the
Print command except there is no terminating
<carriage return> & <linefeed>. Also see the “R”
and “RS” print command.
PAS <expr>{[<format>]} | “<text>” {...} Print Append Status command - This is identical to
the PA command except it also prints drive status
information.
RUN {<label>} Now Allowed from within program - This can
allow the user to “restart” a program from an
Alarm or Error label.
CLEARX This command will clear all user registers and user
flags to zero. Note: The Variable upload can be
greatly sped up if all user registers and flags are
zero. Edit the .VAR file and remove all XS1-
XS50 ad X1-X750 lines and replace them with one
“CLEARX” command.
(X1-X750 & XS1-XS50
EXTDX 0|1 This will enable the Extended User Registers
X251-X750.
Note: The PC-SCOPE command and the Real
Time Trace command can not be used while the
Extended User Registers are enabled.
EXTDX is remembered on Power-up
RAND <seed> Random number generator command
RAND X<user register> <expr1> <expr2> <seed> = 0 - 31,000
-This generates the random number sequence.
<user reg>=1-250
-This is the user register used to store the
random number.
<expr1>
-This is a random number boundary (limit).
<expr2>
-This is the other random number boundary
(limit).
|<expr1>-<expr2>| <=31,000
CAM This internal switch indicates if the 128 point
Camming mode with linear interpolation is
enabled.
PCAM Position command from CAM table. The CAM
table is contained in user registers X100-X227.

2
NORM <pos> {CAM} Used to enable the Cam at the Normalize position -
GEAR mode must be turned off before enabling
CAM, after which GEAR must be turned on to
start Camming.
DUMP {TL | VERSION} Added LPF and LPFHZ to DUMP TL

3
TRECORD START | STOP | CONTINUE Real Time Trace Record command. This can be
buried in the user program to control Real
Time Tracing.
Real Time Trace Playback command.
TPLAY - this will dump the entire Real Time Trace buffer
to the serial port.
TPLAY NEWEST <#lines> -this will output the newest # of lines.
TPLAY OLDEST <#lines> -this will output the oldest # of lines.
TPLAY <#lines> -this will output a # of lines.
TPLAY <line1> <line2> -this will output from <line1> to <line2>.
See the Output syntax below
Output Format: #<line> LINE <pgm line> <prompt> <command>
#<line> is the trace line number.
<pgm line> is the user program line number.
<prompt> is a modified trace prompt that in addition to indicating the trace mode and the multi-
drop address, also indicates the multi-task active.
• ta. indicates Alarm A$ was active
• tB. indicates Alarm B$ was active
• tC. indicates Alarm C$ was active
• tV. indicates Variable$ was active
• t.. indicates the MAIN PROGRAM ($-$500) was active
• t*. indicates BACKGROUND$ was active
• tI. indicates INTERACTIVE was active
• tM. indicates MONITOR was active.
<command> is the user program command that executed.
Output Example: #1 LINE 22 AT .. 5$ ;this indicates program trace line1 was
;at user program line 22 from the Main
;program task and it was a label (5$).

NOTE: When upgrading from an older version of firmware the following variable must be
initialized to insure proper operation of the BDS5. This is because they are not forced to default
power-up state and therefore will assume the value of the previously unitialized memory locations.
the flags ECHO and MSG should be set to 1 and the flag EXTDX should be set to 0 for 250 user
registers and set to 1 for 750 user registers. Remember that when EXTDX is enabled, it will
disable the PC-SCOPE and PC-TRACE features of the BDS5.

• ECHO=1
• MSG=1
• EXTDX=0

4
BDS5 TIMING TESTS

INSTRUCTION SPECIAL CONDITION TIMING TIME (msec) TIME (msec)


METHOD Ver 2.0.5 Ver 2.0.5
O1 ON None 1 1.90 1.94
O1 OFF None 1 1.90 1.92
OUT=OUT!0C8h None 1 2.86 2.89
? 1 EQ 1 01 ON None 1 3.99 4.04
X1=2 None 1 1.72 2.03
X1=X2+1 None 1 2.18 2.50
X1=X2-1 None 1 2.17 2.50
X1=X2*100 None 1 2.33 2.65
X1=X2/100 None 1 2.36 2.67
ZPE None 1 1.20 1.67
NORM 0 None 1 2.00 2.64
O1 On GEAR ON 1 2.07 2.11
X1=X2+1 GEAR ON 1 2.37 2.72
MI 40960 1000 None 2 6.00 6.00
MI 40960 1000 GEAR ON 2 6.80 6.80
MI 40960 1000 GEAR & REG ON 2 8.00 8.00
MI 40960 1000 REG ON 2 6.20 6.10
MI 40960 1000 REG ON & IN MOTION 2 7.00 7.00
MI 40960 * NONE 2 5.00 5.10
MI 40960 * GEAR ON 2 5.80 5.40
MI 40960 * REG ON 2 5.10 5.20
* (VDEFAULT 1000)

TIMING METHOD #1 TIMING METHOD #2


Divide the number of loops counted (X1) into 10 With an oscilloscope measure the amount of time
seconds (10 / X1) to get the single loop time. that Output #1 is ON while running the program
Perform this operation twice, once with the with the <instruction> and subtract from this the
<instruction> and once without the <instruction>. amount of time the Output #1 is ON while running
Subtract the amount of time it takes to run this the program without the <instruction>. The result
program with the <instruction> from the time to is the amount of time it takes to execute the
run without the <instruction>. The result is the instruction.
amount of time it takes to execute the instruction.
4$ 5$
X1=0 PLIM 0
TMR1=1---- EN
5$ O1 ON
X1=X1+1 <instruction>
<instruction> O1 OFF
? TMR1 GT 0 GOTO 5 W0
B D 1000
GOTO 5

5
CAMMING with the BDS5
BDS5-CAM.DOC Rev 3 June 02, 1993

Figure 1. A Conventional Cam

Conventional Cams
Conventional cams convert rotational motion to linear motion. As Figure 1 shows, the "command"
signal comes from a master-drive shaft which is fitted with a cam. The cam generates linear
motion on a follower. Cams are used when a specific profile must be generated each time a drive
shaft turns. The cam itself can have a wide variety of shapes. This leads to tone of the most
important features of cams: you can generate a wide range of linear motion profiles using only
constant rotational motion.

Electronic cams offer many advantages over conventional, mechanical cams. For example, the
profile of an electronic cam is much easier to change. These profiles can be changed without
machining parts, and without disassembling the machine. With electronic cams, the machine
comes off-line only for the few minutes it takes to load a new profile. another advantage is that
electronic cam profile are not subject to wear like their mechanical counterparts.

The profile of an electronic cam is stored in a table such a the one shown in Figure 2. This table
defines the relationship between the drive and follower positions. You define the table directly or
take it from an existing conventional cam. If the cam already exists, you determine the radius of
the cam profile at different angles as shown in Figure 3. Here, 4 radii are shown, though in
practice, many more are specified.

6
Figure 2. Electronic Cam Table

One of the most important features of an electronic cam is that the master drive can rotate in one
direction indefinitely. With conventional positioners, this will eventually cause an error because
the internal position counter will overflow. Also, the electronic cam controller must support gear
ratios between the drive shaft and the follower. Again, the drive can rotate indefinitely, and the
controller must not lose counts. The BDS5 has been designed with both of these criteria, allowing
it to serve as both a conventional positioner and as an electronic cam.

4.00" Radius


2.75" Radius 90° 2.75" Radius
270°
180°

1.70" Radius

Figure 3. Conventional Cam Table

7
Setting up the BDS5
To use BDS5 camming, you need to follow these steps:

1) Generate a cam table and enter it into the BDS5.


2) Scale the BDS5 electronic gearbox.
3) Align the machine and enable camming.


1) Generating a Table
To generate a table, start with a graph, like the one
in Figure 2, showing the master drive position
versus the follower position. Divide this graph
into 128 evenly spaced sections. Each section
270° 90° represents about 2.81 degrees (360/128). Now
load the follower positions into the BDS5 user
variables X100-X227 as shown below:

180°

Figure 4
Dividing a CAM

Master Position Master Degrees Load Follower Position in This


User Variable
1 0 X100
2 2.81 X101
3 5.62 X102
4 8.43 X103
. . .
. . .
. . .
126 351.56 X225
127 354.38 X226
128 357.19 X227

Note that the beginning position (X100) should be close to the ending position (X227). This is
because this is an absolute electronic cam that will always cycle back to it's original starting
position. and begin the cam again. The next position after X227 is X100. when the cam table is
written it must wrap around so that position X227 and position X100 are close. If the positions are
not close the motor will jump and will possible trip out due to either an overspeed or a position
following error.

8
2) Scale the gearbox
The BDS5 processes the master drive signal through the gearbox so you can select the gear ratio
you need. You must select the gear ratio so that when the master rotates 360 degrees, 32,768
counts are generated in the BDS5. think of the 360 degree horizontal axis of Figure 2 as being
32.768 counts long. for example, suppose the sensor on the drive shaft were a 1000-line encoder.
Because of quadrature, the encoder would generate 4000 counts for every rotation. So the 4000
counts should be scaled through the gearbox to generate 32,768 counts. The gear ratio would be:

GEARI 32 , 768 4096


= =
GEARO 4000 500
or, GEARI=4096 and GEARO=500.

If you want to test your scaling, enable your BDS5 (without camming), turn GEAR ON, and rotate
the drive motor 360 degrees. The follower motor should rotate 32,768 counts (8 rev's for a 12-bit
system or 2 rev's for a 14-bit system).

3) Align the Machine


Some applications require that the master drive be aligned; others assume the drive is 0 degrees at
power-up. If your application requires drive shaft alignment, you must provide the necessary
mechanisms as the BDS5 will not have control of the drive shaft. Virtually all applications require
that you align, or "home", the follower position. Depending on your system, you may need a home
switch. In any event, the two positions must line-up somewhere in the cam table. For example, in
Figure 2, if the drive shaft were at 0 degrees and the follower were at 3.00 inches, either the master
drive or the follower would have to move. You would either have to:

1) rotate the drive to 90 degrees to line up with the 3.00 inch follower position, or
2) move the follower to 4.00 inches to line up with the 0 degree master-drive position.

The master and follower must line up somewhere in the cam table before you can proceed.

The same command both enables camming and aligns the master and follower. The BDS5 uses the
NORM command with "CAM" as the third entry. The form of the command is:

NORM <Master Drive Position> CAM

This command simultaneously aligns and enable camming. When camming is enabled, the
software switch CAM is on. To disable camming, you must reset the BDS5, disable the BDS5, or
enter the NORM command without the "CAM". You cannot directly change the value of CAM.
Note that the BDS5 must be enabled to use NORM with the "CAM" entry.

9
When the "NORM <Master Drive Position> CAM" command is executed, PCMD is determined
by the cam table and is set to the corresponding value for PCMD. PFB is set to the same value as
PCAM and therefore there is no PE (position error).

Returning to Figure 2, assume you know the follower to bed 4.00 inches. The master drive should
be at 0 degrees. You would normalize the position as follows:

EN
NORM 0 CAM

If you are using position units, the most convenient place to normalize for camming is when the
master drive is at zero. This is because the master drive position (PCMD) uses position units
(PNUM and PDEN) which are normally scaled for the follower. When you normalize to zero, the
units do not have any effect. However, if you want to normalize the master to a non-zero position,
you must

A) Determine the position of the drive master to which you will normalize;

B) Convert the position to counts where 360 degrees equals 32.768 counts;

C) Temporarily set position units to 1:1 (PNUM = PDEN = 1);

D) Normalize to the position in counts:


EN
NORM <Master Drive Position in Counts> CAM

E) Restore the position units to their original values.

For example, if you knew the follower to be 3.00 inches and you knew the drive to be at 90
degrees:

A) Drive position = 90 degrees.

B) Drive position = 8192 counts.

C) PNUM=1
PDEN=1

D) EN
NORM 8192 CAM

E) Restore PNUM and PDEN

10
Finally, you must turn GEAR on. This connects the drive to the follower. If you want tot test your
system before you connect the master-drive, you can use VOFF. VOFF is the offset speed for the
electronic gearbox. For example, if the master drive is not moving and you turn GEAR ON and set
VOFF to 100 RPM, the position command will increase at a rate of 100 RPM. This has the same
effect as the encoder option input running at 100 RPM. For a 12-bit system, this is equivalent tot
the master drive rotating at 409,600 counts per minute; as 360 degrees is 32.768 counts, this is
equivalent to 12.5 (409,600/32,768) cycles through the cam table every minute.

PCAM and PCMD


The BDS5 uses a special variable for camming, PCAM. PCAM is the position command from the
cam table. This is usually the role for PCMD (position command). However, when camming is
enabled, PCM represents the position from the electronic gearbox; that is, the position that goes
into the table. PC M is the output from the table.

PCMD is automatically in a "ROTARY" mode where the distance of one rotation is fixed at
32.768 counts. PCAM can be printed or recorded with PC-Scope. In fact, if you want to see your
cam profile, you can record PCAM and PCMD simultaneously. For example, the following line
records both positions for 0.5 seconds.

RECORD 500 1 PCMD PCAM

You can then use PC-Scope to verify your profile. Also, the PS and RS commands display
"CAMMING" if GEAR and CAM are both ON.

Limitations
There are several limitations for camming applications. These limitations reflect that many
functions of the BDS5 are not useful when caming. For example, profile commands (MI, MA, J,
JT, JF, MCGO) are not allowed. ROTARY must be OFF. Any error that disables the drive also
disables camming; you must re-normalize after such errors. Error 23, SOFTWARE
OVERTRAVEL, disables the BDS5 and breaks the user program; when camming is off, this error
only breaks the user program.

11
CAMMING DETAILS
by George Ellis 7/92
(Edited by Rick Furr June 02, 1993)

Camming is implemented as a modification of the BDS5 gearbox. As Figure 5 shows, the standard
gearbox produces PCMD by multiplying PEXT by the ratio GEARI/GEARO. PE is formed by
subtracting PFB from PCMD. Usually, PEXT is generated from another motor's feedback sensor.
In this way, a master motor position (PEXT) controls the slave motor position (PFB).

PEXT Ratio: PCMD PE


GEARI
GEARO +

PFB

Figure 5. BDS5 Gearbox

This method of controlling motors is limited. The only profile that is allowed is one where the
slave position is proportional to the master position. Often, applications require that a master
motor will be turning at a relatively constant speed, but the slave motor must execute a profile.
Actually, the BDS5 has "Profile Regulation", a mode where the rate of the slave profile is tied to
the master speed. At first we thought this would work for camming. Unfortunately, each time a
new profile is started, there are a few milliseconds when the master position is ignored. So,
although the rate of the profile is controlled by the master, the master phase and slave phase are not
locked together. Over time, the master position drifts with respect to the slave position.

12
To implement camming, a new approach had to be taken. We decided to modify the gearbox by
adding a look-up table. As Figure 6 shows, PEXT is processed by the gearbox to form PCMD.
PCMD is then used as an index into a CAM look-up table to produce a new variable, PCAM.
When camming is enabled, PCAM is used to form PE.

PEXT Ratio: PCMD CAM PCAM PE


Look-up
GEARI Table
GEARO (X100-X227) +

PFB

Figure 6. BDS5 Camming

Interpolation
The BDS5 CAM Table only has 128 points but with the help of interpolation, the BDS5 is able to
generate a 32,768 point CAM. The interpolation algorithm will split each CAM table point into
256 linearly interpolated mid-point positions based on the master input. this is why the gear ratio
must be chosen so that each revolution of the Master Cam input generates 32.768 counts of PCMD
to the CAM table. This scaling is easily accomplished by programming the GEARI variable to
32,768 and then programming the number of counts generated by one revolution of the master
input CAM into GEARO. A example would be as follows:

The master input device is a 2,000 line encoder. Each revolution of this encoder would produce
8,000 (2,000x4) counts of position command. If it took two revolutions of the mater to make one
turn of the CAM then the master input would receive 16,000 (8,000x2) counts of position
command per turn of the CAM. this means that the variable GEARO should be programmed to
16,000

Note: The variable GEARO must be number between 0 and 32,767. The variable GEARI must
be a number between -32,768 and 32,767.

BDS5 MASTER/SLAVE
The next page will provide a more detailed block diagram of the Electronic Gearbox, Profile
Regulation, and Electronic CAM master/slave modes of the BDS5.

13
ELECTRONIC GEARBOX
C
DIGITAL VELOCITY
1 VXDEN
VEXT
X4 VXNUM
DECODE

A/D PXDEN
PEXT
OPT1 POSITION PXNUM
GEARI VOFF
C
ANALOG GEARO +
2
PCMD
+
MOTION PROFILE +
COMMAND GENERATION

PROFILE REGULATION
C
DIGITAL VELOCITY VXDEN
1 VEXT
X4 VXNUM
DECODE

A/D PXDEN
PEXT
OPT1 POSITION PXNUM
1
C REGKHZ
ANALOG
2

MOTION PROFILE
GENERATION PCMD
COMMAND

ELECTRONIC CAM
C
DIGITAL VELOCITY VXDEN
1 VEXT
X4 VXNUM
DECODE

A/D PXDEN
PEXT
OPT1 POSITION PXNUM
GEARI
VOFF
C
ANALOG
GEARO +
2
PCMD
CAM PCAM
+ TABLE
Set ratio for (X100-
BDS5 MASTER/SLAVE 360° of Master
X227)
RICK FURR = 32768 counts
06-03-93 A-93633M Issue2

14
TESTING
A simple test program was written. This test performs the following task:

1. Loads X100-X227 with a triangle wave where x100 = 0, x101 = 100, x102 =200, ... . The
mid point of the triangle wave is X164 so that X163 = 6300, X164 = 6400, X165, 6300,
X166 = 6200, ... [Lines 14-24]

2. Enable the BDS5 and enable camming [Lines 28-32].

3. Use VOFF to move PCMD through the cam cycle. VOFF is usually used with the
gearbox to add an offset speed. It was designed for use with analog input where a customer
may need to add an offset speed to adjust out error from a D/A converter. Here, we use it to
simplify the test (without VOFF, testing would require a second motor be connected to the
gearbox).

4) Loop control [Lines 35-37, 58-61]

5) Calculate which segment this iteration is in (it repeats from segment 0 to segment 127
every 128 iterations) and store it in X2. [Line 38]

6) Determine PCMD at the end of the segment. [Line 40]

7) Wait until PCMD reaches the boundary. Store the commanded position (PCAM) [Lines
45-53]

8) Calculate error between what the command is (X4) and what is should be (X(X2)).

9) Subroutines to print whether iteration tested good or bad [Lines 63-70].

15
CAM TEST PROGRAM FOR THE BDS5
1 ;CAM TEST ghe 7/16/92
2 ;
3 ;use voff set to keep vcmd moving at a constant speed. Selected that
4 ;speed to be 20 RPM which is about 1365 counts/second. The entire
5 'cam cycle is 32768 counts. Each of the 128 segments is 256 counts.
6 ;So. 20 RPM cycles through the cam cycle at one cycle per 32768/1365
7 ;seconds or 24 seconds. Each of the 128 cycles requires 24/128 or
8 '187 msecs.
9
10 ;1$
11 ;This section loads cam variables with a triangular profile where
12 ;each segment is different from the last by 100 counts
13 ;First, load variables x100-x164
14 ;xi = 100 ;starting variable
15 ;2$ ;loop beginning
16 X(X1) = = (X1-100)*100 ;load the "up side" of the triangle
17 X1 = X1+1 ;increment the loop counter
18 ? x1 1e 164 goto 2 'test loop--keep going until X164
19 ;
20 ;Now, load variables X165-X227 with the "down side" of the counter
21 3$ ;loop beginning
22 X(X1) = X164-(X1-164)*100
23 X1 = X1+1 ;increment the loop counter
24 ? X1 LE 227 GOTO 3;test loop--keep going until X227
25 ;
26 ;Now, it's time to start the CAM
27 4$
28 PLIM OFF ;Standard line to enable
29 GEAR OFF ;Disable GEAR so we can enable CAM
30 EN
31 NORM 0 CAM ;Normalize and enable CAM
32 GEAR ON ;Now, we can enable GEAR
33 VOFF 20 ;Use offset speed of 20 RPM to go through
34 ; cam cycle
35 B ;Break back to Immediate mode

16
BDS5 SERIAL COMMUNICATIONS 1
DOC=BDS5COM1.DOC Rev 3 June 03, 1993

The following chart shows the various ASCII codes and formats that will be used in all examples
in this document.

CONTROL CODE DEFINITIONS


Name Symbol Control Hex Decimal
Bell <bell> ^F 07h 7
Backspace <bs> ^G 08h 8
Line Feed <lf> ^J 0Ah 10
Carriage Return or Enter <cr> ^M 0Dh 13
Escape <esc> ^[ 1Bh 27
Space <sp> -- 20h 32
xx - Number of Spaces <xx-sp> -- 20h 32
Comment Statements {Comments} --- --- ---
Repeating or Additional {.....} --- --- ---
Data

BDS5 EXAMPLE FORMATS


All examples will have the following format:

<Initial Prompt> <Host Command> <BDS5 Echo>


<Response Data>
<...>Final Prompt>

17
The BDS5 is designed to easily interface with a human (via a standard dumb terminal) and is also
designed to interface to a general purpose computer. Part of this design involved the selection of
unique prompts for each of the BDS5's 9 modes. These unique prompts will allow the computer to
determine the BDS5's current mode.

BDS5 NON-MULTIDROP PROMPTS


PROMPT DEFINITION
--> INTERACTIVE MODE
==> MONITOR MODE
s-> SINGLE STEP MODE
t.. TRACE MODE
l-> PROGRAM UPLOAD
e-> INTERNAL EDITOR
i-> EDITOR INPUT
f-> EDITOR FIND
c-> EDITOR CHANGE

Every prompt is preceded by a <cr><lf>.

The BDS5 will print a prompt to the serial port whenever it is ready to receive a character. The
BDS5 will echo each character transmitted to it.

The BDS5 will never print data to the serial port while a prompt or input statement is active. This
means that if an error occurred the BDS5 would hold the error message if a prompt was present or
if an input statement was active.

All error messages respond with the first three characters of "ERR".

The BDS5 can be programmed in the user program to print out data with the "PRINT" statement
and the background (BACKGROUND$) routine can be programmed to print out data on an
asynchronous interval with the "PRINT" statement.

The BDS5 can be programmed to enter an autobaud sequence on power-up or can be programmed
to a fixed baud rate on power-up. By setting "ABAUD=1" the BDS5 will autobaud on power-up.
After autobauding, the variable "BAUD" will contain the current baud rate.

The BDS5 can also be set to automatically power-up at a fixed baud rate. By setting "ABAUD=0"
and "BAUD=9600" the BDSD5 would power-up at 9600 baud.

The BDS5 can be reset to it's default serial conditions (Autobaud) by holding the MOTION input
off during power-up. This allows communications to be reestablished it au incompatible baud rate
was programmed into the BDS5.

18
RS-232 COMMUNICATIONS -- INTERACTIVE MODE
The interactive mode is the normal state the BDS5 will be in when it is not running a program.
The following are typical BDS5 response sequences.

The BDS5 will respond to a <cr> with a "<cr><lf>-->" character string while in the interactive
mode. The interactive prompt (-->) indicated that the BDS5 is ready for the next command.

-->"<cr>" "<cr><lf>"
"-->"

The BDS5 generates the same response with the <esc> character as it does with the <cr> (see
above) while in the interactive mode.

-->"<esc>" "<cr><lf>"
"-->"

The Jog command or any typical BDS5 command will generate the following response:

-->"J 1000<cr>" "J 1000<cr><lf>"


"-->"

The Print command can be used to print the contents of any BDS5 variable. Remember that
variables print right justified so up to 11 Spaces could precede the value to be printed.

-->"P SEG<cr>" "P SEG<cr><lf>"


"<11-sp>0<cr><lf>"
"-->"

The BDS5 Print command can specify a format to use for printing the variable. The only
restriction is that if the format is too small "X"s will be printed.

-->"P SEG[1]<cr>" "P SEG[1]<cr><lf>"


"0<cr><lf>"
"-->"

{ASSUME PFB=1024}
-->"P PFB<cr>" "P PFB<cr><lf>"
"<8-SP>1024<cr><lf>"
"-->"

19
-->"P PFB[3]<cr>" "P PFB[3]<cr><lf>"
"XXX<cr><lf>"
"-->"

-->"P PFB[4]<cr>" "P PFB[4]<cr><lf>"


"1024<cr><lf>"
"-->"

Any programmable variable (user and dedicated can be programmed with a value by using the
BDS5 equate function.

X1 1000" "X1=1000<cr><lf>"
"-->"

The BDS5 equate function will work with either an Equal Sign (=) or a Space.

X1 1000" "X1 1000<cr><lf>"


"-->"

The Run command can be used to enable the BDS5 multitasking by typing "RUN". Notice that
once the BDS5 has started running that the prompt does not return.

-->"RUN<cr>" "RUN<cr><lf>"

The RUN command can also start a specific program label.

-->"RUN<cr>" "RUN<cr><lf>"

If an error occurs it will not print out if a prompt is present until a <cr> is received.

-->"<cr>" "<cr><lf>"
"<bell>ERR 17 FEEDBACK LOSS<cr><lf>"
"-->"

20
If the host was sending a command to the BDS5 and an error occurred before the command was
finished the BDS5 will ignore the command and respond with the following sequence.

-->"<cr>" "<cr><lf>"
"-->"

{NOW AN ERROR OCCURS}

{TYPE IN A COMMAND AND A <cr>}


-->"P PFB<cr>" "<cr><lf>"
"ERROR MSG WAITING--COMMAND IGNORED<cr><lf>"
"<cr><lf>"
"<lf>"
"<bell>ERR 17 FEEDBACK LOS<cr><lf>"
"-->"

After an error with a severity level high enough to disable the drive the fault light will turn on. to
clear this light simply re-enable the BDS5 with the Enable command. The Enable command takes
a few seconds to complete and returns a prompt.

-->"EN" "EN<cr><lf>
<...time delay...>
"-->"

21
RS-232 COMMUNICATIONS -- RUNNING A PROGRAM
If a program is running -- then an ESCAPE character must be sent to get the attention of the BDS5.
The monitor mode will be active on getting the attention of the BDS5. A second ESCAPE will
drop the BDS5's attention and exit the monitor mode. The monitor mode will accept a sub-set of
the BDS5 commands. This subset includes:

? ; B DIS EN ERR K
MOTOR P PS R RS S ZPE

To enter the monitor mode while running a program send an <esc> character.

"<esc>" "<cr><lf>"
"ENTER MONITOR MODE. PUSH ESCAPE TO EXIT <cr><lf>"
"==>"

If the response is as follows then the <esc> has caused the BDS5 to exit the monitor mode. If this
is the case then send another <esc> to reenter the monitor mode.

"<esc>" "<cr><lf>"
"ENTER MONITOR MODE.

A single <cr> will return the following response. If there is no response then the monitor mode is
not active and an <esc> should be sent tot he BDS5 to enter the monitor mode.

"<cr>" "<cr><lf>"
"==>"

A Stop command will stop motion at AMAX and break the program. The interactive prompt will
be returned indicating that the BDS5 has stopped running the program.

==>"S" "S<cr><lf>"
"-->"

A Break command will stop at AMAX and break the program. The interactive prompt will be
returned indicating that the BDS5 has stopped running the program.

==>"B" "B<cr><lf>"
"-->"

22
A Kill command will disable the motor and break the program. The interactive prompt will be
returned indicating that the BDS5 has stopped running the program.

==>"K" "K<cr><lf>"
"-->"

Sending a command not allowed in the monitor mode will return the following response.

==>"J 1000 <cr> "J 1000<cr><lf>"


"<cr><lf>"
"<lf>"
"<bell>ERR 63 'J 1000'<22-sp>NOT AT THIS LEVEL<cr><lf>"
"==>"

==>"P SEG[1]"<cr> "P SEG[1]<cr><lf>"


"0<cr><lf>"
"==>"

{ASSUME PFB=1024}
==>"P PFB<cr>" "P PFB<cr><lf>"
"<8-sp>1024<cr><lf>"
"==>"

==>"P PFB[4]<cr>" "P PFB[4]<cr><lf>"


"1024<cr><lf>"
"==>"

==>"P PFB[5]" "P PFB[5]<cr><lf>"


"<sp>1024<cr><lf>"
"==>"

==>"P PFB[3]" "P PFB[3]<cr><lf>"


"XXX<cr><lf>"
"==>"

{THE XXX MEANS THAT PFB WAS TOO BIG TO FIT INTO 3 SPACES}

==>"X1=1000" "X1=1000<cr><lf>"
==>

{THIS SETS VARIABLE X1 TO 1000}

==>"X1.1000" "X1.1000<cr><lf>"
==>

{THIS SETS VARIABLE X1 TO 1000}

23
==>"RUN<cr>" "RUN<cr><lf>"
"<cr><lf>"
"<lf>"
"<bell>ERR 63 'RUN'<28-sp>NOT AT THIS LEVEL<cr><lf>"
"==>"
{THE RUN COMMAND IS NOT ALLOWED IN THE MONITOR MODE}

A ^X will act like a "S"top and a "B"reak command. The BDS5 will respond to this command
while in the monitor mode, while in the interactive mode, or while running program.

==>"RUN 6" "RUN 6<cr><lf>"


{NOW A PROGRAM IS RUNNING AND NO PROMPT IS PRESENT}

{NOW AN ERROR OCCURS}


"<cr><lf>"
"<lf>"
"<bell>ERR 17 FEEDBACK LOSS<cr><lf>"
"-->"

==>"RUN 6" "RUN 6<cr><lf>"


{NOW A PROGRAM IS RUNNING AND NO PROMPT IS PRESENT}

{TYPE AN ESCAPE TO ENTER MONITOR MODE}


"<esc>" "<cr><lf>"
"<lf>"
"ENTER MONITOR MODE. PUSH ESCAPE TO EXIT<cr><lf>"
"==>"

{NOW AN ERROR OCCURS BUT A PROMPT IS PRESENT SO}

{ THE ERROR WILL NOT PRINT OUT}


{TYPE A <cr>}
==>"cr>" "<cr><lf>"
"<lf>"
"<bell>ERR 17 FEEDBACK LOSS<cr><lf>"
"-->"

24
==>"RUN 6" "RUN 6<cr><lf>"
{NOW A PROGRAM IS RUNNING AND NO PROMPT IS PRESENT}

{TYPE AN ESCAPE TO ENTER MONITOR MODE}


"<esc>" "<cr><lf>"
"<lf>"
"ENTER MONITOR MODE. PUSH ESCAPE TO EXIT<cr><lf>"
"==>"

{NOW AN ERROR OCCURS BUT A PROMPT IS PRESENT}


{SO THE ERROR WILL NOT PRINT OUT}

{TYPE IN A COMMAND AND A <cr>}


==>"P PFB<cr>" "<cr><lf>"
"ERROR MSG WAITING--COMMAND IGNORED<cr><lf>"
"<cr><lf>"
"<lf>"
"<bell>ERR 17 FEEDBACK LOSS<cr><lf>"
"-->"

25
UPLOADING & DOWNLOADING PROGRAMS
The BDS5 has two commands to allow the up-loading and down-loading of the BDS5 program
memory.

"<BDS" will print to the serial port each line of the program memory. Each program line is
terminated with a <cr><lf>. This command terminates with a "<cr><lf>-->" prompt.

-->"<BDS<cr>" "<BDS<cr><lf>"
"<Program Line #1><cr><lf>
"....."
"<Last Program Line #><cr><lf>"
"-->"

">BDS" will place the BDS5 into the program upload mode. On getting the first <cr> terminated
line the program memory will be erased. Each <cr> terminated line will respond with a
"<cr><lf>|->" prompt. Sending an <esc> tot he BDS5 will end the program upload mode. Upon
completing a program upload the host may request a special BDS5 checksum of the data stored in
memory. After receiving this special checksum the host may in future uploads use this value to
verify the BDS5 program has been uploaded error free.

-->">BDS<cr>" "BDS<cr><lf>"
"l->"
{THE l-> PROMPT INDICATES THE BDS5 IS READY TO RECEIVE A PROGRAM}

|->"<your first program line><cr>" "<your first program line><cr><lf>"


|->"<.....>" "<.....>"
|->"<your last program line><cr>" "<your last program line><cr><lf>"
|->"<esc>" "<cr><lf>"
"-->"

Recalculation of this checksum by the host is not possible because this is a special word checksum
of the BDS5's internal program memory with a varying offset. As stated earlier the most efficient
method of exploiting this checksum is to upload the BDS5 program, print out the checksum
variable, and then use that value for comparison of future uploads.

-->"P CHECKSUM<cr>" "P CHECKSUM<cr><lf>"


"<7-sp>65280<cr><lf>"
"-->"
{YOU CAN ALSO PRINT THE CHECKSUM IN HEX}

-->"P CHECKSUM[H]<cr>" "P CHECKSUM[H]<cr><lf>"


"<4-sp>FF00H<cr><lf>"
"-->"

26
UPLOADING & DOWNLOADING SYSTEM VARIABLES
The BDS5 can print to the serial port two groups of internal variables. The first group is all of the
variables. The second group is a subset consisting of compensation specific variables.

"DUMP" will print to the serial port all variables from the BDS5.

"DUMP TL" will print to the serial port the compensation specific variables from the BDS5.

To upload non-factory variables to the BDS5 simply transmit each variable followed by a Space or
Equal Sign followed by the numerical value and terminated by a <cr>. Do not transmit the next
variable line until a prompt has been received. The prompt indicates that the BDS5 is ready to
receive the next variable or command.

-->"BAUD 9600<cr>" "BAUD 9600<cr><lf>"


"-->"

-->"ABAUD=1<cr>" "ABAUD=1<cr><lf>"
"-->"

-->"X1=111234<cr>" "X1=111234<cr><lf>"
"-->"

Not all BDS5 variables are programmable and some variables are programmable at the factory
only. The factory protected variables contain motor specific information.

27
MULTIDROP COMMUNICATIONS
Multidrop communications will allow you to have up to 32 axes on serial communications line.
Each axis must have an unique address. The valid addresses are "0"-"9" and "A"-"Z". The Axis
Attention Character is a Backslash "\". The Backslash when followed by a valid Axis ID will wake
up the addressed axis. "\*" is a special Axis Broadcast All command that will wake-up all the axes
to respond to any transmitter command but no axis may transmit. The BDS5 prompts are slightly
different from the standard RS-232 prompts. The Multidrop prompts always print the Axis ID as
their first character. The normal first character is then slid over to the second position in the
prompt. The prompt terminates with a ">".

BDS5 MULTIDROP PROMPTS


ASSUME: ADDR=65 AXIS I.D.=”A”
PROMPT DEFINITION
A-> INTERACTIVE MODE
A=> MONITOR MODE
As> SINGLE STEP MODE
At. TRACE MODE
Al> PROGRAM UPLOAD
Ae> INTERNAL EDITOR
Ai> EDITOR INPUT
Af> EDITOR FIND
Ac> EDITOR CHANGE

All handshaking will be identical to the above examples except the prompts will change as shown
in the above chart.

{WAKE UP AN AXIS "A" (ADDR=65)}

"\A<cr>" "<cr><lf>"
"A->"

28
BDS5 SERIAL COMMUNICATIONS 2
DOC=BDS5COM2.DOC Rev 4 July 13, 1993

• The serial protocol is simple ASCII with full duplex echo.


1. The simple ASCII protocol was chosen to allow easy communications with any ASCII
device. I.e. dump terminals, hand held terminals, panel mounted terminals, IBM
compatibles running terminal emulation software, etc.
2. With full duplex echo, the BDS5 will transmit each character received back to the host
device. This allows the host to verify each character was correctly sent.

• The BDS5 will transmit a unique prompt when it is ready to receive commands. The
interactive prompt will be "-->". If a prompt is not present, then the BDS5 is not listening to
the serial port.

BDS5 PROMPTS
MODE NON-MULTIDROP MULTIDROP
(ADDR=0) (ADDR=65)
INTERACTIVE --> A->
MONITOR ==> A=>
SINGLE-STEP s-> As>
TRACE t.. At.
EDIT e-> Ae>
LOAD 1-> A1>
EDIT/INSERT i-> Ai>
EDIT/FIND f-> Af>
EDIT/CHANGE c-> Ac>

• The following control codes will be used throughout this discussion:

CONTROL CODE DEFINITIONS


NAME SYMBOL CONTROL HEX DECIMAL
Acknowledge <ack> ^F 06h 6
Bell <bell> ^G 07H 7
Backspace <bs> ^H 08h 8
Linefeed <lf> ^J 0Ah 10
Carriage Return or Enter <cr> ^M 0Dh 13
Not Acknowledge <nak> ^U 15h 21
Escape <esc> ^[ 1Bh 27
Space <sp> -- 20h 32

29
Some of the more important serial commands that have been available in all versions of software
are in the following table:

BDS5 SERIAL COMMANDS


(Firmware version 2.0 and later)
PROMPT 0|1 Used to suppress the printing of the three character prompt to
the serial port. PROMPT is remembered on Power-up.
<variable>=<expr> Used to equate any system variable to any valid math
expression. Valid math expressions include user variables,
indirect references to user variables, constants, algebraic and
logical math operators, parentheses. Parentheses can be
nested up to two levels deep. Spaces are not allowed in
expressions.
P <expr>{[<format>]} | “<text>” {...} Print command - Used to print strings and variables specified
with the optional format terminated by a <cr><lf> sequence.
Also see the “R”, “RS”, “PA”, and “PAS” print commands.
PS <expr>{[<format>]} | “<text>” {...} Print Status command - Used to print strings and variables
specified with the optional format terminated by the drive
status and a <cr><lf> sequence.
R <expr>{[<format>]} | “<text>” {...} Refresh command - Used to print strings and variables
specified with the optional format terminated by a <cr>. This
command identical to the P command except there is only a
terminating <cr>. Also see the “R”, “PS”, “PA”, and “PAS”
print commands.
RS <expr>{[<format>]} | “<text>” {...} Refresh Status - Used to print strings and variables specified
with the optional format terminated by the drive status and a
<cr>.

30
BDS5 COMMUNICATIONS
The BDS5 will communicate over an RS-232 serial bus with simple ASCII commands.

• Each ASCII character transmitted to the BDS5 will be echoed back to the host. This echo will
allow a simple character by character verification that the data was properly received.

• Each ASCII command string will be terminated by an ASCII carriage return (<cr>).

• Upon receiving the <cr> the BDS5 will acknowledge the command by transmitting a
"<cr><lf>" followed by a system prompt ("-->"). The prompt is used to indicate what mode is
currently active in the BDS5 and that the BDS5 is ready to receive another command.

SERIAL COMMAND EXAMPLES:


“ILIM=50<cr>” This would set the current limit to 50%.
”OUT=1FH<cr>” This would set the 8 user programmable outputs to 1F hex.
”EN<cr>” This would enable the BDS5.
”DIS<cr>” This would disable the BDS5.
”J 1000<cr>” This would Jog an enabled axis at 1000 using the acceleration and
deceleration rates programmed into ACC and DEC.
”P PFB<cr>” This would print the feedback position to the serial port.
”P PFB[4]<cr>” This would print the feedback position formatted to 4 places to the serial
port, terminated by a <cr><lf>.
”R PFB[H]<cr>” This would print the feedback position in hex format to the serial port
terminated by a <cr>.
”R PFB[H5}<cr>” This would print the feedback position in 5 places using hex format to the
serial port terminated by a <cr>.
”PA” PFB<cr>” This would print the feedback position to the serial port terminated by no
characters.

31
Additionally, for more communications capabilities, the following commands have been added to
firmware version 3.0.0:

NEW BDS5 SERIAL COMMANDS


(Firmware Version 3.0.0 and Later)
MONITOR 0|1 This will automatically force entry into the Monitor mode at
the start of running a program.
MONITOR is set to 0 on Power-up.
ECHO 0|1 Used to suppress the echo of serial port characters.
ECHO is remembered on Power-up.
MSG 0|1 Used to suppress the serial Power-up message and the
Monitor mode message.
MSG is remembered on Power-up.
PA <expr>{[<format>]} | “<text>” {...} Print Append command - Used to print strings and variables
specified with the optional format. This command identical
to the P command except there is no terminating <cr><lf>
sequence. Also see the “P”, “PS”, “R”, and “RS” print
commands.
PAS <expr>{[<format>]} | “<text>” {...} Print Append Status command - Used to print strings and
variables specified with the optional format terminated by the
drive status. This command is identical to the PS command
except there is no terminating <cr<lf> sequence.

Note, the BDS5 now has a full set of Print commands. These commands are P, PS, R, RS, PA, and
PAS. The only differences being the P and PS commands terminate the output string with a
<cr><lf>, the R and RS commands terminate the output string with just a <cr>, and the PA and
PAS commands do not terminate the output string at all.

The Monitor mode switch will cause the BDS5 to automatically enter the Monitor mode upon the
execution of a BDS5 program. This will in essence cause the BDS5 to always have the serial port
active and waiting for a command. Previously BDS5 required an <esc> character to be received in
order to activate the serial port while a user program was running.

32
APPENDIX A -- SERIAL PORT

STANDARD: RS-232 & RS-485 SERIAL


CONNECTOR: C1 - 9 PIN DB-9
SIGNALS (4): SHIELD, RECEIVE, TRANSMIT, COMMON
MODES: 8 BIT ASCII, NO PARITY

BDS5 SERIAL
CONNECTOR
PIN NAME
1 SHIELD
2 REC
3 XMIT
4 N/C
5 COMMON
6 TD+
7 TD-
8 RD+
9 RD-

• The BDS5 has one RS-232 serial DB-9 male connector.

• The communications format will be 8-bit ASCII with 1 start bit, 1 stop bit and no parity bit.

• The communications data rate will be from 300 to 19,200 baud (bits-per-second). This rate is
programmed in the variable "BAUD".

• This BDS5 can autobaud to determine the communication rate when the flag "AUTOBAUD"
is enabled. Autobauding is performed by the BDS5 receiving a series of <cr>.

• The serial connector is optionally configurable to RS-485. RS-485 is enabled with the
addition of RS-485 receiver/driver chips and setting a valid multi-drop address in the variable
"ADDR".

BDS5 MULTI-DROP
PROTOCOL
\<address> Multidrop Axis Address
Valid addresses are 0-9
and A-Z.
\\ Multidrop Hang-up Axis
\* Multidrop Broadcast All

33
FIRMWARE UPGRADE NOTICE 3.02b
FEBRUARY 02, 1994

The Engineering department is releasing new beta level proms that fix some operational
problems with error recovery. These proms are replacements for the current factory default
prom version 3.0.1. The new prom is labeled 3.02b. The "b" indicates this prom is still in
beta release until the BDS5 firmware qualification tests are finished. This prom has passed
our initial qualification tests. This prom is being released early in an attempt to help our
customers. Please immediately forward any feedback from testing this prom to our field
service group, your success is very important to us.

The following changes have been made to the firmware:


• The user flag "MSG", when cut off, will suppress any printing of error messages. (This is
in addition to its suppressing the power-up message, the running program message, and
the Entering and Exiting Monitor mode message.)
• The Monitor mode will now be properly canceled by any error that is not directly caused
by the Monitor mode. This fixes the problem with the error handler hanging until control
of the serial port is returned from the Monitor mode, thus allowing the error message to
print to the serial port. Now the printing will be allowed and the error handler, as a final
step can pass execution to the ERROR$ label. This modification also prevents a print
command from within the ERROR$ from hanging the error handler.
NOTE: Since an error will cancel the Monitor mode, multiple errors in fast succession could
cause problems with entering the Monitor mode in order to stop the user program with a
Break ("B") or Kill ("K") command. The method to stop program execution in this case is
to issue a "^X" (18h) command. This should break the user program reliably.

• The error handler has been enhanced to allow execution of ERROR$ to completion even
in the event of additional errors. Before this the BDS5 was designed to automatically
break program execution on the second error.
• We also found that a Software watchdog error could be triggered if an error occurred
during the execution of the firmware code that sets up a Jog command. This has been
fixed.

Additional Note: The Beta version of the firmware is dedicating user register X100 and
X101 to capture diagnostic information during any error. Please avoid using this
register if possible.

1
Error Handler (ERROR$)
When a serious error occurs, the BDS5 breaks execution of your program and checks your
program to see if you entered ERROR$. If you did, the error handler (that is, the routine that
follows the ERROR$) is executed. All multi-tasking is suspended, including alarms, when the
error handler is being executed. See Chapter 10 for more information on the user's error
handler.

Errors can also cause the BDS5 to change modes. Some errors are serious enough to
cause the BDS5 to break program execution. Usually, this has the identical effect of issuing
a Break (B) command. As an option, you can write an error handling routine beginning at
label ERROR$.

This routine should be short and should end with a Break (B) command. ERROR$ is
provided as a graceful end to program execution and not as a means of automatically
restarting the program. The program can be restarted using the AUTO$ and the CYCLE
input. For example, you can set outputs or print a message. It is not intended to continue
the program as if the error never occurred.

ERRORS
The BDS5 responds to a variety of conditions, both internal and external, hardware and
software, which are grouped in a single broad category: errors. An error indicates that there
is a problem somewhere. More serious errors are grouped as faults.

The BDS5's response to an error depends on the error's severity. There are four levels of
severity, listed below in increasing order:

ERROR SEVERITY LEVELS AND ACTIONS


1. Errors which cause warnings.
2. Errors which cause a program break and stop motion, in addition to Level 1
Actions.
3. Errors which disable the system and set the FAULT LED, in addition to Level 2
Actions.
4. Errors which disable almost all BDS5 functions (including communications) and
flash the CPU LED to indicate the error number. These are called firmware
errors.

2
ERROR MESSAGES
When any error except a firmware error occurs, a message is displayed to the screen. The
following items are printed: the error number, the offending entry, and an abbreviated error
message. For example, disable the drive and type in a jog:

DIS
J 100

The BDS5 will respond with:

ERR 50 'J 100' BDS5 INHIBITED

The error number (50), the offending entry (the whole line), and the error message (you
cannot command a jog when the drive is inhibited) are given on one 80-character line. The
error message starts at character 40 so that if a 40-character display is used, the error
message will not be printed. You can display the line directly, either with the Motion Link
editor (GOTO A LINE NUMBER selection or ^Q^I), or with the BDS5 Editor (P command).
Sometimes only an entry is bad and not the whole line. In this case only the bad entry is
printed. For example,

PROP 2

generates:

ERR 83 '2' ;BAD OR OUT OF RANGE

since PROP is a switch and cannot be set to 2. If the error comes from the program, the line
number of the offending entry is also printed. Use the Editor to enter these lines at the top of
the user program:

11$
PROP 2
B

exit the Editor and type:

RUN 11

and the response should be:

ERR 83 LINE 2 '2' ;BAD OR OUT OF RANGE

This message shows that the error occurred on line 2. You can enter the Editor and type:

P 2

and the line:


3
PROP 2

will be displayed.

DEP01
If your BDS5 prints to a Data Entry Panel (DEP-01) or any other 40 character wide display,
the standard error messages will not print properly. The problem is that error messages are
based on an 80 character wide display and the DEP-01 is only 40 characters wide. To
correct this problem, the BDS5 provides the DEP switch, which, when turned on, cuts all
error messages down to 40 characters. If your BDS5 prints to a DEP-01, type "DEP ON"

ERROR HISTORY
The BDS5 stores the twenty most recent errors in the Error History. To display
the entire Error History, type:

ERR HIST

This causes the Error History to be sent to the terminal, with the most recent error sent first.
When the BDS5 is powered up, a "DRIVE POWERED UP" message is inserted into Error
History even though this is not an actual error.

To clear the Error History, type:

ERR CLR

Error History remains intact even through power-down.

DISPLAYING ERROR MESSAGES


The ERR command can also be used to display an abbreviated description of the error. For
example, type:

ERR 50

The BDS5 responds with:

ERR 50 BDS5 INHIBITED

You may display messages for errors from 1 through 999. If you type in an error number that
the BDS5 does not recognize, it will respond with:

ERROR NOT FOUND.


A description of all errors is given in the BDS5 manual in Appendix D.

4
THE USER'S ERROR HANDLER
When an error occurs, the BDS5 decides what needs to be done: disable the drive, print out
a message, and so on. This is called an error handler. Often, an application may require
that other actions be taken. A common example is setting the Output (O) word to turn off
some auxiliary machine such as a pump. These actions, which are very specific to the
application, must be handled in the user's program. In effect, you can write an error handler
for your application.

The User's Error Handler begins at the special label, ERROR$. Any error that breaks
execution of your main program will restart execution from ERROR$, if it exists. The error
handler provides instructions that need to be executed if an error interrupts your program.
Examples of error handler instructions include setting outputs, printing messages, and storing
information in user variables.

There are several restrictions that apply to the error handler; for example, GOTO, GOSUB,
and RET are not allowed. Normally, ERROR$ should be at the end of your program.
ERROR$ cannot be followed by POWER-UP$, AUTO$, MANUAL$, or any general purpose
labels (0$ through 500$).

Software travel limits are automatically enabled on power-up. If you use these limits, you
may have short sections of your program that disable them briefly. If an error occurs in one
of those sections, software limits will remain disabled until you enable them or until the next
power-up. For this reason, you should always enable travel limits from the User's Error
Handler if they are disabled from any section of your program.

WARNING
BE SURE TO TURN PLIM ON FOR THE FOLLOWING CONDITIONS!

USE ERROR$ TO TURN PLIM ON FOR THE FOLLOWING CONDITIONS:

1) your application relies on Software Travel Limits.

2) your program disables Software Travel Limits at any point, even briefly.

ERROR$ is provided as a graceful end to program execution and not as a means of


automatically restarting the program. The program can be restarted using the AUTO$ and
the CYCLE input.

5
Use the Editor to enter the following example program:

12$
JUNK ;this line generates an error
B
ERROR$
P "RUNNING SIMPLE ERROR HANDLER"
OUT 0 ;turn outputs off
B

Now exit the Editor and type:

RUN 12

and the response should be:

ERR 80 LINE 2 'JUNK' INVALID COMMAND


RUNNING SIMPLE ERROR HANDLER

LSTLBL
The BDS5 stores the last label that is executed in the variable LSTLBL. You may need to
know the last label that was executed to determine where the program terminated. Labels
are stored in LSTLBL as follows:

Last label executed Value Stored in LSTLBL


0$-500$ 0-500
A$ 501
B$ 502
C$ 503
VARIABLE$ 504
BACKGROUND$ 505
CYCLE$ 506
ERROR$ not stored
MANUAL$ 508
POWER-UP$ 509

6
LSTERR
The variable LSTERR contains the error number of the most recent error. LSTERR is
especially useful in the User's Error Handler (the lines that follow ERROR$). It allows your
error handler to take special action based on a particular error number. For example, the
error handler from above can be expanded to include LSTERR:

12$
JUNK ;this line generates an error
B
ERROR$
P "SIMPLE ERROR HANDLER"
OUT 0 ;turn outputs off
? LSTERR EQ 28 P "THIS IS AN INVALID COMMAND"
B

Now exit the Editor and type:

RUN 12

and the response should be:

ERR 28 LINE 2 'JUNK' INVALID COMMAND


SIMPLE ERROR HANDLER
THIS IS AN INVALID COMMAND

PFNL and Errors


If an error occurs that breaks your user program, you can use PFNL to tell you the last
commanded position. This can be used to tell you where your program stopped. For
example:

NORM 0
;if ERROR OCCURS here, PFNL = 0

MA 1000 100
;if ERROR OCCURS here, PFNL = 1000

MA 2000 1000
;if ERROR OCCURS here, PFNL = 2000, even if the first
;move is still in progress.

You can use PFNL to tell which moves were calculated before the error occurred. You can
use PFB to tell which moves were actually processed.

7
FIRMWARE ERRORS
Firmware errors are an indication of a serious problem with the BDS5. These errors stop
communications, disable the drive, and flash the CPU LED. The CPU LED flashes several
times, then turns off and pauses. The number of flashes represents the error number.
These error numbers range from 2 to 5. Contact the factory should one of these errors
occur.

8
PROGRAM CYCLE AND ERROR PROGRAM CYCLE AND ERROR
RECOVERY USING AN ALARM WITH RECOVERY USING AUTO$ WITH THE
INPUT #1 CYCLE INPUT
1$ ;same as power-up$ 1$ ;same as power-up$
POWER-UP$ ;powerup auto start label POWER-UP$ ;powerup auto start label
PLIM OFF ;turn off software limits PLIM OFF ;turn off software limits
EN ;enable motor EN ;enable motor
END ;return to multi-tasking END ;return to multi-tasking
; ;
A$ I1 ON ;when input #1 = 1 AUTO$ ;MANUAL=0, CYCLE=1
MI 40960 100 ;move incremental MI 40960 100 ;move incremental
TIL PFB EQ PCMD ;wait for motion to stop TIL PFB EQ PCMD ;wait for motion to
stop
END ;return to multi-tasking END ;return to multi-tasking
; ;
ERROR$ ;error recovery ERROR$ ;error recovery
O1 ON ;turn O1 on O1 ON ;turn O1 on
D 5000 ;wait for 5 seconds to let D 5000 ;wait for 5 seconds to let
;OK2EN settle ;OK2EN settle
TIL OK2EN EQ 1 ;wait for OK to Enable TIL OK2EN EQ 1 ;wait for OK to Enable
O1 OFF ;turn O1 off O1 OFF ;turn O1 off
EN ;enable motor EN ;enable motor
END ;return to multi-tasking END ;return to multi-tasking

PROGRAM CYCLE AND ERROR PROGRAM CYCLE AND ERROR


RECOVERY USING MANUAL$ WITH THE RECOVERY USING RUN WITH INPUT #1
MANUAL INPUT
1$ 1$
POWER-UP$ ;powerup auto start label POWER-UP$ ;powerup auto start label
PLIM OFF ;turn off software limits PLIM OFF ;turn off software limits
EN ;enable motor EN ;enable motor
END ;return to multi-tasking ;
; 2$
MANUAL$ ;when MANUAL = ON ? I1 EQ OFF GOTO 2 ;if I1=0 then loop
MI 40960 100 ;move incremental MI 40960 100 ;move incremental
TIL PFB EQ PCMD ;wait for motion to stop TIL PFB EQ PCMD ;wait for motion to
stop
END ;return to multi-tasking GOTO 2 ;loop to label 2$
; ;
ERROR$ ;error recovery ERROR$ ;error recovery
O1 ON ;turn O1 on O1 ON ;turn O1 on
D 5000 ;wait for 5 seconds to let D 5000 ;wait for 5 seconds to let
;OK2EN settle ;OK2EN settle
TIL OK2EN EQ 1 ;wait for OK to Enable TIL OK2EN EQ 1 ;wait for OK to Enable
O1 OFF ;turn O1 off O1 OFF ;turn O1 off
EN ;enable motor RUN 1 ;force program restart at
END ;return to multi-tasking ;label 1$

9
BDS5 FIRMWARE UPGRADE NOTICE
DOC=BDS5-304.DOC.R5 / FIRM-UP.DOC June 17, 1994

VERSION 3.0.4

UPGRADES
When upgrading older systems (pre version 3.0.0) with 3.0.4. Be sure to initialize the three new
non-volatile flags for proper operation:
1. ECHO=1
2. MSG=1
3. EXTDX=0

CHANGES (from 3.0.3)

• Enhanced the CLEARX command to allow separate clearing of all User Registers or User
Flags or both.

Syntax: CLEARX {1|2}

Example: CLEARX - Clear both User Registers and User Flags


CLEARX 1 - Clear only the User Registers
CLEARX 2 - Clear only the User Flags

• Enhanced the Break (B) command to allow separate the optional breakink of a user INPUT
command:

Syntax: B {I}

Example: B - Break the user program


B I - Break a user INPUT command (if active).

The “B I” command was designed to allow the user to break any active Input command because
Printing from all tasks are suppressed until completion of the Input command. Aditionally, any
Print while the Input command is active will HOLD the task at the Print command until the Input
has finished. This means that if, for example, a user needed to Print a message to the machine
operator during an Alarm condition, this would not work if an Input command was active. Now,
with the “B I” command, the user can imbed the “B I” command in the program prior to any critical
Print messages and thus cancel any active Input command.

1
BDS5 Firmware Upgrade Notice
DOC=BDS5-304.DOC.R5 / FIRM-UP.DOC June 17, 1994

Break Input Example


1$ ;Main loop
O1 1 Output #1 On
D 500 Delay .5 sec
O1 0 Output #1 Off
D 500 Delay .5 sec
GOTO 1 Loop to 1$

A$ I1 ON Alarm on Input #1 On
O2 1 Output #2 Off
BI Break any active active INPUT cmnd
P “AN ALARM HAPPENED” Print an Alarm message
D 1000 Delay 1 sec
O2 0 Output #2 Off
END End Alarm task

VARIABLE$ Variable Input label triggered by ^V


Input “?” X1 Input to X1
END End Variable Input task

• Fixed LSTERR to work even if MSG=0. Note: LSTERR will return the last error the BDS5
encountered since an Enable (EN) command.
• Fixed another factory initialization problem that would cause a software watchdog trip on
entry to the User Program Editor due to the user program being uninitialized in a new
BATRAM chip.
• Enhanced the Error Recovery Task to cancel the user INPUT command if it is active when a
system error occurs. This prevents the Error Handler from holding further program execution
after an error due to the INPUT command having control of the serial port. Normally, the
Error Handler first needs to print an error message to the serial port and then pass execution to
the ERROR$ user program label if it exists.
• Enhanced the Error Recovery Task to cancel a Task Idling command such as “H” and thus
allow the ERROR$ task to properly execute if it exists.

2
BDS5 FIRMWARE UPGRADE NOTICE
DOC=B5FU305.DOC.R8 / FIRM-UP.DOC JANUARY 27, 1995

VERSION 3.0.5

UPGRADES
When upgrading older systems (pre version 3.0.0) with 3.0.5. Be sure to initialize the three new
non-volatile flags for proper operation:
1. ECHO=1
2. MSG=1
3. EXTDX=0

CHANGES (from 3.0.4)

• Added MONITOR=Off support from the user program


The user can now turn on and off the MONITOR mode under user program control.
• Fixed a problem with EXTLOOP.
A problem was found where the position error was being calculated when the drive was
disabled. This could cause a PE OVERFLOW error if |PEXT-PCMD|>PEMAX. The
position error is now only calculated if the drive is enabled.
• Added PCMD=PEXT when EXTLOOP=1 and drive disabled.
External Position loop mode was enhanced where when the drive is disabled, the
variable PCMD is set equal to PEXT. This prevents a possible PE OVERFLOW error
when enabling the drive without first executing a NORM command (The NORM
command sets PCMD=PEXT when EXTLOOP=1 and it sets PCMD=PFB when
EXTLOOP=0).
• Fixed front panel LED initialization on power-up.
The FAULT LED and ACTIVE LED were being briefly set to the wrong state on
power-up. This was corrected.
• Fixed -- A Syntax error in ERROR$ would cause re-execution of ERROR$ (infinite loop).
Now the BDS5 will break the user program on any syntax error in ERROR$.
• Fixed -- An invalid command (nonexistent) would execute ERROR$ if it existed.
Now the BDS5 will not allow any program execution until the invalid command has
been removed.
• Fixed -- An error occurring while in Monitor mode will print the error message and then
return to Monitor mode. Any printing from the ERROR$ routine will be
suppressed. Syntax error in ERROR$ would cause re-execution of ERROR$
(infinite loop).

BDS5 TIMING TESTS

1
Time (msec) Time (msec)
INSTRUCTION Ver 2.0.5 Ver 3.0.5
O1 ON 1.90 1.90
O1 OFF 1.90 1.89
OUT=OUT!0C8h 2.86 2.84
? 1 EQ 1 O1 ON 3.99 3.97
X1=X2 1.72 1.99
X1=X2+1 2.18 2.45
X1=X2-1 2.17 2.45
X1=X2*100 2.33
X1=X2/100 2.36 2.63
ZPE 1.20 1.69
NORM 0 2.00 2.69
O1 ON 2.07 2.03
(GEAR ON)
X1=X2+1 2.37 2.62
(GEAR ON)

* (VDEFAULT 1000) **(Profile calculation time only)


Note : The drive is Enabled (EN) for all timing tests
ACC=DEC=100,000 & SCRV=2

Time ** (msec) Time ** (msec)


INSTRUCTION Ver 2.0.5 Ver 3.0.5
MI 40960 1000 6.00 6.15
MI 40960 1000 6.80 7.02
(GEAR ON)
MI 40960 1000 7.00 8.70
(GEAR ON & In Motion)
MI 40960 1000 6.20 6.41
(REG ON)
MI 40960 1000 7.00 8.26
MI 40960 * 5.00 5.24
MI 40960 * 5.80 5.97
(GEAR ON)
MI 40960 * 5.10 5.39
(REG ON)

* (VDEFAULT 1000) **(Profile calculation time only)


Note : The drive is Enabled (EN) for all timing tests
ACC=DEC=100,000 & SCRV=2

2
Time (msec) Time (msec)
INSTRUCTION Ver 2.0.5 Ver 3.0.5
GOSUB 10 &10$ 1.60 1.37
GOTO 10 & 10$ 1.60 1.58
JT 40960 1000 ** 5.80 5.77
JF 40960 1000 ** 5.80 5.77
MA 40960 1000 ** 5.50 5.16
MA 40960 * ** 5.00 4.16
MCI 1000 1000 200 ** 11.00 11.12
MCI 1000 0
MCGO
MRD 1000 100 CW ** 3.50 3.17
NORM 0 2.00 2.50
PX1 3.50 4.52
PX1[8] 3.50 4.52
P”X1=“XI 3.80 5.02
GOSUB 120 & 120$ & 3.40 2.56
RET
TIL 1 EQ 0 2.60 2.44
ZPE 1.00 1.55
? 1 EQ 1 O1 ON 4.00 3.92
IF 1 EQ 0 9.00 9.46
X1=1
ELIF 1 EQ 0
X1=2
ELSE
X1=3
ENDIF
20$ 1.00 1.06
J 1000 ** n/a 3.10
MI 40960 1000 ** n/a 6.23
J 1000 (In Motion) ** n/a 3.66

* (VDEFAULT 1000) **(Profile calculation time only)


Note : The drive is Enabled (EN) for all timing tests

TIMING METHOD #1 TIMING METHOD #2


Divide the number of loops counted (X1) into With an oscilloscope, measure the amount of

3
10 seconds (10 / X1) to get the single loop time. time that Output #1 is ON while running the
Perform this operation twice, once with the program with the <instruction> and subtract
<instruction> and once without the from this amount of time the Output #1 is ON
<instruction>. Subtract the amount of time it while running the program without the
takes to run this program with the <instruction> <instruction>. The result is the amount of time
from the time to run without the <instruction>. it takes to execute the instruction.
The result is the amount of time it takes to
execute the instruction.
4$ 5$
X1=0 PLIM 0
TMR1=10000 EN
5$ O1 ON
X1=X1+1 <instruction>
<instruction> O1 OFF
? TMR1 GT 0 GOTO 5 W0
B D 1000
GOTO 5

4
BDS5 SERIAL COMMUNICATIONS 3
DOC=BDS5COM3.DOC Rev 5 JANUARY 31, 1995

ENHANCED COMMUNICATIONS PROTOCOL


(Firmware version 3.1.0)

There is a need for a more robust ASCII communications protocol for tight computer based
communications. Beginning with BDS5 firmware version 3.1.0, an enhanced serial
communications format will be available. The new protocol adds a serial 8-bit checksum to the
end of each BDS5 command. The BDS5 will process this checksum by comparing it to the actual
checksum of the command string. If the two checksums match, then the BDS5 will echo an
<ack>(06h) character to the serial port and then process the command. If the two checksums do
not match, then the BDS5 will echo an <nak> (15h) to the serial port and the command will not be
processed. The Serial Checksum mode is enabled by turning on the user flag SCKSUM. The
following format will be enabled when the Serial Checksum mode is enabled (SCKSUM=1) :

<command string><checksum><cr>

where :

<command string> is a valid BDS5 ASCII command


<checksum> is an eight bit checksum of the <command string> represented by
two ASCII hex characters.

example :

P PFB48<cr> ;print the feedback position


P PFB48<cr><lf><ack>--> ;string received, echoed, acknowledged, and
; prompt returned

Command “P” ““ “P” “F” “B” Checksum


Hex 50h 20h 50h 46h 42h 148h
Decimal 80 32 80 70 66 328 148h

To calculate the checksum, each ASCII byte in the command should be summed excluding the
<cr>, then drop all but the least significant byte, this is the serial checksum. So the checksum of
“P PFB” is 48.

The only difference between this convention and that of the normal BDS5 is the addition of a
checksum. The checksum will consist of a hex byte represented by two ASCII characters (0-
9, A-F, or a-f).

If the command is valid and checksums, the BDS5 will execute the command and will respond
with :

“<command string><checksum><cr><lf><ack>-->“

where : <ack>=^F=06h=06d

If a checksum error is detected, then the BDS5 will ignore the command and will respond with :

1
“<command string><checksum><cr><lf><nak>-->“

where : <nak>=^U=15h=21d

A 16-bit checksum of the contents of the BDS5 program memory can also be printed to the serial
port. This checksum is contained in the variable :

“PGMCKSUM”

It can be displayed by entering the following command :

“P PGMCKSUM” ;this prints in decimal


“P PGMCKSUMD7” ;this prints in decimal with SCKSUM=1

“P PGMCKSUM[H]” ;this prints inhex


“P PGMCKSUM[H]D7” ;this prints in hex with SCKSUM=1

Notice that”[H]” has a checksum of 256 decimal or 0h, so the checksum of “P PGMCKSUM” is
the same as the checksum for “P PGMCKSUM[H]”.

Remember that once the Serial Checksum is turned on, it can only be turned off with a valid
checksum!. The following string will turn off the Serial Checksum :

“SCKSUM=043<cr>“

where : 43 equals the checksum of the string : “SCKSUM=0”

The Serial Checksum is case sensitive :

P PFB48<cr> ;print the feedback position


p pfbC8<cr> ;print the feedback position

When entering a command with Serial Checksum enabled, backspaces (<bs>) will correct a typo
and will not themselves effect the checksum.

Also, after entering the BDS5 internal editor mode (ED), the serial checksum will be momentarily
turned off. Upon exiting the editor mode (<Esc>), the BDS5 will resume serial checksum
operation. To enter the editor, type “ED89”<cr>.

NEW BDS5 CHECKSUM COMMANDS


(Firmware version 3.1.0 and later)
SCKSUM 0|1 Used to enable the serial checksum option. This option will require all serial
strings transmitted to the BDS5 to be followed by an eight bit checksum. The
format of the checksum is two ASCII hex characters. To turn the Serial
Checksum off, the following string must be entered :
SCKSUM=043
SCKSUM is set to 0 on Power-up.
PGMCKSUM This is a 16-bit checksum of the BDS5 User Program.

RS-485 Communications with Serial Checksum

2
RS-485 can be used in conjunction with the new serial checksum feature for enhanced
communications.

Example with MultiDrop enabled :

SCKSUM=1<cr> ;enable Serial Checksum protocol


SCKSUM=1<cr><lf> ;echo
--> ;prompt

PLIM=09F<cr> ;turn off software travel limits


PLIM=09F<cr><lf> ;echo
<ack>--> ;acknowledge and echo

EN93<cr> ;enable the motor


EN93<cr><lf> ;echo
<ack>--> ;acknowledge and echo

ADDR=65C3 ;enable RS-485 and enable address”A”


; (ASCII 65 decimal)
ADDR=65C3<cr><lf> ;echo
<ack>A-> ;Axis ID set, axis then disconnects until addressed

\A<cr> ;select axis “A”


<cr><lf> ;echo
<ack>A-> ;acknowledge and echo

MI 4096 1000<cr> ;move incremental 4096 counts @ 1000 rpm


; - no checksum
MI 4096 1000<cr><lf> ;echo
<nak>A-> ;negative acknowledge - bad checksum

MI 4096 10006A<cr> ;move incremental 4096 counts @ 1000 rpm with


; - checksum of 6A
MI 4096 10006A<cr><lf> ;echo
<ack>A-> ;acknowledge

SCKSUM=043<cr> ;turn off serial checksum


SCKSUM=043<cr><lf> ;echo
<ack>A-> ;acknowledge and echo

ADDR=0<cr> ;turn off RS-485


<cr><lf> ;back to standard configuration

PROMPT=1<cr> ;turn on prompts


--> ;RS-232 prompt

ECHO=1<cr> ;turn on echo


--> ;prompt

P PFB<cr> ;print feedback position


P PFB<cr><lf> ;echo
1212 ;12 position number (leading spaces)
--> ;prompt
Additionally, maximum through put of data can be achieved by turning off the user flags ECHO
and PROMPT. These two flags will suppress serial port character echoing and the BDS5 prompt
string.

3
The Echo flag when set to 0 will suppress echoing of all characters received by the BDS5 (this
includes the <cr><lf>termination sequence).

Prompt flag when set to 0 will suppress the BDS5 three character prompt when it is set to 0.

Please note that the BDS5 uses the prompt (-->, ==> etc.) to indicate to the user that it is ready for
another command. This means that until the prompt is transmitted, BDS5 is not listening to the
serial port. When the BDS5 prompt is suppressed, it may be necessary to wait a few milli-seconds
after each command before transmitting the next command.

With both ECHO=0 and PROMPT=0, the reply string for :

<command string><checksum><cr>

would be : <ack> or <nak>

Example with MultiDrop enabled, PROMPT=0 and ECHO=0 :

PROMPT=0<cr> ;turn off prompts


PROMPT=0<cr><lf> ;no prompt returned

ECHO=0<cr> ;turn off character echo


ECHO=0<cr><lf> ;

SCKSUM=1<cr> ;enable Serial Checksum protocol


;nothing echoed or returned!

PLIM=09F<cr> ;turn off software travel limits - checksum = 9F


<ack> ;command acknowledged

EN93<cr> ;enable the motor - checksum = 93


<ack> ;command acknowledged

ADDR=65C3 ;enable RS-485 and enable address “A” (ASCII 65


; decimal) - checksum = C3
<ack> ;command acknowledged - Axis ID set, axis then
; disconnects until addressed

\A<cr> ;select axis “A” (checksum not required for axis select)
<ack> ;command acknowledged

MI 4096 1000<cr> ;move incremental 4096 counts @ 1000 rpm with


; no checksum
<nak> ;command not-acknowledged

MI 4096 100055<cr> ;move incremental 4096 counts @ 1000 rpm with


; checksum of 55 (bad)
<nak> ;command not-acknowledged

MI 4096 10006A<cr> ;move incremental 4096 counts @ 1000 rpm with


; checksum of 6A
<ack> ;command acknowledged

ADDR=0<cr> ;turn off RS-485

4
PROMPT=1<cr> ;turn on prompts
--> ;RS-232 prompt

ECHO=1<cr> ;turn on echo


--. ;prompt

P PFB<cr> ;print feedback position


P PFB<cr><lf> ;echo
1212 ;12 position number (leading spaces)
--> ;prompt

5
BDS5 USER’s MANUAL M93102

PRINT KEY ---- The following filenames have been assigned :

PAGE 1 OF 2 PAGES

DESCRIPTION............................................................................................. FILENAME

Cover / Title Page ...........................................................................................AFM1 .DOC

Technical Manual Configuration / Configuration Table .................................AFM2 .DOC

Customer Response.........................................................................................AFM3 .DOC

Copyright Page................................................................................................AFM4 .DOC

Foreword.........................................................................................................AFM5 .DOC

How to Use This Manual ................................................................................AFM6 .DOC

Table of Contents............................................................................................AFM7 .DOC

List of Figures .................................................................................................AFM8 .DOC

List of Tables ............................................................................................... AFM9A .DOC

Chapter 1............................................................................................................CH1 .DOC

Chapter 2............................................................................................................CH2 .DOC

Chapter 3............................................................................................................CH3 .DOC

Chapter 4............................................................................................................CH4 .DOC

Chapter 5............................................................................................................CH5 .DOC

Chapter 6............................................................................................................CH6 .DOC

Appendix A................................................................................................... FAPPA .DOC

Appendix B ................................................................................................... FAPPB .DOC

Appendix C ................................................................................................... FAPPC .DOC

Appendix D................................................................................................... FAPPD .DOC

Appendix E ................................................................................................... FAPPE .DOC

Appendix F ....................................................................................................FAPPF .DOC

BDS5 USER’s MANUAL M93102


PRINT KEY ---- The following filenames have been assigned :

PAGE 2 OF 2 PAGES

DESCRIPTION............................................................................................. FILENAME

Glossary ........................................................................................................GLOSS .DOC

Index ............................................................................................................. INDEX .DOC

BDS5 Upgrade Notices.............................................................................NUGCVR .DOC

............................................................................... NUGHIST .DOC

.............................................................................. NUPGRD1 .DOC

.............................................................................. NUPGRD2 .DOC

.............................................................................. NUPGRD3 .DOC

.............................................................................. NUPGRD4 .DOC

.............................................................................. NUPGRD5 .DOC

You might also like