GML Commander (Cat. No. GMLC-5.
Important User Information Because of the variety of uses for the products described in this publication, those responsible for the application and use of this control equipment must satisfy themselves that all necessary steps have been taken to assure that each application and use meets all performance and safety requirements, including any applicable laws, regulations, codes and standards.
European Communities (EC) Directive Compliance If this product has the CE mark it is approved for installation within the European Union and EEA regions. It has been designed and tested to meet the following directives.
Table of Contents i Preface Prerequisite Knowledge ...................................................... 1 Who Should Use this Manual .............................................2 Purpose of this Manual ....................................................... 2 Where to Find Help .............................................................2 Using the Manual Set................................................... 3 Using Online Help .......................................................
ii Table of Contents Naming a Module ............................................................. 25 Printing ..............................................................................26 Printing a Diagram ......................................................27 Diagram Scaling .........................................................27 Chapter 2 – Configuring Control Options Defining a Diagram’s Configuration Settings ..................29 Understanding the Precedence of Changing Setup Parameters ..
Table of Contents iii Position Units ........................................................64 Position Display Format .......................................64 Velocity Display Format .......................................64 Acceleration and Deceleration Display Format ....65 Defining Feedback ............................................................65 Transducer Type ...................................................65 Transducer Loss Detection ...................................
iv Table of Contents Homing to an Encoder Marker .............................79 Homing to a limit Switch and Marker ..................79 Direction ...............................................................79 Homing Speed .......................................................80 Return Speed .........................................................80 Absolute Homing ........................................................80 Absolute_MV ........................................................
Table of Contents v Drive Fault ............................................................93 Motor Thermal ......................................................93 Transducer Noise ..................................................93 Transducer Loss ....................................................93 Verifying Hookups ...........................................................93 Test Increment ......................................................95 Motor/Encoder Test ................................
vi Table of Contents Adjusting Gains ........................................................111 Running your Program ..............................................114 Defining Dynamics .........................................................115 Maximum Speed .................................................116 Maximum Acceleration ......................................116 Maximum Deceleration ......................................116 Error Tolerance ...................................................
Table of Contents vii Aligning Blocks ........................................................143 Spacing Blocks .........................................................144 Snapping to the Grid .......................................................145 Accessing Block Information .........................................145 Accessing from the Diagram ....................................145 Accessing from the Edit menu ..................................
viii Table of Contents Chapter 8 – Working with Program Scripts Translating a Diagram to Script...................................... 173 Successful Translation to Script ...............................174 Handling Unsuccessful Translations ........................175 Editing a Script ...............................................................175 Chapter 9 – Control Setting Blocks Feedback .........................................................................178 Motion Settings ...................
Table of Contents ix Chapter 10 – Motion Blocks Home Axis ......................................................................195 Configured Homing ............................................196 Passive Homing ..................................................196 Wait for Completion ...........................................197 Synchronized Homing ........................................197 Move Axis .......................................................................198 Absolute Moves ............
x Table of Contents Opposite Direction Gearing ................................214 Changing the Gear Ratio .....................................214 Reversing the Gearing Direction ........................214 Set Ratio ..............................................................215 Real Number Gear Ratios .............................215 Fraction Gear Ratios .....................................215 Ramping to Master Speed ...................................216 Synchronizing Gearing on Multiple Axes .....
Table of Contents xi Calculating the Analog Input Scalar ...................245 Analog Offset Control Loop Operation ..............246 Programming an Analog Offset Function ...........247 Configure Cam ................................................................247 Cam Start and End Points ...................................248 Configuring Time Lock Cams ............................249 Configuring Position Lock Cams .......................250 Configuring Pending Position Lock Cams .........
xii Table of Contents Slaving to the Command Position ......................277 Selecting a Position-Lock Cam Direction ..........278 Camming in the Same Direction ...................278 Camming in the Opposite Direction .............278 Reversing the Camming Direction ...............278 Master Reference Position ..................................278 Unidirectional Position-Lock Cams ....................280 Synch Position-Lock Cams - Multiple Axes ...... 280 Scaling Position-Lock Cams.....................
Table of Contents xiii Wait for Axis and Multitasking ..........................300 If Axis and Multitasking ....................................300 Status ...................................................................301 Accelerated ...................................................302 Accelerating ..................................................303 AxisLinked ....................................................304 Decelerated ...................................................304 Decelerating ..
xiv Table of Contents Set Timer .........................................................................324 Set Count Down Timer .......................................324 Wait for Timeout ..........................................324 Set Free Running Clock ......................................325 On Timeout .....................................................................325 If Timeout ...........................................................325 Wait for Timeout ..................................
Table of Contents xv Wait for Task ......................................................348 Chapter 14 – Status Blocks Show Axis Position......................................................... 350 Show Axis Status ............................................................350 Show Input Status ...........................................................352 Dedicated ......................................................352 Configured ....................................................
xvi Table of Contents Standby .........................................................369 Offline ...........................................................369 Online ............................................................369 Wait for RIO Block Transfer ..............................369 If RIO Block Transfer .........................................370 Auto RIO Update ............................................................371 Auto Binary Numeric Format .............................
Table of Contents xvii Using Bit Masks ............................................391 Multiple Variables ..............................................392 Wait for Message Complete ...............................393 DH-485 Message Details ....................................393 On DH-485 Status ...........................................................394 If DH-485 ............................................................395 Online ............................................................
xviii Table of Contents Starting Offset .....................................................407 Chapter 21 – Display and Operator Interface Blocks Print to Display ...............................................................410 Force to Port ........................................................411 Suppress Auto CR/LF .........................................411 Selecting the Display ..........................................411 ASCII Text ....................................................
Table of Contents xix Waiting or Checking for a Specific Key .............423 Checking for a Specific Key .........................423 Waiting for a Specific Key ...........................424 Checking or Waiting for an ASCII Code ............424 Checking for ASCII Code .............................424 Waiting for ASCII Code ...............................424 Configure Auto Display ..................................................425 Configuring Runtime Display Fields ..................
xx Table of Contents Chapter 25 – The Expression Builder Calculation Accuracy.......................................... 460 The Numeric Keypad ......................................................460 Precedence ..........................................................461 ( ) Parentheses ...............................................461 [ ] Brackets ....................................................462 Expression Operators ......................................................
Table of Contents xxi Registration Position ...........................................479 Soft Registration Position ...................................480 Marker Distance ..................................................482 Distance To Go ...................................................483 Deceleration Distance .........................................483 Encoder Filter Lag ..............................................484 Watch Position ....................................................
xxii Table of Contents Chapter 28 – Fault Variables Global Fault ........................................................505 CNET Fault ...................................................506 CPU Utilization Overrun Fault .....................507 Feedback Device Fault ..................................507 Flex Fault .....................................................508 SLC Fault .....................................................508 DH-485 General Fault ..................................
Table of Contents xxiii DSP Error 1394 ...................................................535 Flex I/O Missing or Failed ..................................536 Insufficient Time (Linear Interpolation) .............537 Bad Arc (Circular Interpolation) .........................538 Attempt to Access Unknown AxisLink Device ..538 No Tasks Running ..............................................539 Attempt to Access Locked Memory ...................539 Illegal Direct Command ......................................
xxiv Table of Contents System Module Hard Fault 1394 ........................ 555 Axis Power Fault 1394 .......................................556 Axis Bus Loss Fault 1394 ................................... 557 Axis Motor Over Temp Fault 1394 .................... 558 Axis Drive Over Temp Fault 1394 ..................... 559 Axis It Fault 1394 ............................................... 560 System Bus Over Voltage Fault 1394 .................561 System Bus Under Voltage Fault 1394...............
Table of Contents xxv Interpolator Acceleration Status .........................585 Interpolator Deceleration Status .........................586 Interpolator Merging Status ................................586 System Bus Up 1394 ...........................................586 Status LEDs ........................................................587 Program Status ....................................................588 RIO Status ...........................................................588 CNET Status .....
xxvi Table of Contents System Smart Power Regenerative Power Percent Used 1394 ................................... 601 System Smart Power Shunt Power Percent Used 1394 .............................................601 Chapter 31 – System Functions Motion Controller Functions .......................................... 604 Indirect Variable .................................................606 Indirect DH-485 Variable ................................... 607 Indirect SLC M0 Float Variable ....................
Table of Contents xxvii SLC Bit Output ...................................................627 AxisLink Output .................................................628 Flex I/O Output ................................................... 628 Flex I/O Analog Output ...................................... 629 Get Firmware ......................................................630 Group Output ......................................................630 RIO Group Output ..............................................
xxviii Table of Contents Setting the AxisLink Addresses ................................657 Enabling AxisLink in GML Commander ................. 657 Configuring Virtual Axes ...............................................659 Example of a virtual axis configuration ..............662 Using Virtual Axes ......................................................... 662 Homing Virtual Axes................................................ 664 Registration on Virtual Axes ....................................
Table of Contents xxix Axis Fault ..................................................................700 Application Program Running ..................................701 Application Program Runtime Fault .........................701 Illegal Command in Block Transfer .........................701 Using Block Transfers ....................................................702 Sending Data to the Motion Controller..................... 702 Getting Data from the Motion Controller .................
xxx Table of Contents Editing CNET Bits, Floats, and Variables ................767 Deleting CNET Bits, Floats, and Variables ..............768 Fault Handling ................................................................768 Chapter 36 – 1394 GMC Turbo SLC Interface Rack Configurations .................................................770 Selecting the 1394 in Your SLC Software...................... 771 Enabling the SLC Interface in GML Commander.......... 772 Understanding Discrete Data Transfers ......
Table of Contents xxxi Chapter 37 – Initializing Your Motion Controller Initializing the Hardware ................................................ 807 1394 GMC & 1394 GMC Turbo System Module .... 807 Compact .................................................................... 808 Integrated .................................................................. 808 Basic.......................................................................... 809 Effect of Hardware Initialization .............................
xxxii Table of Contents Using Trace ...............................................................838 Using the Normal Debug Mode to Monitor the Program Blocks Being Traced ........838 Terminating Trace Mode ....................................839 Using Auto Step........................................................ 839 Using Single Step ......................................................839 Setting a Breakpoint ..................................................840 Clear Breakpoints ................
Table of Contents xxxiii CAM Palette Blocks .......................................................884 DH-485 Palette Blocks ................................................... 885 RIO Palette Blocks ..........................................................885 SLC Palette Blocks ......................................................... 887 RS-232/422 and Multidrop Palette Blocks ..................... 887 Appendix C – ASCII Reference ASCII Control Codes....................................................
xxxiv Table of Contents Publication GMLC- 5.
Preface Preface Read this preface to familiarize yourself with this manual. This preface covers the following topics.
2 Preface Who Should Use this Manual Use this manual if you are responsible for designing, testing, or debugging GML Commander™ diagrams used with Allen Bradley® controllers. GML Commander is a member of the GML™ software product family. Purpose of this Manual This manual is a reference manual for the GML Commander programming tool. It contains explanations of all the features of this software.
Where to Find Help 3 Using the Manual Set This manual is part of the documentation set for GML Commander: Use this manual: Publication Number: GML Commander CD Insert GMLC-5.3.CDI Installing the software Starting the software Defining the hardware for GML Setting up the system properties and the required configurations GML Commander Reference Manual GMLC-5.2 Setup details Expression Builder details Block function details GML Commander Troubleshooting Manual GMLC-5.
4 Preface Using the Optional Novice Mode If you have never used Windows-based software or if you feel that you need more assistance, we recommend Novice Mode. If you are in Novice mode, after you complete a dialog box, the next one automatically appears. Novice Mode also provides added information on some dialog boxes. A final dialog box informs you that the configuration task is complete. In this manual we assume that Novice Mode is not selected.
Related Documentation 5 Specifications of the IMC S Class Compact motion controllers IMC S Class Compact Motion Controllers Product Data 4100-2.3 Information regarding IMC S Class Integrated hardware IMC-S/21x Integrated Motion Controller Installation and Setup Manual 4100-999-103 Specifications of IMC S Class Integrated motion controllers IMC S Class Integrated Motion Controllers Product Data 4100-2.
6 Preface Contents of this Manual Chapter Title Contents Preface Preface This chapter provides an introduction to GML Commander. It describes what you need to know about GML Commander before you build your first diagram. It includes: • The different functional segments of GML Commander. • What function block palettes are available to make your diagram easy to build. • Menus and toolbars. 1 Overview This chapter contains general procedures you use while creating and editing diagrams.
Contents of this Manual Chapter Title Contents 9 Control Settings Blocks This chapter explains the function and use of the blocks in the Control Settings category. 10 Motion Blocks This chapter explains the function and use of the blocks in the Motion category 11 I/O and Event Blocks This chapter explains the function and use of the blocks in the I/O and Event category 12 Program Control Blocks This chapter explains the function and use of the blocks in the Program Control category.
8 Preface Chapter Title Contents 23 Defining Variable, Constants, and I/O This chapter describes how to set optional variables, constants, and I/O values. It includes: • Displaying system tags. • Creating, editing, and deleting user variables, constants, inputs, and outputs. • Displaying, adding, and deleting tags from the Watch window. 24 User Variables This chapter explains how to create user specific variables.
Contents of this Manual Chapter Title Contents 37 Initializing Your Motion Controller this chapter tells you how to initialize the hardware and software for your motion controller. 38 Axis Locked & Axis Done Conditions Axis Locked and Axis Done conditions are explained in this chapter. 39 Merging Different Motion Types This chapter explains how to merge motion of different types.
10 Preface Rockwell Automation Support Rockwell Automation offers support services worldwide. Local Product Support Contact your local Allen-Bradley representative for: • Sales and order support • Product technical training • Warranty support • Support service agreements Technical Product Assistance If you need technical assistance, first review the information in this manual. If you need more information, call your local Allen-Bradley representative.
About the GML Commander Software Application 11 About the GML Commander Software Application GML Commander uses the information that you provide to customize your screens. For example, if you tell it that you have only two axes. Any information that would normally pertain to a third or fourth axis would either not appear or be grayed out. Techniques Used in this Manual The following conventions are used throughout this manual: • Bulleted lists provide information, not procedural steps.
12 Preface want. Clicking an item in the list highlights your selection. • Sometimes you can select several values in one area. A check in a box is used when you can select more than one option. • Sometimes only one value is allowed. A radio button is used when you can select only one option. • When you select a block in your diagram, the block is highlighted. You can now: •Move the block by clicking and dragging, rather than clicking and releasing.
Chapter 1 GML Commander Overview GML, the exclusive Graphical Motion Control Language from AllenBradley, provides a graphical method of programming your motion controller. This revolutionary tool reduces the time you need to learn motion control programming and makes problem-solving easier. GML integrates software programming and debugging to solve your motion control problems.
14 GML Commander Overview How it Works GML Commander uses a natural, flowchart-oriented approach to motion control programming. You create a diagram of your application solution by placing function blocks representing actions on the screen and connecting them in the proper order to achieve the sequence of operations. You enter motion and process details later using a fill-in-theform approach. After the diagram is completed, you translate it into a script in the native language of the motion controller.
Understanding Your Workspace 15 Titles have been added to the example below to identify the different functional areas: This workspace provides all functions and features that you need to create, edit, and test diagrams. It also provides access to all menus and toolbars. Publication GMLC-5.
16 GML Commander Overview Understanding the Diagram Explorer The Diagram Explorer provides a hierarchical tree that shows the organization of information. GML Commander uses the same methods that Microsoft Windows Explorer uses to move, open, and view the blocks and modules within a diagram. You can: • Navigate or edit programs on a module level. • Explode or collapse branches. • Drag and drop a module from the tree's node onto another tree's node.
Understanding Your Workspace 17 The Diagram Explorer shows the contents of a diagram. When you select a module from the Diagram Explorer, blocks and connections appear in the Diagram Window. Understanding the Diagram Window The Diagram Window provides a graphical interface to manage diagram development and maintenance, as shown in the example below: A new Diagram Window is active each time you open GML Commander and each time you select a new diagram.
18 GML Commander Overview Understanding the Tag Explorer The Tag Explorer provides a hierarchical tree of tag categories, as shown in the example below: You can navigate to any available category. The list of categories is dynamic and is dependent on the options available and selected in the Control Options dialog box. Selecting a category controls the detail view in the Tag Window. Publication GMLC-5.
Understanding Your Workspace 19 Understanding the Tag Window The Tag Window provides the framework within which individual tags are created and edited, as shown in the example below. The example shows the Axis 0 user variables that were defined. When online the Tag Window also provides the framework within which individual tags are watched.
20 GML Commander Overview When you select normal mode, the viewed information is controller language independent. When you select terminal mode, the viewed information is shown in the controller’s native language. For information on using the online capability to communicate with your controller, see the Going Online chapter. Script Editor Window GML Commander provides the advantage of a graphical user interface to develop, edit and debug programs.
Understanding Your Tools 21 Understanding Your Tools Title Bar The GML Commander title bar shows the name of your diagram along with the size and close controls. Use the Title Bar to locate a diagram in the GML Commander application workspace. If you have not yet named or saved your diagram, the diagram is temporarily named New Diagram. For example, when you open a new diagram, you see the following: See the Working with Diagrams chapter for information about naming your diagram.
22 GML Commander Overview This menu: Gives you access to: Edit Commands for editing and making aesthetic changes (such as cutting, copying, pasting, aligning blocks) to your diagram as you develop it. You can also use the find function and access block details. View Commands that allow you to control the display of toolbars and status bar. Configure Commands that allow you to configure motion and communication features for your application.
Understanding Your Tools 23 By default the Main Toolbar is enabled when COmmander is invoked. You can disable or re-enable by selecting Toolbars from the View or Tools menu. You can click on any button on the toolbar to see its function. Diagrams and Blocks A diagram is a sequence flow of events and is composed of tags (definitions), blocks and connections. Tags describe the characteristics of data defined fields. Blocks represent actions and decisions.
24 GML Commander Overview Color Function Red Stop motion Yellow Change setting or configuration Brown Affect program flow control Pink Provide I/O control Violet Provide operator interface functions Light Green Provide communications facilities Light Yellow Provide calculations, tables, and other similar functions White Provide miscellaneous functions that are not available in the categories above A Module A module is essentially a container for encapsulating one or more blocks.
Naming a Block 25 Naming a Block When you first create a block, the description below it is generic. You can rename it using a descriptive name reflecting the block’s function within this diagram. When you place the block, the description below it is highlighted. Click on the name area below the block and then type in the name you prefer. Clicking anywhere on the diagram releases the block. Naming a Module When you create a module, GML Commander assigns it the name New Module x.
26 GML Commander Overview Printing Printing within GML Commander takes advantage of the common Windows printing tools. It uses your system defaults in determining which printer to use and its setup. We have added a few special features used in printing diagrams. This section explains how the special features in Commander work. See your Windows manual for specific questions on how Windows features work. The Print box of the Print screen determines the degree of detail to print about the diagram. .
Printing 27 Printing a Diagram For each diagram, you can choose to print one or more of the following: • Diagram Title Page – This option prints the Diagram Title page and the diagram synopsis. Use the Diagram Title Page command from the Diagram Menu to enter the heading and contents for the title page. • Table of contents – Table of contents listing the page of each module’s graphic depiction. The number of modules and blocks in the diagram and the number of times that each module is used also prints.
28 GML Commander Overview Publication GMLC-5.
Chapter 2 Configuring Control Options Before beginning a new diagram, you must define basic control options by either using the configuration settings from an existing diagram or by selecting new settings. GML Commander uses this information to customize the menu options based on the controller you are using. This chapter provides step-by-step procedures for defining required system configuration options that are common to all diagrams that you create.
30 Configuring Control Options • If you want to change the start-up value (also referred to as default or power-up value), enter a new parameter for the default control configuration using the Configure menu. Using the Settings from an Existing Diagram An easy way to configure your new diagram is to copy an existing diagram file that contains the proper configuration. To use an existing diagram as the template for a new one: 1. Select File from the menu bar. The File menu appears. 2.
Defining a Diagram’s Configuration Settings 31 Note: All options on this menu are part of the setup procedure. You can use these options later during testing and monitoring processes to make changes. 2. Select Control Options. The Configure Control Options dialog box appears. 3. To set the Control Options, follow the steps in the following section. Setting Control Options You configure the control options for the controller from the Configure Control Options dialog box.
32 Configuring Control Options 1. In the Control Type area of the General page, make entries in the following fields: Field Description Control Type Select the type of your controller: • IMC S Class Basic/Integrated • IMC S Class Compact • IMC S Class 1394/1394 Turbo • MC S Class 1394L iCODE Version Select the correct firmware version of your controller: Publication GMLC-5.2 - November 1999 1394 GMC/GMC Turbo 3.0 or higher Compact 3.0 or higher Integrated/ Basic 2.3 or higher 1394L 3.
Defining a Diagram’s Configuration Settings 33 Field Description Expansion Card for AXIS2 and AXIS3 Select this option for Compact, Integrated, and Basic motion controllers if an expansion card is used. Note: This option is not available for 1394 GMC/GMC Turbo or 1394L. 2. In the Interfaces area, make entries in the following fields: Field Description RIO Selects an RIO interface for your controller. An RIO tab appears.
34 Configuring Control Options Field Description AxisLink Selects AxisLink to enable communications for up to eight motion controllers on a network. An AxisLink tab appears. For more information, see the Configuring the AxisLink Interface section later in this manual. DH-485 Select this to enable DH-485 operations for your controller. A DH-485 tab appears. Note: This option is not available for IMC S Class Basic/Integrated.
Setting the Axes Field Description Download Servo Update Rate 1. Select this option to change the default Servo Update rate of 1000 Hertz to a new rate. Download Servo Update Rate affects the CPU utilization rate, as well as the frequency with which the CPU updates its reading of data, such as general system variable values, user variables, and I/O values. 2. Enter a different Servo Update rate (from 250-2000 Hz). 35 4. Place your cursor in the Setups Password field. 5. Select SET.
36 Configuring Control Options 2. In the Axes area, select the axes you want to enable by clicking on the checkbox next to the axis name. You can select these axes: AXIS2 and AXIS3 Only when one of the following is selected: • • VIRTUAL0 and VIRTUAL1 Publication GMLC-5.2 - November 1999 Expansion Card for AXIS2 and AXIS3 option on the General page. 1394 GMC/GMC Turbo Control Type on the General page. AxisLink option on the General page.
Setting the Serial Port Interface 37 3. Rename the axes (optional). Important: The axis name is appended to axis-specific system variables. Setting the Serial Port Interface To set the serial port interface: 1. Select the Interface tab. The Interface page appears. The example below shows the default settings. Publication GMLC-5.
38 Configuring Control Options 2. Make entries in the following fields: Field Description Operator interface port If the hardware configuration includes an optional operator interface terminal, select the controller serial port that is connected to that terminal. Runtime Display Port Select the serial port to use for the controller’s runtime display. Runtime Display Refresh Rate Enter the frequency with which the controller refreshes the Runtime Display (in seconds).
Setting the Flex I/O 39 Setting the Flex I/O To set Flex I/O: 1. Select the Flex I/O tab to display the Flex I/O page. Note: Flex I/O capability is always present on Allen-Bradley 1394 and Compact motion controllers. Up to eight separate Flex I/O modules can be connected to a motion controller. Note: In the Modules area, the first Flex I/O module connected is Module0, the second module connected is Module1, and so on. The names of selected modules can be changed for your application. 2.
40 Configuring Control Options Defining Flex I/O For every module selected in the Modules area of the Flex I/O page of the Configure Control Option dialog box, there is another selection added to the modules listed for the Flex I/O menu in the menu bar. An example is shown here. You must continue to define the Flex I/O module types and configuration options from this Flex I/O menu. Important: The default module names are shown above.
Setting the Flex I/O 41 4. Make entries in the following fields: Field Description Type The type of module you are assigning to this Flex I/O module. Note: the type of module selected here determines the fields for input and output that appear. Entry Fields The number of entry fields that display on this page are dependent on the kind of module selected in the Type field. Each field has a default value displayed.
42 Configuring Control Options 5. If you: Go to: Do not have more modules to define Step 6. Have more Flex I/O modules to define Step 1. Setting the Smart Power Options Select the Smart Power tab to make the necessary data parameter settings for a Smart Power 1394 system module. If your 1394 controller is not a Smart Power system module, make no selections on this page. Note: This page is enabled only if Control Type IMC S-Class 1394/ 1394 Turbo is the selected Control Type and iCODE Version 3.
Setting the Smart Power Options 43 To make the necessary System Smart Power data parameter settings (data parameters D132 through D136) and data bit (data bits B63 and B64) settings, make entries in the following fields: Field: Description: Shunt Resistor Select this if your Smart Power 1394 system module is equipped with a shunt resistor.Note:If your Smart Power 1394 system module is not equipped with a shunt resistor, do not make this selection.
44 Configuring Control Options Field: Description: Common Bus Enable Important: Select this if this Smart Power 1394 system module operates as a slave and is connected to another Smart Power 1394 system module (using DCLink hardware). In this configuration, one of the two system modules (the master) supplies DC power to another system module (the slave) over a common bus. Selecting this sets Data Bit #63 to 1. Note: Select Common Bus Enable only if this system is the Slave Module.
Setting the Smart Power Options • An SLC interface • An AxisLink interface • A DH-485 interface • A Multidrop interface 45 Like the settings you made for a controller’s basic configuration, you set and modify these additional control options from the Configure Control Options dialog box. You can create optional configurations from scratch or by copying from an existing diagram file with the same or similar configuration information that you want and modifying it to meet your needs.
46 Configuring Control Options 3. To set up this communication interface: Go to: RIO Configuring Your Remote I/O Interface. CNET Configuring Your CNET Interface. SLC Configuring Your SLC Interface. AxisLink Configuring Your AxisLink Interface. DH-485 Link Configuring Your DH-485 Interface. Multidrop Configuring Your Multidrop Interface. Note: You can open another diagram to use as an example. To do this, open a second GML Commander application for the diagram that you want to use.
Configuring Your Remote I/O Interface 47 When you use the RIO adapter you can control and monitor certain aspects of the motion controller from a PLC or SLC. RIO uses two transfer mechanisms: To: Use: Exchange real-time data using discrete inputs and outputs. Discrete transfers. Transfer parameter values, recipes, status, and other non time-critical data for display purposes. Block transfers. To the PLC, the motion controller appears as ¼, ½, ¾, or a full remote rack on the RIO link.
48 Configuring Control Options 2. Select this RIO Mode: To: Adapter Select to allow certain aspects of the motion controller’s operation to be controlled and monitored from an Allen-Bradley PLC using a Remote I/O scanner. Note: This is the default selection for all models. Scanner Select to allow Remote I/O racks (PanelView or RediPanel) to be scanned by the motion controller. Note: This option is available as an alternative to the adapter mode for the IMC-S/20x-R and IMC/S21x-R models only. 3.
Configuring Your CNET Interface 49 4. Make entries in the following fields: Field Description RIO Channel Select the channel through which your controller communicates. Baud Rate Select the baud rate at which your controller communicates over the RIO link. Note: Every item on the RIO link must have the same baud rate. Rack Size Select the rack size for your controller that is based on the number of inputs and outputs you need. (See Rack Size for rack and I/O sizes.
50 Configuring Control Options 3. In the I/O Configuration area, make entries in the following fields: Publication GMLC-5.2 - November 1999 Field Description MAC ID (1-99) Enter the Media Access Control (MAC) ID, or address, of the controller. The value is an integer from 1 to 99. Input Bits Select the number of input bits you need from the pull down list. Available values are: • 8 (0-7) • 24 (0-23) • 40 (0-39) Input Floats Select the number of input floats you need from the pull down list.
Configuring Your SLC Interface Field Description Output Bits Select the number of input bits you need from the pull down list. Available values are: • 8 (0-7) • 24 (0-23) • 40 (0-39) Output Floats Select the number of input floats you need from the pull down list. The available values are 0 to 15 (or 14 see note below table). 51 Note: CNET I/O files have 32 words of I/O available. Each float consists of two 16 bit words.
52 Configuring Control Options 3. In the I/O Configuration area, make entries in the following fields: Field Description Update Rate I/O image file updates to and from the SLC are executed from the servo interrupt routine, and are independent of the SLC I/O scan. The higher the setting, the greater the impact on CPU utilization. Select one of the I/O update rates: Slow: Updates the complete I/O Image file every four servo loops. Medium: Updates the complete I/O Image file every two servo loops.
Configuring Your SLC Interface 53 Field Description Input Bits Select the number of input bits you need: • 8 (from 0 to 7) • 24 (from 0 to 23) • 40 (from 0 to 39) Input Floats Select the number of input floats from 0 to 15 (or 14. See the Note, below.) that you need. Output Bits Select the number of output bits you need: • 8 (from 0 to 7) • 24 (from 0 to 23) • 40 (from 0 to 39) Output Floats Select the number of output floats from 0 to 15 (or 14. See the Note, below.) that you need.
54 Configuring Control Options Field Description M0 Floats Type the number of floats you need in the M0 file. M0 Integers Type the number of integers you need in the M0 file. M1 Floats Type the number of floats you need in the M1 file. M1 Integers Type the number of integers you need in the M1 file. Note: The number of M0 and M1 words specified above should match the number of words set in the SPIO section of your SLC 500 program software. 5. Select OK.
Configuring the AxisLink Interface 55 3. Make an entry in the following field: Field Description Address of This Control Select the number representing the controller address for which you are developing this diagram. Publication GMLC-5.
56 Configuring Control Options 4. Make entries in the following fields: Field Description Controller x Select the address(es) of the controller(s) from which you want this controller to receive outputs. Note: The address of the current controller (the one you assigned in the Address of This Control field) is grayed out. 5. Select OK. The selected options are stored as part of the current GML Commander diagram. The dialog box closes.
Configuring the DH-485 Interface 57 4. Make entries in the following fields: Field Description Baud Rate Select the baud rate for your DH-485 network. Important: Every item on the link must have the same baud rate. Node Address Type the node address number (0 through 31) for this controller. Max Node Address Type the highest number of possible addresses for devices on this network. 5. Select OK. The selected options are stored as part of the current GML Commander diagram. The dialog box closes.
58 Configuring Control Options Configuring the Multidrop Interface If you select Multidrop as an interface on the Configure Control Options dialog box, select a control address (0 through 7). To configure the Multidrop parameters: 1. Select Multidrop in the Configure Control Options dialog box. 2. In the Control Address field, select a control address (0 through 7) to identify the control when it is communicating in RS-422 multidrop or daisy-chained mode.
Chapter 3 Configuring Axis Use The following pages provide explanations for configuring axis use. There are two ways to configure an axis. You can copy the configuration from an existing axis or you can define all the parameters for each enabled axis from the Axis Use menu. Copying an Existing Axis Configuration To copy an existing axis configuration to another axis follow these steps: 1. Select Configure from the Menu bar to access the Configure Menu. 2. Place the cursor over the Axis Use menu option.
60 Configuring Axis Use 5. Place the cursor over the Copy Axis to, this accesses the axis pop-up menu. 6. Select the axis to which you want to apply the axis configuration settings. 7. The settings are copied to the new axis. ! Publication GMLC-5.2 - November 1999 ATTENTION: This process overwrites the existing values for the designated axis. Even when hardware configurations are similar, certain values may need to be adjusted to ensure safe performance.
61 To Configure an Axis With the Axis Use Screens The number of tabs that appear for an individual Axis Use dialog box depends on whether the axis is a physical, imaginary, or virtual axis. To configure a physical axis: 1. From the menu bar, select Configure. The Configure menu appears. 2. Select Axis Use. The Axis Use menu appears. 3. Select an axis. The Configure Axis Use dialog box appears: Publication GMLC-5.
62 Configuring Axis Use Note: Default names are shown in the examples above. If you had renamed AXIS0 to First on the Axes page of the Configure Control Options dialog box, First would replace AXIS0. General The General page of Configuring Your Axis is where you make the fundamental settings for an axis. The selections you make on this page determine how you can use this axis.
General 63 Axis Type Select how the axis operates: • Master Only, to use this axis only as a master axis. Note: For Axis1 on IMC S Class 1394L controllers, Master Only is preset as the only permitted Axis Type. • Servo, to use this axis as a servo axis, or as both a master axis and servo axis. Position Mode Select how to express forward motion along this axis: • Linear: to continually increase axis position units during forward axial motion.
64 Configuring Axis Use To enable this selection, first select IMC S Class 1394/1394 Turbo or IMC S Class 1394L as the Control Type in the General Page of the Configure Control Options dialog box. Defining Units The Defining units page is where you select a particular position unit for a physical axis, and to format displays of physical axis Position, Velocity, Acceleration and Deceleration data.
Defining Feedback 65 Acceleration and Deceleration Display Format For a servo axis, type an acceleration and deceleration display format, using the # character as a placeholder and a decimal point (.) to display fractional values. Note: Acceleration and Deceleration Display Format can contain up to 15 digits. Defining Feedback The Defining Feedback page is used to make settings that let GML Commander translate transducer or encoder counts to user-defined motion measurement units for a physical axis.
66 Configuring Axis Use Transducer Resolution Conversion Constant (K) To allow axis position to be displayed and motion to be programmed in the position units specified in the Units Tab, a conversion constant must be entered for each axis. The conversion constant (K) lets you convert your position units into encoder (feedback) counts and vice versa. For physical and virtual axes, enter a value for K which is the number of encoder (feedback) counts per position unit using up to 10 digits.
Defining Feedback 67 For example, suppose this axis utilizes a 1000 line encoder in a motor coupled directly to a 5 pitch lead screw (5 turns per inch). With position units of Inches, the conversion constant is calculated as shown below: K = 1000 lines/Rev * 4Counts/Line * 5Revs/inch = 20000 Counts/Inch For the imaginary axis, the conversion constant is essentially arbitrary, but does affect the smoothness of gearing and position-lock cams which use the imaginary axis as their master.
68 Configuring Axis Use Unwind Fraction The Unwind Fraction lets you add a fractional count to the Unwind Constant to more accurately define the Unwind value. The ability to entire a fractional count for the unwind reduces the position error that can accumulate per cycle. The Unwind Fraction is entered in two parts: the numerator and the denominator. Numerator The Unwind Fraction Numerator is the top value of the fraction being added to the Unwind Constant.
Defining Feedback 69 For example, if the Unwind is 4 position units and the Unwind Reference Point is -1 position units, the axis rotates up to 3 position units and unwinds back to -1 position units. The Unwind Reference value is entered in position and can be a positive or negative number up to 10 digits. The default value is zero (0).
70 Configuring Axis Use Filter Lag Limit The Filter Lag Limit parameter sets the value for the maximum allowable filter induced lag which the controller cannot exceed. Enter a value representing the maximum permissible filter-induced lag in position units (as determined at the Units Tab) between the filtered output and actual position. Commander lets you enter a value between 0 and 1000 position units.
Defining Position 71 Velocity Profile Velocity Profile is where you set the motion profiles for Move and Jog. The available motion profiles are: • Trapezoidal - linear acceleration and deceleration • S curve - controlled jerk • Parabolic - conforms most closely to the torque/speed curve of most motors Motion profiles are defined in the following manner, Publication GMLC-5.
72 Configuring Axis Use Velocity Trapezoidal The trapezoidal velocity profile is the most commonly used profile because it provides the most flexibility in programming subsequent motion, and the fastest acceleration and deceleration times. Accel Time Jerk Time Time Publication GMLC-5.
Defining Position 73 Velocity S Curve You will most frequently use the S curve velocity profiles when the stress on the mechanical system and load needs to be minimized. However, the S curve velocity profile sacrifices acceleration and deceleration time compared to the trapezoidal. In addition, the speed (velocity) of S curve motion cannot be changed once the motion is started—except to zero— and the same acceleration and deceleration must be used.
74 Configuring Axis Use Velocity Parabolic You will most frequently use a parabolic velocity profile to optimize the motor selection, because it conforms most closely to the torque/speed curve for most motors. However, the parabolic velocity profile sacrifices acceleration and deceleration time compared to the trapezoidal profile. In addition, the speed (velocity) of parabolic motion cannot be changed once the motion is started—except to zero—and the same acceleration and deceleration rate must be used.
Defining Position • 75 Parabolic Jog Select the default motion profile for servo axis motion commanded by a Jog Axis block: • Trapezoidal • S-Curve • Parabolic Lock Tolerance Type a value, in position units, representing the maximum servo axis position error the controller will tolerate when indicating axis locked status. Note: The controller interprets this value as a ± measurement around the axis position.
76 Configuring Axis Use Offset If you selected backlash compensation, type a value equal to the distance, in servo axis position units: • the axis should overshoot when approaching the destination position from the opposite direction (for Positive Approach or Negative Approach), or • to add/subtract from the axis’ absolute position whenever the axis changes direction (Load Reversal).
Defining Homing 77 Position Position refers to the reference position for all positioning movements (home position) of the axis. Type a value, in position units, that is the home position for this axis. Procedure The Homing procedure defines the method used to determine the position of the axis at startup. The procedures available are dependent upon the type of transducer selected in the Feedback portion of the Configure Axis Use.
78 Configuring Axis Use • Absolute Serial: only for AEC-216 and AEC Transducer Types. • Absolute MV (Motor Vernier): only for REC Transducer Type. Important: The selection of a Transducer Type, in the Feedback page, determines which homing procedures appear in this list. Active Homing Active homing is the most common homing procedure for physical servo axes.
Defining Homing 79 For example, if a return velocity of 0.1 inches per second (6 IPM) is specified, the uncertainty of the home position is calculated as shown below; 0.1 Inch/Second * 0.008 Seconds = 0.008 Inch Homing to an Encoder Marker This active homing sequence is useful for single turn rotary and linear encoder applications since these have only one encoder marker for full axis travel.
80 Configuring Axis Use Homing Speed Type a default speed, in axis position units per second, at which the axis will move toward a limit switch or encoder marker in an Active homing procedure. Return Speed Type a default speed, in axis position units per second, at which the axis will return from a limit switch or encoder marker in an Active homing procedure.
Defining Homing 81 Absolute_MV Absolute_MV is an absolute homing procedure. You can only use this procedure with a transducer type of REC. When the Absolute MV homing procedure is selected, the following fields become active. Assembly Part # For an Absolute MV homing procedure, select • the default master resolver part number from the pulldown list, or • Custom, if you are using a different master resolver.
82 Configuring Axis Use Important: When a passive homing procedure for a rotary axis begins, the working value of axis mode is set to Linear during the procedure. When the passive homing procedure finishes, axis mode is reset to Rotary. However, if the passive homing procedure does not finish, axis mode remains set to Linear. In this case, be sure to reset the working value of axis mode to Rotary using a Control Settings block, with Adjust Type, Working Value, and the Rotary Axis Data Bit selected.
Defining Overtravel ! 83 ATTENTION: In addition to setting hard and soft overtravel limits, hardwire the overtravel limit switches and/or the CPU watchdog contacts into the drives so that drive power is interrupted if a fault occurs. Otherwise, unpredictable motion can occur. To configure the Overtravel page, make entries in the following fields: Hard Travel Limits Select this to use travel limit switches.
84 Configuring Axis Use Maximum Negative If you selected Soft Travel Limits, type the negative direction software travel limit. Important: The Maximum Negative value must be less than the Maximum Positive value. Defining Servo The Defining Servo page is where you configure a physical axis to interface with a servo drive (or amplifier) operating in either velocity (tach) or torque (current) mode.
Defining Servo • IMC S Class 1394/1394 Turbo controllers connected to a Drive Interface Module (DIM). • IMC S Class 1394L controllers connected to a Drive Interface Module (DIM).
86 Configuring Axis Use Control Output Limit Type the maximum number of volts that is output to the drive, from: 0 to 10. Defining Motor/Drive The Defining Motor/Drive page configures a physical axis to interface with both a motor and a servo drive (or amplifier) operating in either velocity (tach) or torque (current) mode. This page applies only to IMC S Class 1394/1394 Turbo and IMC S Class 1394L controllers.
Defining Motor/Drive 87 • Torque: the drive merely activates the motor, while the controller corrects for both position error (by closing the position loop) and velocity error (by closing the velocity loop). • Velocity: the controller corrects for position error (by closing the position loop) and the drive corrects for velocity error (by closing the velocity loop). Motor ID Select from the scrolling list: • the motor ID number for your motor, or • Custom, if your motor’s ID is not listed.
88 Configuring Axis Use 5. Place the pointer in the Torque Limit data input box, and click the left mouse button. This brings focus to the Torque Limit field. GML Commander automatically generates a new Velocity Limit for the lowered Torque Limit value. 6. Repeat steps 3 through 5 until you reach the desired Velocity Limit (or absolute limit) for your motor. For Custom motors: 1.
Defining Motor/Drive 89 Note: If you select a motor ID from the list, GML Commander will make the Velocity Limit and Torque Limit settings for you. If you select Custom, you must: • Type the Velocity Limit and Torque Limit settings that apply to your motor, and • Contact the manufacturer of the custom motor for the 11 motorrelated data parameter settings (D91 to D97, D104 to D105, and D111 to D112).
90 Configuring Axis Use If you selected Custom, type a limit as a % of rated torque (0 to 300%). Motor Thermal Fault Input Select whether you are using the dedicated motor thermal fault input that detects if the motor is overheating: Not Used: if this input is not used. Normally Closed: if this input is used. (Because the input’s contact is normally closed, the input is activated at system power-up, and deactivated when a Motor_Thermal_Fault_1394 occurs.
Defining Fault Action 91 . Disable Drive: • Feedback is disabled. • The controller cannot command motion. • Motion on the axis depends upon your hardware configuration. Some hardware configurations may require brakes. Stop Motion: • Feedback remains enabled. • The controller continues to be able to command motion. • Motion stops at 100% of the Maximum Deceleration rate (set in the Dynamics page of the Configure Axis dialog box). Status Only: • Feedback remains enabled. Publication GMLC-5.
92 Configuring Axis Use • Motion continues. • The controller indicates a fault status. ! ATTENTION: Selecting the wrong fault action for your application can cause a dangerous condition. Keep clear of moving machinery. To configure the Fault Action page, make one of the above three entries in the following fields: Hard Overtravel Select the action that occurs when servo axis travel touches a travel limit switch, thereby causing a Hardware_overtravel_fault.
Verifying Hookups 93 Drive Fault Select the action that is to occur in response to a servo Drive_fault, if you enabled the Drive Fault Input in the Servo page of this dialog box. Important: For IMC S Class Basic/Integrated and Compact controllers only. Motor Thermal Select the action that occur in response to a Motor_Thermal_Fault , if you enabled the Motor Thermal Fault Input in the Motor/Drive page of this dialog box. Important: For IMC S Class 1394/1394 Turbo controllers only.
94 Configuring Axis Use Before running any of the diagnostic routines in this dialog box, be sure that: • all external components are properly connected to your system, • the GML Commander is operating in ONLINE mode, and • the program, including all configured Axis and Drive data, in GML Commander is the same as the program in the controller. ! ATTENTION: Failure to download can cause uncontrolled motion when performing controller diagnostic routines.
Verifying Hookups 95 Test Increment Type a distance value, in servo axis position units. Note: In most cases, a distance value that is the equivalent of 1/4 of a motor revolution works well. Motor/Encoder Test Use the motor/encoder test for servo axes to check the proper electrical connection of the servo drive and encoder (or other feedback device), and to establish the correct rotational direction of the servo drive and encoder.
96 Configuring Axis Use • Yes if the axis moved in the intended direction. • No if the axis moved in the negative direction. 5. Based upon your response, GML Commander sets the values in both the Transducer Polarity and Control Output Polarity fields. Transducer Polarity This field is set by successfully performing the Motor/Encoder test. ! ATTENTION: Changing the Transducer Polarity after the motor/encoder test has been successfully completed can cause a RUNAWAY condition.
Verifying Hookups 97 1. In the Hookups page of the Configure Axis Use dialog box, select the Marker Test button. 2. When prompted by GML Commander, manually turn the axis to generate a maker pulse. 3. Click OK to close the message box and run the marker test. 4. If the test succeeds, GML Commander will display a successful test message. 5. If the test fails, check the encoder hookup and return to step 1.
98 Configuring Axis Use 2. In the Homing page of the Configure Axis Use dialog box, select an absolute Procedure type. 3. In the Hookups page of the Configure Axis Use dialog box, select Align Absolute Device. 4. In response to a GML Commander message box, move the axis to its minimum travel position, then select OK to close the message box. 5. The alignment procedure reads the absolute position of the transducer.
Verifying Hookups ! 99 ATTENTION: Failure to download can cause uncontrolled motion when performing controller diagnostic routines. Then, do the following: 1. In the Hookups page of the Configure Axis Use dialog box, select the Drive Offset button. The controller tests for drift, and displays a message box containing the cumulative drift. 2. Go to the drive and manually adjust the drive offset potentiometer, so that the drive is as near to perfectly still as possible. 3. In GML Commander, select OK.
100 Configuring Axis Use Battery Box Test The Battery Box test helps adjust the response and gain potentiometers on most velocity loop servo drives (amplifiers), by sending test signals directly to the servo amplifier. How to perform the Battery Box test Be sure all external components are connected and the program, including all configured Axis and Drive data, is downloaded. ! ! ATTENTION: Motion does occur during the Battery Box Test.
Tune Servo 101 Note: The Battery Box test applies only to a Velocity Drive Interface (as set in the Servo page). Tune Servo The Tune Servo page performs tuning routines that determine the proper settings for a servo axis’ servo loop parameters. These parameters include: Proportional (P), Velocity (V), Integral (I) and Velocity Feedforward (F) gains, as well as Maximum Speed, Maximum Acceleration and Maximum Deceleration values.
102 Configuring Axis Use 1. Select the Tune Servo tab. A page similar to the following appears: 2. Make entries in the following fields: Field Description Control’s Motor Selection The value from the Motor ID field on the Motor/Drive dialog box appears. Tuning Travel Limit Type the number of units that is a safe travel distance given the practical travel limits of your application. Note: The greater the distance, the better for tuning.
Tune Servo Field Description Damping Factor Type a value between 0.7 and 2.0 to compute the loop gains. Note: We recommend a default value of 0.8 to provide good gain values for most systems. Position Bandwidth Type value in hertz that the position loop bandwidth needs for your application. Note: The position loop responds more rapidly as the bandwidth is increased. 103 3.
104 Configuring Axis Use Tuning Your Compact If you are using a Compact, use this procedure to tune your drive, axis, and motor. When you enter values in the fields in this dialog box and select Tune Gains, GML Commander automatically sets values in the Gains and Dynamics dialog boxes. Note: If necessary, you can change the default start-up values on the Gains and Dynamics dialog boxes while you are offline or finetune the working values for a single, online test run. 1. Select the Tune Servo tab.
Tune Servo 105 2. Make entries in the following fields: Field Description Tuning Travel Limit (inches) Type the number of units that provide a safe travel distance given the practical travel limits of your application. Note: The greater the distance, the better for tuning. Tuning Speed Type the speed that the axis must reach during tuning. Tuning Output Limit Type a voltage output limit, as a percentage of the value entered in the Control Output Limit Value field in the Servo dialog box.
106 Configuring Axis Use 5. Select Tune Gains. The proportional and velocity gains are entered in the Gains dialog box. Tuning Your Integrated/Basic If you are using an Integrated or Basic controller, use this procedure to tune the axis motor and drive. When you enter values in the fields in this dialog box and select Tune Gains, GML Commander automatically sets values in the Gains and Dynamics dialog boxes.
Defining Gains 107 2. Make entries in the following fields: Field Description Test Increment Type the distance for the test. Note: The recommended distance is ¼ of an encoder revolution. Tuning Travel Limit Type the number of units that provides a safe travel distance given the practical travel limits of your application. Note: The greater the distance, the better for tuning. Tuning Speed Type the speed that the axis reach during tuning. 3. Select Tune Gains.
108 Configuring Axis Use • Manually tuning your application programs’ power-up Gains values. You can do this instead of accepting the Gains automatically generated by GML Commander in the Tune Servo page. (These settings changes are made off-line. They take effect, and become working values, only after you download them to the controller.) Important: It is strongly advised that you accept the gain values automatically generated by GML Commander.
Defining Gains 109 Note: Increasing this number decreases response time and increases the stiffness of the servo system. If the value is too high, the system becomes unstable. Integral Gain A value, in position units per millisecond squared. Note: Increasing this number improves positioning accuracy of the servo system. If the value is too high, the system becomes unstable.
110 Configuring Axis Use Important: For IMC S Class 1394/1394 Turbo controllers only. Deadband Compensation For a torque (current) loop servo drive, the voltage value equal to the amount of controller voltage command that is too small for the drive to respond to. Important: For IMC S Class Compact and Basic/Integrated controllers only. Drive Offset A value, in volts, sufficient to offset any drive voltage output error. Important: For IMC S Class Compact and Basic/Integrated controllers only.
Adjusting Gains Values for the Servo Axis 111 Adjusting Gains Values for the Servo Axis The Adjust Gains dialog box is accessible only if the start-up (offline) gain values and the working (online) gain values are identical. ! ATTENTION: The Up and Down buttons immediately affect the control’s gains. Some gains values can cause unpredictable motion. Keep clear of dangerous moving machinery.
112 Configuring Axis Use You make all changes to gain with the up and down arrows on each field’s value list. A change to a gain value is made in small increments (thousandths or ten-thousandths of a unit) to protect material and machinery from sudden and potentially harmful jolts. When you make a change to any gain value, the new value immediately becomes the new working value for that gain. To adjust gain values: 1. Select Adjust Gains from the Gains page of the Configure Axis Use dialog box.
Adjusting Gains Values for the Servo Axis 113 Note: Increase the integral gain to increase the ultimate positioning accuracy of the system. If the integral gain is too high, the system becomes unstable. 3. In the Velocity Loop area, make entries in the following fields: • Velocity Gain – Select the up or down arrows to change the speed of velocity changes. Note: When using a torque (current) loop servo amplifier, the synthesized velocity loop provides damping without requiring an analog tachometer.
114 Configuring Axis Use Note: Note: For Compact, Integrated, and Basic controllers only. 5. Saving Changes • Save to Power-up – Saves changed working values as the powerup (or start-up) values in the controller • Save – Saves changed working values as the power-up values in the Gains dialog box Note: This does not change the power-up values in the controller until you download with axis/drive data selected, download via the Apply page, or press the Save to Power up in the Adjust Gains page.
Defining Dynamics 115 Defining Dynamics Use the Defining Dynamics page to: • Manually tune your application program’s power-up Maximum Speed, Acceleration and Deceleration values. This is done instead of accepting the values automatically generated by GML Commander in the Tune Servo page. (These settings changes are made off-line. They take effect, and become working values, only after you download them to the controller.) • Set Error Tolerance.
116 Configuring Axis Use Maximum Speed A value, in position units per second, to set the maximum speed for this axis. Maximum Acceleration The value, in position units per second squared, that sets the maximum acceleration rate for this axis. Maximum Deceleration The value, in position units per second squared, for setting the maximum deceleration rate for this axis. When a motion block asks you to enter a value as a % of Max, it is referring to the three Maximum value fields set in this page.
Adjusting Dynamics Values for the Servo Axis 117 Adjusting Dynamics Values for the Servo Axis The Adjust Dynamics dialog box is accessible only if the start-up (offline) dynamics values and the working (online) dynamics values are identical. ! ATTENTION: The Up and Down buttons immediately affect the control’s dynamics. Some dynamics values can cause unpredictable motion. Keep clear of dangerous moving machinery.
118 Configuring Axis Use You make all changes to dynamics with the up and down arrows on each field’s value list. A change to a dynamics value is made in small increments (thousandths or ten-thousandths of a unit) to protect material and machinery from sudden and potentially harmful jolts. When you make a change to any dynamics value, the new value immediately becomes the new working value for that dynamics. To adjust dynamics values: 1.
Adjusting Dynamics Values for the Servo Axis • 119 Error Tolerance – Select the up or down arrows to change how much error (relative to the position of the axis) the controller tolerates before indicating a position error fault. 3.
120 Configuring Axis Use Applying Axis Configuration Changes The Applying Axis Configuration Changes is used to: • Determine if the axis configuration in the controller is the same as the axis configuration in GML Commander. • Upload axis configuration from the controller to GML Commander, or download axis configuration from GML Commander to the controller, without having to close the Configure Axis Use dialog box. Publication GMLC-5.
Applying Axis Configuration Changes 121 Use the features of the Apply page as follows: Controller Icon The icon in the right-center of the dialog box indicates whether axis configuration in the controller is the same as in GML Commander. If the page is white with a blue checkmark above it, as shown below, the axis configuration in the controller and in GML Commander are the same.
122 Configuring Axis Use Publication GMLC-5.
Chapter 4 Using the Imaginary Axis The imaginary axis (available only in firmware 2.2 and later) is an internal axis with no connection to a drive or encoder. It is used as a master axis that other real axes are synchronized to when no physical or virtual axis is available. As such, it can be thought of as a built-in virtual axis not requiring AxisLink. As shown below, the output of the imaginary axis is its command position—it has no actual position. Publication GMLC-5.
124 Using the Imaginary Axis As shown previously, all the motion generating functions of physical servo axes are available for the imaginary axis; it just cannot actually move a motor. Each motion controller can have one imaginary axis defined. Configuring the Imaginary Axis Like all other axes, the imaginary axis must be configured before it can be used. As with any axis, configuring an imaginary axis is a two-step process. 1. From the menu bar, select Configure. The Configure menu appears. 2.
Using the Imaginary Axis in GML 125 Like other axes, you can configure the imaginary axis as either a rotary or linear axis with its own position units, conversion constant and (if the axis is rotary) unwind value. Select both the move and jog profiles, and set the maximum speed, maximum acceleration, and maximum deceleration values for the imaginary axis. Needless to say, hookup diagnostics and self-tuning are not available for an imaginary axis.
126 Using the Imaginary Axis When used with an imaginary axis, both of the following blocks, use the command position (versus the actual position) of the imaginary axis’: • Watch Control - Arm Watch Position block • On Watch - Wait for Position Event block This is because the imaginary axis has no actual position. By contrast, when used on servo and master-only axes, these blocks use the axis’ actual position. While all of the appropriate motion status variables (Jog_status, Accel_status, etc.
Imaginary Axis Applications 127 Imaginary Axis Applications You use the imaginary axis to synchronize multiple physical axes together using an independent master. Thus, all physical axes can be used as slaves, instead of using just one as the master for the others. This results in closer synchronization between the physical axes since they are all following the same command, as shown below. To move all four physical axes together, execute a move, jog, or time-lock cam on the imaginary axis.
128 Using the Imaginary Axis By inserting the imaginary axis between the true master and slave axes, gearing on the imaginary axis can be turned off to uncouple all the slaves from the master simultaneously without stopping each position-clock cam. In addition, by jogging or moving the imaginary axis, you can move the slaves together without loss of synchronization between them. This allows manual tweaking or offsetting of a synchronized process involving many axes.
Imaginary Axis Applications 129 • This technique works with trapezoidal profile moves, and with Scurve profile moves using version 3.6 (or higher) firmware. You cannot change the endpoint of a parabolic move, or an S-Curve move using version 3.5 (or lower) firmware while the axis is decelerating.
130 Using the Imaginary Axis Using the imaginary axis allows two moves to be superimposed on one another in the same way that a move is superimposed on gearing. A GML diagram that implements this technique is shown in the following diagram and included with the GML distribution software in the Samples directory, as SLIPCOMP.GML. Publication GMLC-5.
Imaginary Axis Applications 131 The Initialization module (below) enables feedback, reads the position lock tolerance of the feed axis into the Lock_Tol_0 user variable (more on this later) and gears the feed axis to the imaginary axis at a 1:1 ratio. Once this gearing is established, you can move the feed axis either directly or move the imaginary axis. The main task feeds a given amount of material using an incremental move of the imaginary axis and waits for completion.
132 Using the Imaginary Axis This expression compares the absolute value of the difference between the actual position of the material encoder and the command position of the imaginary axis (the true position error in this system) to the Lock_Tol_0 user variable. Lock_Tol_0 is the position lock tolerance parameter of the feed axis, set in the Initialization module.
Imaginary Axis Applications 133 While the command position of the feed axis is polluted by the corrections with this technique, the command position of imaginary axis is not. Thus, you can use the command position of imaginary axis as the true command position of the feed axis for any other calculations that may be necessary.
134 Using the Imaginary Axis Publication GMLC-5.
Chapter 5 Working with Blocks To create a program or diagram in GML Commander, you place blocks representing program functions between the following two blocks: These two blocks are always present in the diagram and cannot be deleted. You add blocks to the Diagram to Window to represent the actions that are to be performed. You then connect the blocks to show the flow of program functions. You can move the blocks around and change their connections, which changes program flow.
136 Working with Blocks To select a block from an open palette and position it in a diagram: 1. Move the cursor over the desired function block in a palette. 2. Select the block by clicking the left mouse button once. The cursor changes to a pointing finger. 3. Place the cursor into position in the Diagram Window between the Start and End blocks. 4. Click the left mouse button once. The block appears in the diagram.
Manipulating Blocks 137 Manipulating Blocks Most blocks and modules, including the Start and End blocks, have input and output nodes. The diagram must start at the Start block. It also must have connections drawn from an output node of one block to the input node of another. The diagram usually ends at the END block, but does not need to.
138 Working with Blocks Connecting Blocks To connect blocks and modules: 1. Move the cursor to the desired output node. The cursor changes to a soldering iron. 2. Press and hold the mouse button. 3. Drag the soldering to the desired input node or anywhere inside the block. As you drag, a red line representing the connection appears. 4. When the soldering iron is in the appropriate location, release the mouse button. The red line turns green. Important: Green lines indicate a valid connection.
Manipulating Blocks 139 Moving Blocks You can drag blocks, including the Start and End blocks, anywhere in the Diagram Window. To drag a block or selection of blocks press and hold down the left mouse button on the selected blocks and drag the cursor (now in the shape of a hand) to the desired location. Then release the left mouse button. The original connection lines remain intact no matter where you move them.
140 Working with Blocks 1. Move the cursor to a connecting line. The cursor changes to a wire cutter. Note: You can only cut horizontal connecting lines. 2. Click your left mouse button. The connection is cut. Changing the Position of the Connection Lines Between Blocks In some cases, when you have a connection that loops back to an earlier block in the diagram, you can move a vertical connection to avoid other blocks. To move lines: 1. Place the cursor on the vertical connecting line.
Making Changes to Your Diagram 141 Making Changes to Your Diagram Edit menu options generally pertain to the Diagram Window. You use this menu to make standard editing changes to your diagram, such as cut, copy, and paste. You also use this menu to select editing features that are specific to GML Commander, such as moving and searching. These options are described in this section. Selecting All Use the Select All option to select all the elements in the Diagram Window.
142 Working with Blocks Swapping Blocks Use the Swap Blocks option to swap the location and connections of two selected blocks, even if the blocks are not connected or positioned next to each other. In the example that follows, the Control Settings block is swapped with the Output block. This is the current position of the blocks: To swap two selected blocks in a diagram: 1. Select one of the blocks to be swapped by with your left mouse button. It is highlighted: 2.
Making Changes to Your Diagram 143 4. Select Swap Blocks. The blocks switch positions. Click your left mouse button in another area of the Diagram Window to clear the selection. Aligning Blocks Use the Align Blocks option to align selected blocks on a vertical or a horizontal grid. The Align Blocks option affects only the blocks and inclusive connections (including the Start and End blocks) that you select. To align an entire diagram appearing in the Diagram Window: 1. From the menu bar, select Edit.
144 Working with Blocks 5. Click your left mouse button in another area of the Diagram Window to clear the selection. Note: You can visually align blocks and connections anywhere in the Diagram Window. See Moving Blocks and Changing the Position of the Connection Lines Between Blocks. Spacing Blocks Blocks that are evenly spaced are easier to read. When a diagram becomes cluttered and blocks overlap, it is time to space the blocks so you can keep track of what you are doing.
Snapping to the Grid 145 Note: You can Align Blocks at this time for optimum readability. 6. Click your left mouse button in another area of the Diagram Window to clear the selection. Snapping to the Grid You define how you place blocks in the diagram by using the Snap To Grid option in the Properties dialog box. GML Commander divides the diagram into invisible horizontal and vertical lines.
146 Working with Blocks 1. Place your cursor over one block in the diagram. 2. Double-click your left mouse button. The selected block’s dialog box appears. 3. Examine or change the parameters that have been set for the function block. Accessing from the Edit menu 1. Select a block. 2. From the menu bar, select Edit. The Edit menu appears. 3. Select Block Information. The dialog box for that block appears. 4. Examine or change the parameters that have been set for the function block.
Accessing Block Information • Calculation blocks • Display and operator interface blocks • Miscellaneous blocks 147 Publication GMLC-5.
148 Working with Blocks Publication GMLC-5.
Chapter 6 Working with Diagrams Diagrams are created in the Diagram Window using Commander’s graphical elements. They are the graphical equivalent of scripted programs. By creating a diagram you build the instruction set for running your job.You can create original diagrams or copy and paste parts of existing diagrams into your new diagram. Creating a Diagram Diagrams can be created in two ways: • Open a new Diagram Widow, add your elements, and save it.
150 Working with Diagrams 2. A new GML Commander diagram window similar to the following appears: 3. Rename the diagram using the Save As option. 4. Use the GML Commander function blocks and/or existing modules to build your diagram. Use Preexisting Modules to Create Diagrams In many cases an existing diagram, or part of an existing diagram, contains instructions very similar to the ones you need. You can recycle part of a diagram (usually a module) for use in your new diagram.
Creating a Diagram 151 We suggest that you create a library for your diagrams on your computer’s hard drive or your organization’s network to use as an information resource. You can copy and paste modules from preexisting diagrams by using the standard Windows copy and paste features. Important: When you copy blocks or modules from one diagram to another, check the parameters for the blocks and change them to meet the requirements of the new instruction set.
152 Working with Diagrams 3. In the Search area, make entries in the following fields: Field Description For Block Type Select to activate the drop-down list of the Find type field that you use to search for a specific type of block. In Block’s Name Select to activate the Find what field that you use to search for a block containing all or part of the name that you type.
Displaying Diagram Information 153 5. Make entries in the following fields: Field Description Find what Type the text that you want to search for. If a block contains the text, the block appears in the Diagram Window. Note: This field is activated only if the In Block’s Name or In Block’s Parameter field is selected in the Search area. Find type Select the type of block that you want to search for from the drop-down list.
154 Working with Diagrams Documenting Your Diagram Documentation provides a place to record information about a specific diagram. To document information about your diagram, select Diagram Doc from the Diagram menu option. The following screen displays Type your information regarding the diagram and press OK. The information is saved and the dialog box disappears. Diagram Title Page The Diagram Title Page lets you enter the title of the diagram and provide a brief synopsis of the diagram ‘s function.
Testing Diagrams 155 : Enter the diagram title and a brief synopsis of the diagram in the areas provided. Testing Diagrams Use the Test Diagram option to test your diagram for valid translation into a program for the selected motion controller. This feature includes tests for valid block parameters and block connections. If GML Commander finds an error, a message box appears, describing the error and identifying its source. To test your diagram, select Test Diagram from the Diagram menu option.
156 Working with Diagrams . If there are: Do this: Errors 1. Correct the error(s). 2. Go to step 1. No errors. Your test is complete Important: A successful test indicates that the diagram translates to a valid program, not that the motion controller operates your machine flawlessly. Translating a Diagram into Program Script Before you perform a download, you can translate the diagram to program script. We strongly suggest that only an experienced programmer should edit a program.
Accessing the Online Manager 157 Accessing the Online Manager Select the Online Connection option on the Diagram menu to access the Online Manager. For more information about the Online Manager, refer to the Going Online chapter. Publication GMLC-5.
158 Working with Diagrams Inserting a Breakpoint Use the Breakpoint option on the Diagram menu to set or clear breakpoints. You can set and clear breakpoints using the Diagram menu or Online Toolbar but you must be online to set a breakpoint. Breakpoints can only be set after the diagram is downloaded. The diagram must be downloaded every time a change is made to the diagram. Select Download Diagram from the Diagram menu option.
Chapter 7 Working With Modules A module is one block made up of several related blocks and/or modules. These blocks and modules together comprise either a larger function or related functions. Using modules allows you to hide detail and save space. You can duplicate, copy, move, connect, and encapsulate a module just like other blocks in the diagram. Creating a Module You can create a new module by doing any one of the following: • Select the New Module block from the Main palette.
160 Working With Modules 1. From the Block palette, select the New Module block. 2. Drag the block to where you want to place it and click again. The block appears in the workspace. Using the Diagram Explorer Use this method when you want to create a diagram by starting with a generalized idea. For example, each module might be a major program function, such as startup or setup. A new module is empty when you select it from the Diagram Explorer.
Creating a Module 161 To create a new module: 1. From the Diagram Explorer, select the New Module block. 2. Hold down the left mouse button and drag the arrow cursor with the attached block to the Diagram Window. In the Diagram Window the arrow cursor becomes a finger cursor. 3. While holding down the left mouse button, place the finger cursor in the Diagram Window. Publication GMLC-5.
162 Working With Modules 4. Release the left mouse button. The block appears in the workspace. Important: A new module from the tree's node can also be dragged and dropped onto another tree's node within the Diagram Explorer. Encapsulating Blocks Create a new module to simplify the structure of your diagram. Use the encapsulate function to combine several blocks into a single module. You can easily reverse this process by unencapsulating the module. Refer to the Unencapsulating a Module section.
Creating a Module 163 3. Select Encapsulate. The selected blocks are encapsulated into a module and given the default name New Module. 4. Change the default name to a name meaningful to you. Duplicating an Existing Module Once you have created a module that performs a function, you can duplicate the module. This is not a copy of the original, but another occurrence of the original. The duplicate has the same name and links as the original.
164 Working With Modules Important: The number of module calls is limited to the size of the application program stack inside the controller. The following are the depth limits for module calls: ! IMC S Class Basic, Integrated Compact and 1394: 25 calls deep per task IMC S Class 1394 Turbo: 40 calls deep per task ATTENTION: Recursion can lead to stack overflow. If stack overflow occurs, the controller does not issue a stack overflow error. Controller behavior can become unpredictable.
Viewing the Contents of a Module 165 To unencapsulate the contents of a module: 1. Select the module. The module is highlighted. 2. From the menu bar, select Module. The menu appears. 3. Select Unencapsulate. The module separates into its component parts. Note: To view the blocks in the module without unencapsulating, refer to the Viewing Module Details section.
166 Working With Modules • Select a single module in the Diagram Explorer and view its contents in the Diagram Window. Viewing Module Contents Using Expand To view the contents of a module while preserving the module: 1. In the Diagram Window, click once with the left mouse button to select a module block within a diagram. The module block is highlighted. In the following example, the Feed and Loop module block is highlighted 2. From the menu bar, select Module. The Module File menu appears. 3.
Viewing the Contents of a Module 167 • Select Collapse Module in the Module menu (or in the pop-up menu that opens by clicking the right mouse button with the pointer in the Diagram Window. • Select Collapse Navigation then select the name of the module to display, from the pop-up menu that opens by clicking the right mouse button in the Diagram Window. The original diagram appears in the Diagram Window.
168 Working With Modules Splitting the Diagram Window To see different areas of the same diagram, you can split the Diagram Window into two viewing areas, each with its own vertical scroll bar. This enables you to work on separate modules within the same diagram. With a diagram displayed, split the Diagram Window by doing the following: 1. Locate the splitter bar in the top, right-hand corner of the Diagram Window. The arrow shows the splitter bar above the scroll-bar. 2.
Splitting the Diagram Window 169 3. While holding down the left mouse button, pull the splitter down. The Diagram Window splits into two views. Note: You can also split the Diagram Window by clicking in the Diagram Window with the left mouse button and selecting Split from the Window menu. 4. At this point you can, for example, double-click with the left mouse button on a module in one of the views. In the example below, the contents of the Init module was opened for viewing. Publication GMLC-5.
170 Working With Modules You can continue to change these two working views of the Diagram Window. This would enable you to view two widely separated areas of a large diagram. In addition, you can display different modules in either view by selecting them from the Diagram Explorer. To change focus to the lower view, hold the Shift key down while clicking the left mouse button on a module node in the Diagram Explorer.
Documenting a Module 171 To document a module that appears in the Diagram Window: 1. In the Diagram Explorer, select the diagram or module level that contains the module that you want. 2. Select the module that you want to document. The module is highlighted in the Diagram Explorer. 3. From the menu bar, select Module. The Module menu appears. 4. Select Module Doc. The Module Documentation dialog box appears. The name of the active module displays above the documentation input box. 5.
172 Working With Modules Publication GMLC-5.
Chapter 8 Working with Program Scripts A program script is a text-based program file in iCode format. The controller requires programs in iCODE. GML Commander diagrams are not in iCODE format and it must be translated to iCODE for the controller to understand your commands. The Script Editor in GML Commander allows you to view and modify iCODE that was either translated from a diagram or uploaded from a controller.
174 Working with Program Scripts To translate a graphical GML Commander diagram to a native language script it must be the active diagram in the window. Select Translate to Script from the Diagram menu option to begin translation of the active diagram. As GML Commander translates the diagram into a script, a dialog box informs you of the translation progress. Successful Translation to Script A successful translation of a diagram to a script causes the script workspace to replace the diagram workspace.
Editing a Script 175 Handling Unsuccessful Translations During the translation, the GML Commander translator checks for syntactical errors. If it finds errors and the translation is not successful, a dialog box appears, identifying the problem and its location. As shown in the following exhibit. To correct a diagram error, select OK in the GML dialog box. Commander automatically takes you to the section of the diagram where the error occurred.
176 Working with Program Scripts The Script Editor provides standard cut, copy, paste, delete, and find/ replace functions. They work in the same manner as these functions work in all Windows programs. Important: Changes to the script cannot be converted back to a graphical diagram. Use the Open Script option from the File menu option to open a saved script. You can then use all or portions of the script to build your new program.
Chapter 9 Control Setting Blocks Control Setting blocks directly control some aspect of the motion controller. The following table presents the icons for each block in this category along with a brief description. More detailed descriptions of the blocks are contained on the pages following this table. Use this block: To: Turn feedback on or off.
178 Control Setting Blocks Use this block: To: Set an axis’ actual or command position to a commanded absolute or relative position. Show, adjust or read the current working or power-up value of a selected data parameter or data bit Feedback The Feedback block directly and immediately affects the appropriate drive enable output and the feedback loop processing on any servo axis. The Feedback block resides on the Main Palette. You can use the Feedback block anywhere in a GML Commander diagram.
Motion Settings 179 Motion Settings The Motion Settings block allows you to set the motion controller’s: • Output limit for a physical servo axis • Motion profile for a servo axis • Maximum speed (or velocity) value for a servo axis • Maximum acceleration value for a servo axis • Maximum deceleration value for a servo axis The Motion Settings block resides on the Main Palette Important: The power-up values, set in the Configure Axis Use dialog box, are unchanged by the execution of the Motion Settings fun
180 Control Setting Blocks When the servo output is being clamped at the servo output limit • Output_limit_status = 1 • Axis_status = 5 if no faults are active When the servo output of an axis is not being clamped at the servo output limit • Output_limit_status = 0 • Axis_status ≤ 4 if no faults are active on the axis Unit Settings If the motion controller is a 1394 or a Compact, you can specify the servo output in volts, percentage of full scale, or mA as required by your application.
Motion Settings 181 Setting the Motion Profile You can also use the Motion Settings block to set the type of motion profile used with all subsequent Move or Jog Axis blocks for the selected axis. It does not change the power-up profiles for the axis set in the motion controller’s application setup menu, but merely changes the current working profile selection. The motion controllers provide trapezoidal (linear acceleration and deceleration), S curve (controlled jerk), and parabolic velocity profiles.
182 Control Setting Blocks Setting the Maximum Deceleration You can use the Motion Settings block to set the 100% deceleration value for all subsequent Move or Jog Axis blocks, for the selected physical or imaginary axis. This does not change the power-up maximum deceleration value for the axis set in the motion controller’s servo setup menu, but changes only the current working value.
Direct Drive Control 183 Direct Drive Control The Direct Drive Control block directly sets the servo output of the selected physical axis to the commanded voltage, current, or percent of maximum. The maximum settings are either 10 Volts (V) or 150 milliAmperes (mA). The Direct Drive Control block resides on the Advanced Motion Palette. Units For 1394 or Compact motion controllers, you can specify the servo output in volts, percentage of full scale, or mA as required in your application.
184 Control Setting Blocks Use the Direct Drive Control block only on a physical master only axis, or a servo axis when feedback is off (with feedback on, it has no effect). The Direct Drive Control block automatically enables the selected axis by activating the appropriate drive enable output before setting the servo output to the commanded value. The 16-bit DAC on the motion controller limits the effective resolution of the Direct Drive Control block to 305 µV or 0.003%.
Reset Fault 185 Selecting Reset 1394 clears all of the following 1394 system faults: • Axis_bus_loss_fault_1394 • Axis_Drive_over_temp_fault_1394 • Axis_it_fault_1394 • Axis_module_hard_fault_1394 • Axis_Motor_over_temp_fault_1394 • Axis_power_fault_1394 • Drive_hard_fault_1394 • DSP_feedback_fault_1394 • System_bus_over_voltage_flt_1394 • System_bus_undr_voltage_flt_1394 • System_control_power_fault_1394 • System_ground_fault_1394 • System_over_temp_fault_1394 • System_phase_lo
186 Control Setting Blocks See the Fault Variable chapter in this manual for more information on the specific faults. Redefine Position The Redefine Position block sets the actual or command position of the selected axis to the commanded absolute or relative position. This block causes no motion—it merely redefines the current axis position. The Redefine Position block resides on the Main Palette. You can use the Redefine Position block when the axis is moving, and when the axis is at rest.
Redefine Position 187 Absolute and Relative selections have the same effect when the axis is not moving. When the axis is moving, however, absolute mode introduces a position error equal to the motion of the axis during the time it takes to execute the Redefine Position block and assign the new position. Relative mode does not introduce this error and guarantees an exact correction independent of axis speed or position.
188 Control Setting Blocks Command Position When you select Command from the Position menu, the motion controller directly applies the new position value to the command position of the servo or imaginary axis. Because master only axes do not have a command position, you can select only Actual from the position menu for master only axes. The motion controller also adjusts the actual position of servo axes to reflect the new command position, and to preserve any position error that exists.
Control Settings 189 When you select Synchronize with next block, the block immediately following the Redefine Position block must be another Redefine Position block. GML Commander does not permit a connection to be made to any other kind of function block. In the example above, select Synchronize with next block in the first three Redefine Position blocks—but not in the last block—to simultaneously redefine all four axes’ positions.
190 Control Setting Blocks Whenever you power-up the motion controller—or whenever you press the Reset button, the working values are initialized (set equal) to the power-up values. At this moment, immediately after power-up, the power-up and working values of each data parameter or data bit are identical. Each time you run the application program in the motion controller, the motion controller again initializes the working values (i.e., sets them equal to the power-up values).
Control Settings 191 Whenever you power-up the motion controller—or whenever you press the Reset button, the working values are initialized (i.e., set equal to the power-up values). At this moment, immediately after power-up, the power-up and working values of each data parameter or data bit are identical. Each time you run the application program in the motion controller, the motion controller again initializes the working values (i.e. sets them equal to the power-up values).
192 Control Setting Blocks Publication GMLC-5.
Chapter 10 Motion Blocks Motion blocks include all blocks that cause or directly affect motion of the physical axes. GML Commander provides blocks for homing, moving, jogging, electronic gearing, multi-axis interpolation, and electronic cams. The following table presents the icons for each block in this category along with a brief description. More detailed descriptions of the blocks are contained on the pages following this table. Use this block: To: Home an axis and define that axis’ actual position.
194 Motion Blocks Use this block: To: Move a group of two or more physical or imaginary axes either to an absolute position on, or by a specified incremental distance, along a linear, circular or helical path. Change the: • Speed of trapezoidal profile moves • Speed, acceleration, and deceleration of trapezoidal profile jogs. Let the motion controller use an analog input to generate a scaled position offset, and add that offset to the command position of the specified servo axis.
Home Axis Use this block: 195 To: Stop the electronic gearing motion of a selected Axis. If gearing is the only motion in progress on the axis, the axis stops immediately with no deceleration. Stop all motion, or any selected type of motion, on the selected physical or imaginary axis or interpolator. Except when used to perform an Emergency Stop, this block does not disable feedback. Motion blocks provide access to all of the high-level motion functions in the motion controllers.
196 Motion Blocks The Homing_status variable is 1 (true) while the homing is in progress. When active homing is complete (see Configured Homing, below) the axis is at the home position and Homing_status is 0 (false). See the System Variables chapter in this manual for more information on the Homing_status variable.
Home Axis 197 The Homing_status variable is 1 (true) while the homing is in progress. When the marker is detected, the motion controller assigns the home position to the exact location of the marker, and Homing_status is 0 (false). See the System Variables chapter in this manual for more information on the Homing_status variable. See the Setup section of the Installation and Setup manual for your motion controller for more information on the home position.
198 Motion Blocks When you select Synchronize with next Home Axis, the block immediately following the Home Axis block must be another Home Axis block. Otherwise, GML Commander does not permit you to connect the two blocks. In the example above, Synchronize with next Home Axis should be selected in the first three Home Axis blocks—but not in the last block—to home all four axes simultaneously.
Move Axis 199 Accel Velocity Speed Decel Distance Time Velocity Speed Position Endpoint Distance While a move is in progress: • Move_status = 1 (true) • Axis_status = 3 (Moving) • Lock_status = 0 (Unlocked) When the move is done: • Move_status = 0 (false) • Axis_status = 1 (unlocked) For physical axes, when the move is done and the position error is less than the position lock tolerance: Publication GMLC-5.
200 Motion Blocks • Axis_status = 0 (Locked) • Lock_status = 1 (Locked) See the Axis Locked and Axis Done Conditions chapter in this manual for more information. See the System Variables, chapter in this manual for information on variables. Absolute Moves When you select Absolute in the Move field, the axis moves to the specified position at the specified speed, using the specified acceleration and deceleration.
Move Axis 201 Absolute Moves on Rotary Axes When an axis is configured for rotary operation, the motion controller handles absolute moves the same as with linear axes, except that when the axis position exceeds the unwind parameter, axis position is unwound. In this way, axis position never exceeds the unwind value, and never falls below zero. The specified position is interpreted trigonometrically and can be positive or negative and can exceed the unwind value.
202 Motion Blocks Incremental Moves with Gearing You can use a Gear Axes block while an incremental move is in progress on the slave axis. The gearing motions are superimposed on the move profile. Conversely, you can use an incremental move block while gearing is enabled to cause a similar effect. This allows you to accomplish many complex move profiles and sophisticated synchronization.
Move Axis 203 This motion can be thought of as smoothly shifting the master reference position of the cam by the specified distance, thus shifting the master axis positions relative to the slave axis positions. ! ATTENTION: Although you command a phase shift move along the slave axis, always set the distance value in the position units of the corresponding master axis of the position-lock cam.
Motion Blocks Profile After Incremental Move of Slave Axis Slave Axis Position 204 Profile After Phase Shift Move of Slave Axis . Master Axis Position Profile Stored in Cam Tables Note that if the master axis is not moving, you can achieve this same effect using another position-lock cam block with a new master reference position. The phase shift move, however, allows this adjustment to be made at a controlled rate while the master is moving and the position-lock cam is executing.
Move Axis 205 When you select Rotary Shortest Path, the axis moves to the specified position at the specified speed (using the specified acceleration and deceleration) in the direction that results in the shortest move, regardless of the current position of the axis. The position must be a positive value less than the unwind value. Therefore, you cannot perform moves of more than one revolution (that is, more than 360 degrees) with a single rotary shortest path Move Axis block.
206 Motion Blocks Rotary Positive Moves Use the Rotary Positive Move to move a rotary Axis to the desired absolute position in the positive direction. It is a special type of absolute move available only for rotary axes. ! ATTENTION: Use Rotary Positive moves only on rotary axes, and never on linear axes.
Move Axis 207 When you select Rotary Negative, the axis moves to the specified position at the specified speed using the specified acceleration and deceleration in the negative direction, regardless of the current position of the axis. The position must be a positive value less than the unwind value. Therefore, moves of more than one revolution (that is, more than 360 degrees) cannot be performed with a single rotary negative Move Axis block.
208 Motion Blocks Current Speed Selecting At Current Speed from the Merge from Jog, Cam, or Gear menu, automatically sets the speed of the move to the current actual speed of the axis. Any speed value or expression is ignored. Under certain conditions, the speed of the merged move may not exactly match the current speed of the axis. See the Merging Different Types of Motion chapter in this manual for a discussion of this situation.
Jog Axis 209 When you select Synchronize with next Move Axis, the block immediately following the Move Axis block must be another Move Axis block. Otherwise, GML Commander does not let you connect the two function blocks. In the example above, you must select Synchronize with next Move Axis in the first three Move Axis blocks—but not in the last block—to start all four axes simultaneously.
210 Motion Blocks • Axis_status = 2 (Jogging). • Lock_status = 0 (Unlocked). When the jog is done: • Jog_status = 0 (false). • Axis_status = 1 (Unlocked). For physical axes, when the jog is done and the position error of the axis is less than the position lock tolerance: • Axis_status = 0 (Locked). • Lock_status = 1 (Locked). See the Axis Locked and Axis Done Conditions chapter of this manual, for a complete discussion of the difference between these conditions.
Gear Axes 211 Current Speed Selecting At Current Speed from the Merge from, Cam, or Gear menu, automatically sets the speed of the jog to the current actual speed of the axis. Any speed value or expression is ignored. Under certain conditions, the speed of the merged move may not exactly match the current speed of the axis. See the Merging Different Types of Motion chapter in this manual for a discussion of this situation.
212 Motion Blocks • Gearing_status = 1 on the slave axis. • Axis_status = 5 if no faults are active on the slave axis. Electronic gearing remains active through any subsequent Jog Axis, Move Axis, or Time Lock Cam blocks for the slave axis. This lets you superimpose electronic gearing motions on the jog, move, or time-lock cam profile motions to create complex motions and synchronization.
Gear Axes Electronic Gearing Master Axis Actual Position M 213 Slave Axis Command Position S Master/Slave Gear Ratio Actual position is the current position of a physical or virtual master axis as measured by an encoder or other feedback device. This is the usual selection—and it is the only selection when the master axis is a master only (physical or virtual) axis—because it usually is the case that you must synchronize the actual positions of two axes.
214 Motion Blocks Because the command position does not incorporate any associated following error or external position disturbances, it is a more accurate and stable reference for gearing. When gearing to the command position of the master, you must command the master axis to move in order to cause motion on the slave axis. See the Installation and Setup manual for your motion controller for more information on command position.
Gear Axes 215 Set Ratio Set Ratio is a required field for the first Gear Axes block in a program. It is an optional field for subsequent Gear Axes blocks, which can be used to change other Gear Axes function block parameters, while retaining the initial Slave: Master Ratio. Real Number Gear Ratios When you select Real in the Set Ratio menu, you define the gear ratio as a real number or expression.
216 Motion Blocks Specifying the gear ratio as a fraction allows the use of irrational numbers (such as 1/3) as gear ratios, with no accumulated positioning errors or round off. Because the master and slave count values do not use the axis conversion constants, and because they are integers, the actual gear ratio relationship between the slave and master axes exactly matches the specified ratio.
Master Velocity Gear Axes 217 Slave Velocity Time Time Axis Jogging Jog_status Gearing_status Ramped Gearing Initiated Jog Stopped; Gearing Turned ON The command position, of both the slave and master axes, is stored as the Strobed_Position when you initiate ramped gearing. Ramped gearing avoids the uncontrolled acceleration or deceleration caused by enabling electronic gearing while the master axis is moving.
218 Motion Blocks When you select Synchronize with next Gear Axes, the block immediately following the current Gear Axes block must be another Gear Axes block, otherwise GML Commander does not let you connect the two blocks. In the example above, Synchronize with next Gear Axes should be selected in the first three Gear Axes blocks—but not in the last block—to start all four axes simultaneously.
Gear Axes 219 Changing virtual master axes on the fly is similar to changing physical Master Only master axes, but with one exception. When the new virtual axis is enabled, the other virtual axis is automatically disabled. Because enabling a virtual axis can take up to 10 milliseconds, there can be a short period of time when no master is active. If the slave axis is moving, this produces a discontinuity in its motion.
220 Motion Blocks Interpolate Axes Use the Interpolate Axes block (for motion controllers with iCODE version 3.0 or later) to move a group of two or more servo axes: • to a specified absolute position or by a specified incremental distance • along a specified linear, circular, or helical path • at a specified speed • at a specified rate of acceleration and deceleration • using a selected motion profile You can move up to four axes simultaneously using linear interpolation.
Interpolate Axes • 221 Interp0_status or Interp1_status = 0 (false). See the Axis Locked and Axis Done Conditions chapter in this manual for more information on axis status during interpolation. See the System Variables chapter in this manual for more information on variables. Profile The vector acceleration and deceleration of interpolated moves can be either a trapezoidal or an S-curve profile. The S-curve profile selection is available only on controllers using iCODE versions 3.6 or higher.
222 Motion Blocks Interpolator 0 Axis 0 Command Position Axis1 Command Position Axis 2 Command Position Axis 3 Command Position Imaginary Axis Command Position Interpolator 1 Axis 0 Command Position Axis1 Command Position Axis 2 Command Position Axis 3 Command Position Imaginary Axis Command Position Like all other high-level motion functions in the motion controller, the interpolator outputs only contribute to the command position of each axis. Thus, other types of motion (gearing, cams, etc.
Interpolate Axes 223 If the axes are orthogonally disposed to each other, and are both currently at absolute position 5, the motion caused by this block is as shown below. Axis 1 Position +Y 5 10 –X Axis 0 Position 5 +X –10 –Y Publication GMLC-5.
224 Motion Blocks The vector speed of the selected axes (assuming an orthogonal Cartesian disposition of axes) is equal to the specified speed in the position units of the X axis per second or percent of the maximum speed of the X axis. The speed of each axis is proportional to the distance traveled by the axis divided by the square root of the sum of the squares of the distances moved by all axes.
Interpolate Axes 225 If the calculated acceleration/deceleration value exceeds the input acceleration/deceleration value, or the calculated velocity exceeds the input speed, an Insufficient Time runtime fault (Runtime_fault = 28) is generated when you execute the block. You can correct this problem if you increase the move’s: • time setting • maximum speed setting • maximum acceleration/deceleration setting.
226 Motion Blocks +Y 10 5 –10 –5 5 –X 10 +X –5 –10 –Y If you had, instead, selected CCW from the Direction menu, the axes would have moved along the arc shown by the dashed line above. Publication GMLC-5.
Interpolate Axes 227 Example 2: Radius Arc Incremental Mode If you are operating in incremental mode, both the end point and center point of the arc are defined in terms of their distance from the current position. If the following bullets are true, and the Interpolate Axes parameters are as shown in the dialog box below, it produces the same motion as shown previously for absolute mode. • Axis 0 is the X axis and is currently located at absolute position –10.
228 Motion Blocks The vector speed of the selected axes is equal to the specified speed in the position units of the X axis per second or percent of the maximum speed of the X axis. Likewise the vector acceleration and deceleration (trapezoidal profile) is equal to the specified acceleration/deceleration in the position units of the X axis per second2 or percent of the maximum acceleration of the X axis.
Interpolate Axes 229 The most frequent cause of bad arcs, other than typographical errors, is incorrect trigonometric calculations, or lack of sufficient precision in the calculations. In the motion controller, the bad arc check is implemented by calculating the radius of the arc at both the start and end points. If the radius of the arc at the end point differs from the radius of the arc at the start point by more than ±0.5%, the arc is deemed a bad arc.
230 Motion Blocks Intermediate Arc Circular Interpolation When you select Intermediate Arc from the Type menu, the selected axes move the specified distances (in Incremental mode), or to the specified destination positions (in Absolute mode), along a circular path which passes through the specified point. The vector speed of the selected axes is equal to the specified speed in the position units of the X axis per second or percent of the maximum speed of the X axis.
Interpolate Axes 231 +Y 10 5 –10 –5 –X 5 10 +X –5 –10 –Y Example 4: Intermediate Arc Incremental Mode If you are operating in incremental mode, both the end point of the arc, and the intermediate point through which the arc passes are defined in terms of their distance from the current position. Publication GMLC-5.
232 Motion Blocks For example, if the following bullets are true, and the Interpolate Axes parameters are as shown in the dialog box below, it produces the same motion as shown previously for absolute mode. • Axis 0 is used as the X axis and is currently at absolute position –10.4 position units • Axis 1 is used as the Y axis and is currently at position –1.
Interpolate Axes 233 Full Circles A complete circle is a special case of a circular arc in which the start and end point of the arc are the same. Example 5: Full Circle in Absolute Mode In Absolute Mode (using either Radius Arc or Intermediate Arc interpolation), the destination for each axis must be exactly equal to the command position of the axis at the beginning of the circle.
234 Motion Blocks +Y 10 5 –10 –5 5 –X 10 +X –5 –10 –Y Example 6: Full Circle in Incremental Mode In incremental mode, the distance for each axis must be exactly zero, as shown below: Publication GMLC-5.
Interpolate Axes 235 Helical Interpolation To enable helical interpolation, you must first enable the third and fourth physical axes (Axis2 and Axis3) in the General page of the Configure Control Options General dialog box.
236 Motion Blocks +Y 10 10 5 (–10,10,–5) (–5,5,–5) –Z –10 (–10,10,5) –5 5 –5 –5 –10 –10 –Y Publication GMLC-5.
Interpolate Axes 237 In this example, the absolute endpoints of the X and Y axes are the same as their start points, because an integral number of complete revolutions were made. If the specified arc angle is not an integer, the endpoints of the X and Y axes are not be the same as their start points. Example 8: Helical Interpolation in Incremental Mode In incremental mode, enter the distance from the current position of both the X and Y axes to the center of the circle in the With Center At fields.
238 Motion Blocks The radius of the helix is the vector distance from the current position of the X and Y axes to the specified center point. In Absolute mode, the radius of the helix is: ( Command Pos. X − Center X )2 + ( Command Pos. Y − Center Y )2 In Incremental mode, the radius of the helix is: ( Center X )2 + ( Center Y )2 The diameter of the helix is twice its radius. Publication GMLC-5.
Interpolate Axes 239 The vector speed of the selected X and Y axes is equal to the specified speed in the position units of the X axis per second or percent of the maximum speed of the X axis. The speed of the selected Z axis is equal to the distance traveled by the Z axis divided by the total arc length of the helix times the specified speed.
240 Motion Blocks If the move segments are not tangential at their intersection, the axes come to a stop between the segments rather than merging smoothly. When merging linearly interpolated motions, only co-linear line segments (those that lie on the same line) can be smoothly merged with each other—any two line segments which are not co-linear are also not tangential.
Interpolate Axes 241 After successfully executing an Interpolate Axes block with Merge from Previous Segment selected, Merge_status_Interp0 or Merge_status_Interp1 = 1 (depending on the selected interpolator) and the merged motion is pending. When the currently executing interpolated motion is done, Merge_status_Interp0 or Merge_status_Interp1 = 0.
242 Motion Blocks Segment N Interpolator Vector Speed Interpolater Vector Speed You can change the vector speed of a merged segment by specifying the desired new speed in an Interpolate Axes block with Merge from Previous Segment selected. If the specified vector speed of the new segment is less than the vector speed of the current segment, the axes decelerate to the new speed at the end of the current segment.
Change Dynamics 243 Change Dynamics The Change Dynamics block changes the following for a servo axis, on-the-fly: • speed of trapezoidal profile moves • speed, acceleration, and deceleration of trapezoidal profile jogs The Change Dynamics function block resides on the Main Palette. Changing Move Dynamics When you select Move in the For current field, you can change the speed of a move in progress by entering a new speed value.
244 Motion Blocks Changing Jog Dynamics Selecting Jog in the For current field, lets you change the speed, acceleration, and/or deceleration of a jog in progress to the specified value. The speed change occurs at the specified acceleration rate (if the new speed is higher than the current speed), or at the specified deceleration rate (if the new speed is lower than the current speed). Important: The Change Dynamics block affects only trapezoidal profile jogs.
Analog Offset 245 Immediately after the Analog Offset block executes, the axis moves from the actual input starting value to find the entered analog setpoint. The direction of the initial move depends upon the sign of the initial input value and the polarity you select in the Analog Offset block.
246 Motion Blocks Analog Offset Control Loop Operation When you use the analog offset function, the controller reads the value from the Flex I/O analog input module, adjusts the polarity if requested, and computes the difference between it and the specified analog setpoint.
Configure Cam • 247 the Analog_Offset_error. The Analog_Offset_setpoint axes system variable is the setpoint specified in the analog offset function block. The Analog_Offset_error is a system variable that contains the calculated difference between the current Flex I/ O analog input and the Analog_Offset_setpoint. These variables are in the same units as those of the predefined Flex I/O analog input module.
248 Motion Blocks Also, use the Configure CAM block’s Auto-Correction dialog box to continuously re-synchronize position-lock cam master and slave axes to registration marks. See Auto-Correction for details. The Configure Cam function block resides on the CAM Palette. Selecting Auto-Correction displays the Auto-Correction page for this dialog box. See Auto-Correction in this section for instructions on the Auto-Correction function.
Configure Cam 249 The cam tables in the motion controller can store any number of individual profiles of any length as long as the total number of points for all profiles does not exceed the capacity of the table. For iCODE versions 3.0 or later (selected in the General page of the Configure Control Options dialog box), each cam table can contain up to 13,000 points, addressed 0 through 12999. For iCODE versions 2.4 or earlier, each cam table can contain up to 2,000 points addressed 0 through 1999.
250 Motion Blocks Configuring Position Lock Cams Selecting Once in the Perform Profile field causes the selected cam profile to execute only once, when initiated by a subsequent Position Lock Cam block. This means that cam motion of the slave axis starts when the master axis moves into the range defined by the start and end points of the profile.
Configure Cam Accel Profile Operating Profile 251 Decel Profile Master Position By configuring the next cam profile as a pending position-lock cam while the current profile still executes, you set the appropriate parameters ahead of time. This makes the transition from the current profile to the pending profile seamless—synchronization between the master and slave axes is maintained.
252 Motion Blocks Current Profile New Profile Slave Position Master Position PCAM_pending_ profile_status Pending (New) Position-Lock Cam Configured See System Variable in the Expression Builder chapter of this manual for more information on variables. Selecting Once in the Perform Profile field causes the new (pending) cam profile to initiate and execute only once, when the master axis passes through either the start or end point of the current profile.
Configure Cam 253 The GML Commander diagram below implements the three-part position-lock cam profile shown earlier. The acceleration profile is first configured and then executed. The operating profile is then immediately configured as a pending positionlock cam which takes effect as soon as the acceleration profile has completed. The operating profile is executed continuously until the stop input is activated, at which time the deceleration profile is configured as another pending position-lock cam.
254 Motion Blocks Auto Correction (Configure Cam) Use Auto-Correction, in conjunction with Auto Registration, to continuously re-synchronize position-lock cam master and slave axes to registration marks. Continuous re-synchronization is necessary when an axis slips, or if the material, upon which the registration marks are printed, is not consistent. To enable auto-correction, you must first enable auto registration for the registering axis with a Watch Control block (set to Arm Registration).
Auto Correction (Configure Cam) 255 Phase Shift and Incremental Auto-Correction Select Phase to perform auto correction only by phase shifting the slave axis relative to the master axis. This is the default selection. All four auto correction types (relative, absolute, relative ratioed, and absolute ratioed) use phase shift auto correction, whether or not you select Phase (even if you select Incremental).
256 Motion Blocks When a good registration event occurs on the registering axis, the PCAM_good_registration_count axis variable is incremented and the absolute position is subtracted from the appropriate registration position to determine the registration error. This calculated registration error is then used to phase shift the slave axis via a dedicated auto-correction indexer. See Phase Shift Moves in Move Axis in this section for more information on phase shift moves.
Auto Correction (Configure Cam) 257 • the PCAM_registration_error variable displays the current registration error value • the PCAM_average_registration_error variable displays the average registration error over the last ten registrations • the PCAM_auto_correction_to_go variable displays the current remaining distance to go of the auto-correction indexer • the PCAM_good_registration_count variable displays the current number of good registration events • the PCAM_bad_registration_count variable
258 Motion Blocks ATTENTION: Using auto-correction to correct large errors can cause harsh motion and result in damage to both equipment and materials. ! To allow rejecting spurious registration events, specify a tolerance around the target position by selecting Tolerance, and enter a value or expression equal to the desired target position tolerance in the data entry box.
Auto Correction (Configure Cam) 259 Relative Auto-Correction Relative Auto-Correction automatically corrects for error trends in the distance between registration events via a phase shift move of the slave axis as shown below. Publication GMLC-5.
260 Motion Blocks When a good registration event occurs on the registering axis, the PCAM_good_registration_count axis variable is incremented and the previous registration position is subtracted from the appropriate registration position to determine the distance between this registration event and the last one. The specified nominal length is then subtracted from this registration distance to determine the registration error.
Auto Correction (Configure Cam) 261 • the current remaining distance to go of the auto-correction indexer is available in the PCAM_auto_ correction_to_go variable • the current number of good registration events is available in the PCAM_good_registration_count variable • the current number of consecutive out-of-tolerance registration events is available in the PCAM_bad_registration_count variable • and the current number of consecutive missed registration events is available in the PCAM_missing_reg
262 Motion Blocks To allow rejecting spurious registration events, a tolerance may be specified around the nominal length by selecting Tolerance, and entering a value or expression equal to the desired nominal length tolerance in the data entry box. The specified tolerance is interpreted as a ± quantity around the specified nominal length and used to distinguish good registration events from bad ones, as shown below.
Auto Correction (Configure Cam) 263 In most applications, the last registration position value should be equal to the ideal registration position within the product cycle. If you do not select Last Registration, the value of the last registration position upon the occurrence of the first good registration event is undefined, in which case the controller does not perform a phase correction.
264 Motion Blocks See Phase Shift Moves in the Move Axis section of this chapter for more information on phase shift moves. See Absolute Auto-Correction in this section for more information on the operation of absolute ratioed autocorrection. ! ATTENTION: Be sure to enter the master axis cycle and registering axis cycle values in feedback counts, not position units.
Auto Correction (Configure Cam) 265 When a good registration event occurs on the registering axis, the PCAM_good_registration_count variable for the axis is incremented. The previous registration position is subtracted from the registration position of the registering axis to determine the distance between this registration event and the last in the position units of the registering axis. The nominal length is then subtracted from this registration distance to determine the registration error.
266 Motion Blocks The corresponding parameters for relative ratioed auto-correction are the same as those for relative auto-correction with the exception that the nominal length, tolerance, no correction start point, no correction end point, and last registration values are entered in the position units of the registration axis, not the master axis.
Auto Correction (Configure Cam) 267 Soft Registration The Soft_Reg_Pos_Master Axis_Registering Axis variable is used as the registration position for auto-correction if you selected either absolute or relative as the auto-correction type and the registering axis is not the same as the master axis. For example, if you select AXIS0 as the master axis, and AXIS1 as the registration axis, the Soft_Reg_Pos_AXIS0_AXIS1 variable is used as the registration position for auto-correction.
Motion Blocks Auto-Correction Speed 268 Short Correction (or Neg Short Override) Speed Long Correction (or Neg Long Override) Speed Short Correction Distance Auto-Correction Distance to Go Auto-correction speed is set to: • Long Correction (or Neg Long Override) Speed if the magnitude of the current auto-correction distance-to-go is greater than the specified Short Correction Distance, • Short Correction (or Neg Short Override) Speed percentage of the current velocity of the Master Axis, if not.
Auto Correction (Configure Cam) 269 Note that the short correction (negative short override) speed, as represented in the above figure, is faster than the long correction (negative long override) speed. This optional relationship is typical: short corrections can be made quickly, while larger corrections are usually less to avoid exceeding speed or acceleration limitations of the slave axis.
270 Motion Blocks Time Lock CAM The Time Lock Cam block executes a time-lock cam profile created by a previous Configure Cam block, on the selected servo or imaginary slave axis, in the selected direction. Time-lock cams allow the execution of motion profiles other than trapezoidal, S-curve, or parabolic. No maximum velocity, acceleration, or deceleration limits are used for timelock cams.
Time Lock CAM 271 See the Axis Locked and Axis Done Conditions chapter of this manual for a complete discussion of the difference between these conditions. See the System Variables chapter of this manual for more information on variables. ! ATTENTION: Time lock cams neither recognize nor use the maximum speed, acceleration, or deceleration values set in the Dynamics page of the Configure Axis Use dialog box, or in a Motion Settings function block. Time-lock cams are fully interpolated.
272 Motion Blocks Merge from Jog Select Merge from Jog to let a previously programmed Jog Axis block smoothly ramp the axis to the proper speed before the Time Lock Cam block is executed. This is useful when the cam must be run continuously, but the specified profile has a non-zero velocity at the start/end point.
Time Lock CAM 273 Scaling Time Lock Cams Axis Position You can scale a time-lock cam profile in both time and distance when it is executed. Selecting Scale Profile uses the stored profile for only the shape of the motion, and scales the profile definition by the total time and distance over which the profile is to be executed, as shown below.
274 Motion Blocks ! ATTENTION: When you use scaling to decrease the total time, or increase the total distance of a time-lock cam, the required velocities and accelerations of the profile increase. This causes a motion fault if the increased velocities and accelerations exceed the drive system’s capabilities. Increasing the total time of a cam profile decreases the velocities and accelerations of the profile, while increasing the total distance increases the velocities and accelerations of the profile.
Position Lock CAM 275 Position lock cams neither recognize nor use the maximum speed, acceleration, or deceleration values entered in the Dynamics page of the Configure Axis Use dialog box, or in a Motion Settings function block. . Then: A position-lock cam is initiated and is active for the axis PCAM_status = 1 (true). The cam has been initiated and the specified master axis is within the range defined by the master cam table PCAM_profile_status = 1.
276 Motion Blocks See the System Variables chapter of this manual for more information on these variables. Note that the cam is not automatically disabled when the master axis moves out of the range defined by the master cam table. See Disable PCAM and Stop Motion sections for more information on disabling and stopping position-lock cams. Position-lock cams are fully interpolated.
Position Lock CAM 277 Slaving to the Actual Position When you select Actual from the Slave to menu, the actual position of the master axis generates the position-lock cam motion on the slave axis, as shown below. Position-Lock Cam Master Axis Actual Position Slave Axis Command Position Master Position Actual position is the current position of a physical or virtual master axis as measured by its encoder or other feedback device.
278 Motion Blocks Because the command position does not incorporate any associated following error or external position disturbances, it is a more accurate and stable reference for camming. When camming to the command position of the master, the master axis must be commanded to move in order to cause any motion on the slave axis. See the Installation and Setup manual for your motion controller for more information on command position.
Slave Axis Position Position Lock CAM Master Reference Position 279 Profile Stored in Cam Tables . Master Axis Position 1 PCAM_profile_status 0 1 PCAM_status 0 Position-Lock Cam Initiated When the absolute position of the master axis passes the specified master axis reference position and enters the range defined by the master cam table, PCAM_profile_status for the specified slave axis is set to 1 and slave axis motion is initiated according to the specified profile.
280 Motion Blocks The position-lock cam motion starts when the master axis position passes the specified master reference position. Once the cam starts, however, the master axis can change direction while in the defined profile range and the slave axis reverses accordingly.
Position Lock CAM 281 When you select Synchronize with Next PCam, the block immediately following the position-lock cam block must be another Position Lock Cam block or GML Commander does not permit you to connect the two blocks. In the example above, select Synchronize with Next PCam in the first two Position Lock Cam blocks—but not in the last block—to start all three axes simultaneously.
282 Motion Blocks To scale a position-lock cam profile, select Scale Profile and enter the desired total master distance (in the position units of the master axis) and total slave distance (in position units of the slave axis) over which the profile is to be executed. To scale a profile only in: Do this: Master distance Enter a total slave distance equal to the distance moved by the slave axis when the profile is executed without scaling (as implied by the defined profile in the slave cam table).
Position Lock CAM 283 Moving While Camming You can use an incremental Move Axis block on the slave axis (or master axis if configured for servo operation) while the position-lock cam is operating. This is particularly useful to accomplish phase advance/retard control. The incremental move distance can be used to eliminate any phase error between the master and the slave, or to create an exact phase relationship.
284 Motion Blocks Disable Position Lock CAM The Disable Position Lock CAM block stops the position-lock cam currently executing on the selected Axis. The axis is stopped immediately with no deceleration. The Disable Position Lock Cam block resides on the CAM Palette. Stopping the PCAM Smoothly When you select Continue Jog at last slave speed, the position-lock cam motion is stopped by blending it into a jog at the current speed of the axis.
Disable Gearing 285 Disable Gearing The Disable Gearing block immediately stops the electronic gearing motion of the selected Axis with no deceleration. If gearing is the only motion in progress on the axis, the axis stops. The Disable Gearing function block resides on the Main Palette. Stopping Gearing Smoothly When you select Continue Jog at last master speed, the electronic gearing motion is stopped by blending it into a jog at the current speed of the axis.
286 Motion Blocks The Stop Motion block (except when Kill Control is selected) stops the selected type of motion by blending that motion into a jog at the current speed of the axis, then stopping the jog at the specified deceleration rate using the jog profile set in the Positioning page of the Configure Axis Use dialog box. You can use this block to stop a specific type of motion on an axis and leave other motion unaffected.
Stop Motion • resets all servo outputs to zero • deactivates all drive enable outputs • disables the CPU Watchdog • aborts the program. 287 Use this block only in an emergency situation when the motion controller must be disabled quickly. Note: The stopping rate of the axes depends on the type of amplifier and the specific connections utilized, because the motion controller no longer controls the axes after this block executes.
288 Motion Blocks Publication GMLC-5.
Chapter 11 I/O and Event Blocks I/O and Event blocks control discrete I/O as well as registration, timer, and position events. The following table presents the icons for each block in this category along with a brief description. More detailed descriptions of the blocks are contained on the pages following this table. Use this block: To: Directly and immediately turn on or turn off a single Flex I/O, general purpose, RIO, SLC, or AxisLink discrete output.
290 I/O and Event Blocks Use this block: To: • Arm a watch position event to occur when the selected physical or imaginary axis reaches the setpoint position. • Disarm a previously armed watch position event that has not yet occurred. • Arm a registration event to store the actual positions of all physical and virtual axes, and the command position of the imaginary axis on the specified edge of a dedicated high-speed registration input. • Disarm a registration event, which has not yet occurred.
Output Use this block: 291 To: Repeat the sequence—or loop—of blocks connected to this block’s bottom output node and input node, a specified number of times. Output The Output block directly and immediately turns on or off a single Flex I/O, general purpose, RIO, SLC, or AxisLink discrete output. Use the Tag Explorer field to select an output type. At the Tag Window select the specific output to turn ON or OFF. The Output block resides on the Main Palette.
292 I/O and Event Blocks When you enable an output cam, the selected discrete output is no longer available for use in an Output block. When you disable an output cam, the output again becomes available for use in an Output block as a standard discrete output. Until the discrete output is re-used, and given a new value by the application program, it retains its current value.
Output CAM 293 The AxisLink virtual axes are functionally equivalent to physical master only axes, therefore you can select a virtual axis for output cams. However, only one of the two available virtual axes can be enabled at one time—enabling one virtual axis automatically disables the other virtual axis (if it was previously enabled). Before you use an AxisLink virtual axis for an output cam, you must first enable it with a Virtual Axis Control block.
294 I/O and Event Blocks Command position is a more stable reference for camming, because it does not incorporate any associated following error or external position disturbances. When you use the command position, the selected axis must be commanded to move in order to cause any output cam transitions. See the Installation and Setup manual for your motion controller for more information on command position.
Output CAM 295 0 + Output Cam Rotary Axis Start of Window End of Window ON Position Window OFF Axis Position Actuation Delay Solenoids, valves, relays, etc. have a delay between the following: • the time when the electrical actuating signal is applied. • the moment the device actually turns on. You must consider this actuation delay time to ensure that the device actually turns on at the correct position, and is not merely commanded to turn on at the correct position.
296 I/O and Event Blocks Phase Advance Proximity Switch Cam Wheel With output cams, the actuation delay value compensates for the intrinsic device actuation delay. Enter the actual actuation delay of the device in seconds. Make sure to include significant delays in any optical isolation circuitry. As the speed of the axis increases, the position window advances proportionally to the speed of the axis and the actuation delay value.
Input 297 This ensures that the device turns on at the selected axis position regardless of axis speed. Output cam with actuation delay is most accurate when the delay is short and the speed constant. Sharp acceleration near the point where the output must be actuated may cause inaccuracies in the timing of the output, and may even cause some flickering of the output as the axis enters and exits the cam window. Use command position rather than actual position whenever possible, because it is smoother.
298 I/O and Event Blocks Type The Type field determines the function to be performed. The three options are: • Wait for Input On • Wait for Input Off • If Input Require OFF to ON Transition When you select Wait for Input ON, you enable the Require OFF to ON transition field. If you select Require OFF to ON Transition, the program pauses until the selected input turns off and then on again.
Input 299 Input Class There are three options for the Input Class field: • Configured – causes the Configured tab to display for access to the Configured page. • Dedicated – causes the Dedicated tab to display for access to the Dedicated page. • Miscellaneous – causes the Miscellaneous tab to display for access to the Miscellaneous page. Configured To complete the definition of a configured input, make entries in the following fields: • Tag Explorer – Select an input type from the tree control.
300 I/O and Event Blocks Turbo controllers). • The Axis selected, above (e.g., for AXIS1 on a 1394L controller, only the Registration, Encoder Loss, and Marker State selections apply). On Axis Use the On Axis block to execute the following commands: • Wait for Axis pauses program flow until the status of a selected axis or interpolator is true. • If Axis monitors the status of a selected axis or interpolator.
On Axis 301 Status The available status selections vary, depending upon the type of command—Wait for Axis or If Axis, the selection of axis or interpolator, and the particular axis selected. The following table lists the available status selections depending upon these combinations. Although not listed below, note that the only available status selections for a master only axis are Homing (If Axis) or Homing Done (Wait for Axis).
302 I/O and Event Blocks Available Status Selections ( S = Servo; V = Virtual; I = Imaginary ) Status Wait for Axis Mode If Axis Mode Axis Axis S V I Interpolator S V I Interpolator ✔ Merge Pending ✔ Merging Done ✔ Moving Moving Done ✔ Output Limited ✔ ✔ ✔ ✔ Accelerated When you select Accelerated in Wait for Axis mode, the current task pauses until either of the following occurs as shown below: the selected servo axis is no longer accelerating (Accel_status = 0) due to a Move Axis
On Axis 303 Accelerating When you select Accelerating in Wait for Axis mode, the current task pauses until either of the following occurs as shown below: • the selected servo axis is accelerating (Accel_status = 1) due to a Move Axis or Jog Axis block • the selected interpolator is accelerating due to an Interpolate Axes block (Accel_status_Interp0 or …Interp1 = 1) Velocity Program Pauses Until This Point Time When you select Accelerating in If Axis mode, the current task branches to the top (true)
304 I/O and Event Blocks Axis Not Accelerating (0) Velocity Axis Accelerating (1) . Time See Move Axis, Jog Axis, Interpolate Axes and Stop Motion for more information on moving, jogging, interpolating, and stopping axes. Any acceleration caused by electronic gearing, time-lock cams, or positionlock cams does not affect the accelerating status in the On Axis block.
On Axis 305 Program Pauses Until This Point Velocity . Time See Move Axis, Jog Axis, Interpolate Axes, and Stop Motion for more information on moving, jogging, interpolating, and stopping axes. Any deceleration caused by electronic gearing, time-lock cams, or positionlock cams does not affect the decelerated status in the Wait for Axis block.
306 I/O and Event Blocks When you select Decelerating in If Axis mode, the program branches to the top (true) node if one of the following occurs as shown below: • the selected servo axis is decelerating (Decel_status = 1) due to a Move Axis or Jog Axis block • the selected interpolator is decelerating due to an Interpolate Axes block (Decel_status_Interp0 or …Interp1 = 1) .
On Axis 307 Gearing On When you select Gearing On in: The: Wait for Axis mode Current task pauses until electronic gearing on the selected servo axis is on (Gearing_status = 1). If Axis mode Program branches to the top (true) node if electronic gearing on the selected servo axis is on (Gearing_status = 1). Gearing Opposite When you select Gearing Opposite in: The: Wait for Axis mode Current task pauses until the direction of electronic gearing on the selected servo axis is opposite.
308 I/O and Event Blocks Interpolating / Interpolating Done When you select Interpolator and status: In: The: Interpolation Done Wait for Axis mode Current task pauses the selected interpolator is no longer causing axis motion on any axis (Interp0_status or Interp1_status = 0). Interpolating If Axis mode Program branches to the top (true) node if the selected interpolator is currently commanding its axes to move (Interp0_status or Interp1_status = 0).
On Axis 309 Locked When you select Locked in: The: Wait for Axis mode Current task pauses until the selected physical axis is locked onto its command position (Lock_status = 1). If Axis mode Program branches to the top (true) node if the selected physical axis is locked onto its command position (Lock_status = 1).
310 I/O and Event Blocks The position lock tolerance is set in the Positioning page of the selected axis Configure Axis Use dialog box, and specifies how much position error the motion controller tolerates in a locked condition. It is one of the factors that determines positioning accuracy. The Position Lock Tolerance value is interpreted as a ± quantity. Programmed Position Lock Tolerance Value Position Lock Tolerance – 0.
On Axis 311 When you select Moving Done in Wait for Axis mode, the current task pauses until the selected physical or imaginary axis is done moving (Move_status = 0). See Move Axis for information on moving axes and Stop Motion for information on stopping moves. See the Axis Locked and Axis Done Conditions chapter in this manual for further discussion of the moving done status condition. See Move Axis, Time Lock Cam, and Stop Motion for information on starting and stopping moves and cams.
312 I/O and Event Blocks Once the stop is engaged, the axis position is then re-defined to be the known position of the stop and the motion is stopped. Watch Control Use the Watch Control block to: • Arm a watch position event to occur when the selected physical or imaginary axis reaches the setpoint position. (See Arm Watch Position.) • Disarm a previously armed watch position event that has not yet occurred. (See Disarm Watch Position.
Watch Control 313 The Watch Control block, with Arm type and Watch Position class selected, sets up a watch position event that occurs when the selected physical or imaginary axis reaches the specified position.
314 I/O and Event Blocks Wait for Tripped If you select Wait for Tripped, the program pauses until the watch position event occurs. When it does, the program continues with the next block. If other tasks are executing (multitasking), the task that contains this block pauses but the other tasks continue to execute. In this way, a Wait for Tripped selection in one task does not pause execution of any other tasks or hang the task dispatcher.
Watch Control Registration Input Registration_status =0 Registration Event Set Up 315 Registration_status =1 Registration Event Occurs After the registration event occurs, the Registration_status variable for the axis is 1 (true). See the System Variables chapter of this manual for more information on variables.
316 I/O and Event Blocks For linear axes, the values can be positive, negative, or a combination. However, the minimum position value must be less than the maximum position value for the registration event to occur. For rotary axes, both values must be less than the resultant value derived from dividing the conversion constant by the unwind constant (both set in Feedback page of the Configure Axis Use dialog box).
Watch Control 317 If you did not select Wait for Tripped, the Watch Control block with Arm and Registration selected sets up the registration event, and the program continues with the subsequent blocks while the registration event is monitored in the background. Auto Rearm Input When you select Auto Rearm Input, the registration event is automatically re-configured as specified in the Watch Control block with Arm and Registration selected, whenever a registration event occurs on the selected axis.
318 I/O and Event Blocks Only one of the two available virtual axes can be enabled at one time— enabling one virtual axis automatically disables the other virtual axis if it was previously enabled. Thus, to set up a registration event on an AxisLink virtual axis, the virtual axis must first be enabled using a previous Virtual Axis Control block.
Watch Control 319 If the specified condition is not true when the Watch Control block is executed, program flow branches to the bottom (false) node of the block. When the selected watch position event occurs (regardless of what part of the diagram is executing), the block connected to the top (true) node of the Watch Control block is immediately executed. You can activate multiple watch position events—one for each physical, virtual, or imaginary axis—at any given time.
320 I/O and Event Blocks Event Action Computations Watch position actions are fast because the event action block (connected to the top (true) node of the Watch Control block) is completely evaluated when the Watch Control block executes, and is ready for instant response when the watch position event occurs. Therefore, any variables used in the event action block are evaluated once, immediately when the Watch Control block is executed.
Watch Control 321 If you select the Equation block as the action block, you can only use it to save the actual or command position of an axis to a user variable. If the selected condition is not true when the Watch Control block executes, program flow branches to the bottom (false) node of the block. When the selected input event occurs (regardless of what part of the diagram is executing), the block connected to the top (true) node of the Watch Control block immediately executes.
322 I/O and Event Blocks Input event actions are fast because the event action block (connected to the top (true) node of the Watch Control block) is completely evaluated when the Watch Control block executes and, is ready for instant response when the input event occurs. Therefore, any variables used in the event action block are evaluated once, immediately when the Watch Control block executes. The event action block should not itself use any expressions that depend on the occurrence of the input event.
On Watch 323 If you selected Wait for Tripped in the Watch Control block, do not use an On Watch block, with Wait for Position Event selected. If you do, the program waits for the same event twice. The Wait for Position Event type requires no parameters, simply select the desired physical or imaginary axis. If other tasks are executing (multitasking), the task which contains this block pauses, but the other tasks continue to execute.
324 I/O and Event Blocks If other tasks are executing (multitasking), the task which contains this block pauses but the other tasks continue to execute. In this way, a Wait for Registration selection in one task does not pause execution of any other tasks or hang the task dispatcher. If Registration The If Registration type evaluates a previously configured registration event for the selected axis, without pausing the program.
On Timeout 325 If you select Wait for Timeout, program execution halts until the timer times out. When it does, the program continues with the next block. If other tasks are executing (multitasking), the task which contains this block pauses but the other tasks continue to execute. In this way, a Wait for Timeout selection in one task does not pause execution of any other tasks or hang the task dispatcher.
326 I/O and Event Blocks When multiple tasks are executing (multitasking), you can use an If Timeout block in one task to evaluate a timer set in another task, even if you selected Wait for Timeout in the Set Timer block. Wait for Timeout The Wait for Timeout selection pauses the program until the selected count down timer has timed out. The selected timer must have been set up previously using a Set Timer block.
If Axis Fault 327 Axis Faults S M O Description Runtime Display V AxisLink Timed Out AXL FLT ✔ AxisLink Failed (axis not found) AXL FLT ✔ Drive Fault DRV FLT ✔ Position Limit Exceeded ERR FLT ✔ Hardware Overtravel Fault HRD LIM ✔ Software Overtravel Fault SFT LIM ✔ Encoder Loss or Noise Fault ENC FLT ✔ I ✔ Note: In the table above, the columns at the right show whether each fault value is valid for servo (S), master only (MO), virtual (V), or imaginary (I) axes.
328 I/O and Event Blocks Checking for Any Fault on a Specific Axis When you select Any Fault Specific Axis, program flow branches to the top (true) node if any of the faults shown in the previous table are active on the selected axis. Checking for Specific Faults on an Axis When you select Specific Fault, program flow branches to the top (true) node only if the fault, selected from the Fault drop-down menu, is active on the selected axis.
Chapter 12 Program Control Blocks Program Control blocks provide a convenient way of intelligently restarting and ending the application program. Blocks for restarting and ending the program are included in this section. The following table presents the icons for each block in this category along with a brief description. More detailed descriptions of the blocks are contained on the pages following this table.
330 Program Control Blocks Restart Type When the program is restarted using the Restart selection, multitasking is turned OFF, all loop counters are set to zero, and the subroutine call stack is reset. This ensures that the diagram restarts with all critical program control registers in a known state. The program then restarts from a Restart Program block, with When Restart type selected (if the diagram contains one) or from the block (if there is no Restart Program block with When Restart type selected).
Restart Program 331 The Restart Program block, with When Restart selected, must be used with another Restart Program block with Restart selected. Otherwise a Restart Program block with When Restart selected does nothing. A GML Commander diagram can contain any number of Restart Program blocks with Restart selected, to restart the program from many different places, but the diagram can contain only one Restart Program block with When Restart selected.
332 Program Control Blocks End Program Use the End Program block to: • Stop the execution of your GML Commander program. • Provide a marker in the diagram that leads to other program blocks, which must be executed prior to ending the GML Commander program, when a fault occurs or when the program is intentionally stopped. The End Program block resides on the Main Palette. End Type The End Program block, with End selected, stops the application program.
End Program 333 An End type block, in the When End or Fault sequence, unconditionally stops all tasks and ends the program. When End or Fault Type Select the When End or Fault option to provide a marker in the diagram that leads to the execution of any required blocks when a fault occurs, or when the program is intentionally stopped. A diagram can contain only one End Program block, with When End or Fault selected.
334 Program Control Blocks If you selected, in the End Program block with When End or Fault selected, either of the following the shutdown routine also executes if a runtime or global fault (respectively) occurs.
End Program 335 Global Faults A diagram that includes an End Program block with both When End or Fault and Go to When End if Global Fault Occurs selected, causes the program flow to branch to the When End or Fault type block when either of the following occurs: • a global fault occurs (Global_fault ≥ 0) • an End type block executes. This provides a convenient mechanism for building a fault handling routine.
336 Program Control Blocks ! ATTENTION: An End Program block, with End selected, in the fault handler unconditionally ends the program. Unlike an End Program block with End selected elsewhere in the diagram (which executes the When End or Fault type block), an End Program block with End selected in the fault handler itself unconditionally stops all tasks and ends the program.
End Program 337 If multitasking was not enabled when the fault occurred and the End Program block with When End or Fault selected was executed, the program can be re-started via a Restart Program block after the fault is cleared, as shown below. ! ATTENTION: Do not connect the output node of the Fault Handler module directly back to a previous block in the diagram.
338 Program Control Blocks ! ATTENTION: Do not use a Task Control block, with Start New Task selected, in the fault handler The Task Control block, with Restart Dispatcher selected, immediately turns multitasking ON again and re-activates all tasks (including the main task) which were active when the fault occurred. Each task continues from where it was interrupted when the fault occurred. Do not use a Task Control block with Start New Task selected to start or restart tasks in the fault handler.
End Program ! 339 ATTENTION: Blocks following a Resume Task 0 block, in the When End or Fault sequence, are not executed. When using this technique, it is important that task 0 (the main task) be the last task resumed. Once task 0 is resumed, the When End or Fault sequence is aborted and any blocks following a Resume Task 0 block are not executed. As with any Task Control block, with Resume Task selected, each task continues from where it was interrupted when the fault occurred.
340 Program Control Blocks Publication GMLC-5.
Chapter 13 Multitasking Blocks Multitasking blocks control the starting and stopping of multiple independent tasks (multitasking) in the motion controller. The motion controllers allow execution of up to ten separate tasks simultaneously. The following table presents the icons for each block in this category along with a brief description. More detailed descriptions of the blocks are contained on the pages following this table.
342 Multitasking Blocks Multitasking Operation In the motion controllers, multitasking operates by means of a software device, called a task dispatcher, that constantly shifts its focus among all active tasks. If two tasks are active, the task dispatcher executes a block from the first task, then executes a block from the second task, then returns to execute the next block in the first task, and so on in alternation.
Task Control • 343 Turn on multitasking by re-enabling the previously disabled task dispatcher (Restart Dispatcher Type). The task control block resides on the Main Palette. Start New Task Start New Task enables multitasking and begins execution of a new task while execution of the current task continues. The new task blocks are attached to the bottom node, and the remaining current task blocks are attached to the top node.
344 Multitasking Blocks When starting multiple tasks, make sure that each task has a unique task number. Task numbers should not be re-used until the current task using that number is stopped (see Stop Current Task and Stop Other Task). Otherwise, unexpected program execution and machine operation may occur. Sometimes it is necessary to loop program flow to the beginning of a task. When you do this, be sure to make your connections at the correct point in your program.
Task Control 345 By contrast, the following diagram presents an example of incorrect looping, and causes a runtime error that ends program execution. Stop Current Task Stop Current Task stops execution of the task with the Task Control block and Stop Current Task selected. Think of each task as a separate concurrent program. Thus, stopping a block in a diagram, when task is equivalent to reaching the multitasking is not enabled.
346 Multitasking Blocks Stop Other Task Stop Other Task stops execution of the selected task. As each task can be thought of as a separate concurrent program, stopping a task is equivalent to the block in the diagram when multitasking is not enabled. However, unlike the end of a diagram, a stopped task can be resumed. See Resume Task, below, for more information on resuming tasks. After you stop a task, you can re-use the task number for another task.
On Task 347 Unlike the Stop Current Task and Stop Other Task type commands— block in a diagram without which are equivalent to the multitasking—the Stop Dispatcher command suspends execution of all other tasks. It is sometimes useful to suspend multitasking briefly to accomplish time critical functions or calculations as quickly as possible, or to ensure full control over the operator interface so that multiple tasks do not interfere with each other.
348 Multitasking Blocks • been suspended by a Task Control block with Stop Dispatcher type selected • been stopped by a Task Control block with either Stop Current Task type or Stop Other Task type selected Wait for Task Wait For Task pauses the program until the selected task is running. If other tasks are executing (multitasking), the task which contains this block pauses, but the other tasks continue to execute.
Chapter 14 Status Blocks Status blocks report the status of the motion controller to the operator interface serial port. Blocks for reading axis position, axis status, discrete input status and controller memory status are included in this section. The following table presents the icons for each block in this category along with a brief description. More detailed descriptions of the blocks are contained on the pages following this table.
350 Status Blocks When you select DH-485 Link in the Configure Control Options dialog box, serial port B on the motion controller is used for DH-485 communication and the normal built-in operator interface functions of GML Commander and the motion controllers are unavailable. The Status blocks may still be used for troubleshooting, however, if you select serial port A for the operator interface.
Show Axis Status 351 Axis Status Values Status Value Description Runtime Display 14 AxisLink Timeout AXL FLT ✔ 13 AxisLink Failed (axis not fount) AXL FLT ✔ 12 Virtual Axis Not Enabled AXS OFF ✔ 11 Drive Fault DRV FLT ✔ 10 Position Error Tolerance Fault ERR FLT ✔ 9 Hardware Overtravel Fault HRD LIM ✔ 8 Software Travel Limits Fault SFT LIM ✔ 7 Encoder Noise or Loss Fault ENC FLT ✔ ✔ 6 Feedback OFF or SRV OFF ✔ ✔ Virtual Axis Enabled SRV OFF 5 Servo Output Limite
352 Status Blocks Axis status conditions are prioritized from highest to lowest as shown in the previous table. The higher the status value, the higher its priority or severity. For example, a hardware overtravel fault has higher priority than a servo output limited condition. When a given status is active, other status conditions of lower priority can also be active. If a hardware overtravel fault is active for an axis, a servo output limited or feedback off condition can also be active on the axis.
Show Input Status 353 Input – Select the dedicated axis input, the status of which (ON or OFF) will be read. The available selections depend upon the Controller Type selected in the General page of the Configure Control Options dialog box and the Axis selected, above. The status displayed is the current physical state (ON or OFF) of the input.
354 Status Blocks Show Program Status The Show Program Status block sends to the operator interface serial port: • The current status of the application program or of a selected task, or the current value of the Runtime_fault variable (Show Program Status Type). • The motion controller’s operating system firmware number (Show Firmware ID Type).
Show Program Status 355 Specific Task Status The Specific Task option displays the execution status of the task selected Task Number menu at the operator interface. The following table shows the Task Values and their descriptions. Program Task Values Task Value: Description: 2 Task Suspended 1 Task Running 0 Task Stopped or Never Started A task is running after it has been started or resumed by a Task Control block, with either Start New Task or Resume Task selected.
356 Status Blocks The firmware number contains eight characters, formatted as shown in the table below. Firmware Numbering System: AAABBC.DE Field Description Value AAA Product Number 1394 1394 Turbo Compact S Class Integrated/Basic 295 308 303 238 BB Firmware Configuration 00 or 10 C.D Firmware Version 3.
Show Program Status 357 Setup Data If a Setup Data Memory Status type displays a 1—indicating corruption of the setup parameters—verify that all setup parameter values are correct by reviewing the data within the Configure Control Options and Configure Axis Use dialog boxes for each enabled axis. Then, with Download Axis/Drive Data enabled within the Configure Control Options dialog box, re-download the application program.
358 Status Blocks Publication GMLC-5.
Chapter 15 AxisLink Blocks AxisLink blocks control the operation of AxisLink and are used only with motion controllers with AxisLink (1394-SJTxx-, 1394-SJTTxx, C-RL, and IMC-S/2xx-L models). Blocks for enabling and disabling virtual axes, reading user variables, data parameters, and data bits from other motion controllers on AxisLink, and clearing AxisLink faults are included in this section. The following table presents the icons for each block in this category along with a brief description.
360 AxisLink Blocks Virtual Axis Control The Virtual Axis Control block enables and disables AxisLink virtual axes. When you enable a virtual axis, you can use it as the master axis for electronic gearing and position-lock cams, just as if it were another physical master only axis. Only one of the two available virtual axes can be enabled at the same time—enabling one virtual axis automatically disables the other virtual axis. The Virtual Axis Control block resides on the Advanced Motion Palette.
Read Remote Value 361 Selecting Wait for Linked halts execution of the program until the virtual axis is in the selected On state. Because enabling a virtual axis can take up to 10 milliseconds, this guarantees the virtual axis is ready before it is used in subsequent blocks. In most cases, you should select Wait for Linked. If other tasks are executing (multitasking), the task that contains this block pauses while the other tasks continue to execute.
362 AxisLink Blocks The AxisLink_general_fault variable indicates whether or not the attempted AxisLink connection was successful. It has a value of 1 (true) if there has been an AxisLink timeout attempting to read the value from the remote motion controller and 0 (false) if not. When AxisLink_general_fault = 1, Global_fault = 8 if no other faults of higher priority are active on any axis.
Reset AxisLink Fault 363 The Reset AxisLink Fault block sets the AxisLink_timeout, AxisLink_failed, and AxisLink_general_fault variables to zero. The Reset AxisLink Fault block only removes the fault status, it does not perform any other recovery such as re-enabling the virtual axis. You should handle AxisLink faults as part of a global fault handling task or routine in the diagram.
364 AxisLink Blocks Publication GMLC-5.
Chapter 16 RIO Blocks Use RIO blocks, together with an Allen-Bradley PLC, to check RIO status, control block transfers, and automatically update formatted data groups via RIO. The following table presents the icons for each block in this category along with a brief description. More detailed descriptions of the blocks are contained on the pages following this table. Use this block: To: Check the RIO interface and send the resulting status value to the operator interface serial port.
366 RIO Blocks Show RIO Status Use the Show RIO Status block to check the RIO interface and send the resulting status value to the operator interface serial port. The Show RIO Status block resides on the RIO Toolbar. The Show RIO Status block requires no parameters, and has no dialog box.
On RIO 367 On RIO Use the On RIO block to: • Pause the current task until the selected RIO status condition is true. • Evaluate the status of RIO communications. • Pause the current task until the motion controller detects either a block transfer read (BTR) or write (BTW) from the RIO scanner. Evaluate whether motion controller detects a block transfer read or block transfer write from the RIO scanner The On RIO block is on the RIO Toolbar.
368 RIO Blocks RIO Status Conditions You can also determine the RIO status from the color of the diagnostic LED for each channel on the front panel of the RIO option. RIO Status Conditions Description LED Color Non-Recoverable Fault Red Recoverable Error (Failing) Blinking Red Standby Blinking Green Offline Off Online Green The Remote I/O Status Conditions are explained below.
On RIO 369 Recoverable Error When you select Recoverable Error from the RIO Status menu, the current task pauses until (Wait for RIO Status), or branches to the top— true—node if (If RIO Status), the Remote I/O link is failing due to transmission errors. This means that the RIO link is still operating, but fails completely in the future, at which point the RIO status changes to non-recoverable fault.
370 RIO Blocks On RIO blocks, with Wait for RIO Block Transfer selected, are not usually required unless block transfers to and from the PLC must be synchronized to the program in the motion controller (generated from the GML Commander diagram). More commonly, the motion controller program must be synchronized to the PLC program. In this case, it is easier to use discrete bits to synchronize and interlock block transfers in the PLC program.
Auto RIO Update 371 Auto RIO Update Use the Auto RIO Update block to: • Initiate automatic updating to selected RIO data fields. • Cancel automatic updating to selected RIO data fields. You must make the necessary RIO configuration settings in the General and RIO pages of the Configure Control Options dialog box to ensure that all of this dialog box’s required fields are enabled.
372 RIO Blocks The specified formatted data output group receives the current value of the Output Data expression as a 16-bit binary or 7-digit BCD value along with a decimal point position and sign bit. The Allen-Bradley PanelView Intelligent Operator Panel automatically handles these formats for displaying values. The Numeric Format menu combination selections are explained below.
Auto RIO Update 373 When using the RIO option as an adapter, and it is set to rack 4 using a full rack starting at I/O Group 0, the following definition for the RIO adapter formatted data output group results in the following input image table in the PLC for rack 4: Publication GMLC-5.
374 RIO Blocks I/O Group 15 17 (SLC) (PLC) 08 10 0 07 07 00 00 Block Transfers 1 3 2 1 0 2 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 4 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 5 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 Dedicated Discrete I/O 6 7 Formatted Data Output Group Magnitude S D2 D1 D0 95 94 93 92 91 90 89 88 68 87 86 85 84 The magnitude
Auto RIO Update 375 The most significant bit is at: PLC I:046/17 (RIO output 83) The sign bit is: PLC I:047/17 (RIO output 99) It is 0 for a positive value and 1 for a negative value. PLC inputs I:047/14 through I:047/16 (RIO outputs 96 – 98) contain a value between 0 and 7 indicating the number of decimal digits (digits to the right of the decimal point) in the formatted data output group magnitude in I/O Group 6.
376 RIO Blocks Fixed Binary Numeric Format When you select Fixed from the first Numeric Format menu and Binary from the second, the values written to the formatted data output group are the same as with auto binary numeric format except that the number of decimal digits (digits to the right of the decimal point) is always the same. Select the desired number of decimal digits from the Fractional Digits menu. Fixed format gives a visually more stable display at the expense of absolute precision.
Auto RIO Update 377 Auto BCD Numeric Format When you select Auto from the first Numeric Format menu and BCD from the second, the lower four digits of the 7-digit BCD value of the output data expression are written to the lower numbered I/O group defined for the selected formatted data output group.
378 RIO Blocks When using the RIO option as a scanner and the PanelView is set up as rack 3, the following definition for the RIO scanner formatted data output group results in the following output image table in the motion controller for rack 3. I/O Group 15 17 (SLC) (PLC) 08 10 07 07 00 00 0 1 2 3 4 5 6 BCD Digit 4 7 S D2 D1 Publication GMLC-5.
Auto RIO Update 379 The four least significant digits of the magnitude are written to I/O group 6. The remaining three BCD digits are written to the lower 12 bits in I/O group 7. The sign bit is I/O group 7 bit 17 (PLC-5) or bit 15 (SLC). This bit is 0, if the value is positive and 1, if it is negative. Bits 14 – 16 (PLC-5) or 12 – 14 (SLC) indicate the number of decimal digits (digits to the right of the decimal point) in the BCD magnitude.
380 RIO Blocks Fixed BCD Numeric Format When you select Fixed from the first Numeric Format menu and BCD from the second, the values written to the formatted data output group are the same as with auto BCD numeric format except that the number of decimal digits (digits to the right of the decimal point) is always the same. Select the desired number of decimal digits from the Fractional Digits menu. Fixed format gives a visually more stable display at the expense of absolute precision.
Reset RIO 381 Tag Window Select the discrete output that receives (On) or no longer receives (Off) data. Reset RIO Use the Reset RIO block to reset the RIO option after a communications failure. The Reset RIO block resides on the RIO Toolbar. The Show RIO Status block requires no parameters, and no dialog box is associated with it.
382 RIO Blocks Publication GMLC-5.
Chapter 17 CNET Blocks If you select CNET in the General page of the Configure Control Options dialog box, you can use CNET blocks to regulate communications between the motion controller and other devices via ControlNet (CNET). The following table presents the icons for each block in this category along with a brief description. More detailed descriptions of the blocks are contained on the pages following this table.
384 CNET Blocks • • Pause execution of the current task at this block until CNET communications attains a specified CNET status condition (Wait for CNET Status Type). Branch program flow from this block, depending upon whether a selected CNET status is true or false (If CNET Type). The On CNET Status block is on the CNET Palette. Wait for CNET Status Type Select Wait for CNET to pause execution of the application program until the occurrence of a CNET status condition.
Show CNET Status 385 If CNET Status Select If CNET to branch program depending upon the status of a specified CNET condition. The If CNET selection constantly checks the status of the CNET. Program flow branches to the true node (at the top of the block) if the current CNET status matches the status you specified in the block, and to the false node (at the bottom of the block) if not.
386 CNET Blocks MAC ID When you select MAC ID from the Show menu, the address (or Media Access Control ID) of the local controller appears as an integer value, from 1 to 99. The MAC ID value is set in the CNET page of the Configure Control Options dialog box. Reset CNET If you enabled CNET in the Configure Control Options General page dialog box, you can use the Reset CNET block to clear all ControlNet faults and to reset the ControlNet card in the motion controller.
Chapter 18 DH-485 Blocks When DH-485 is selected in the General page of the Configure Control Options dialog box, you can use DH-485 blocks to transfer data between the motion controller and other devices via a DH-485 network. The following table presents the icons for each block in this category along with a brief description. More detailed descriptions of the blocks are contained on the pages following this table.
388 DH-485 Blocks Show DH-485 Status Use the Show DH-485 Status block to check the DH-485 interface and send the resulting status value, or the location of the motion controller on the DH-485 link, to the operator interface serial port.
DH-485 Value 389 • The node address of the motion controller’s predecessor (the device which passes the token to the motion controller) is shown as Pred. • The node address of the succeeding device (the one to which the motion controller passes the token) is shown as Succ. When there is only one other device on the DH-485 network, the address of the predecessor is the same as that of the successor. If there are no other masters on the DH-485 network, all three node addresses are the same.
390 DH-485 Blocks Send Type When you select DH-485 in the Configure Control Options dialog box, the DH-485 Value block, with Send type, it sends a value from a local DH-485 variable (or multiple contiguous values) in the motion controller, to a remote DH-485 element (or elements), and waits for the transfer to be acknowledged.
DH-485 Value 391 Specifying the Remote Element Directly Selecting Specify Remote Addressing lets you directly specify the remote element, rather than as a previously defined item. The DH-485 Value dialog box replaces the DH-485 Remote scrolling list with a group of Remote fields to be completed. As shown below, these are the same fields that appear in the definition dialog box. In the above example, the DH-485 Value block settings directly specify file element N7:3 in the SLC at node 2.
392 DH-485 Blocks Multiple Variables The specified number of values—starting with the specified DH-485 remote element—is read from the remote device. The values are stored in an equal number of contiguous elements in a local DH-485 data file in the motion controller starting with the specified DH-485 or CNET local variable. Contiguous elements in the remote file are read, not contiguous items in the DH-485 Remote list.
DH-485 Value 393 The maximum number of contiguous remote elements which may be sent using a single DH-485 Value block depends on the file type selected for the element in question. See DH-485 Message Details for the limits for each file type.
394 DH-485 Blocks DH-485 Value Block DH-485 Command Data Bytes GML Commander File Type Data Bytes per Element Maximum Elements per GML Block Binary 2 (16 bits) 120 Integer 2 120 Floating 4 60 ASCII 1 240 BCD 2 120 IntFloat 4 60 With binary files, each element contains 16 bits—or sub-elements—but the entire word containing the desired bit is transferred. A maximum of 1,920 bits may be represented in 240 data bytes.
On DH-485 Status 395 If DH-485 If you select DH-485 Interface in the General page of the Configure Control Options dialog box, the If DH-485 type block checks the status of DH-485 communications. Program flow branches to the top (true) node if the current DH-485 status matches the specified status, and to the bottom (false) node if not. The DH-485 status conditions are explained in the following sections. Online Online is the normal status condition.
396 DH-485 Blocks If other tasks are executing (multitasking), the task that contains this block pauses while the other tasks continue to execute. In this way, a Wait for DH-485 selection in one task does not halt execution of any other tasks or hang the task dispatcher. Reset DH-485 Fault Use the Reset DH-485 block to clear any and all DH-485 faults. The Reset DH-485 Fault block resides on the DH-485 Toolbar. It requires no parameters and has no dialog box.
Chapter 19 SLC Blocks If you select SLC in the General page of the Configure Control Options dialog box, you can use SLC blocks to regulate communications between the motion controller and your Small Logic Controller (SLC). The following table presents the icons for each block in this category along with a brief description. More detailed descriptions of the blocks are contained on the pages following this table. Use this block: To: Display the status of the SLC.
398 SLC Blocks The Show SLC Status block resides on the SLC Palette. It requires no parameters, and has no dialog box. This block requires no parameters and it always has a check mark by the upper left corner of the block to indicate that it is complete. If you selected SLC in the General page of the Configure Control Options dialog box, you can use the Show SLC Status block to check the SLC interface and send the resulting status value to the operator interface serial port.
Interrupt SLC 399 Program Status Program status indicates the SLC is in the mode for creating, or programming, a ladder logic program in the SLC. When the SLC is in Program mode, it cannot be in Run mode or Fault mode. Run Status Run status indicates the SLC is executing, or running, a previously programmed SLC ladder logic program. When the SLC is in Run mode, it cannot be in Program mode or Fault mode.
400 SLC Blocks The 1394 GMC Turbo can issue a request for service command and generate an interrupt to the SLC processor. You can design an SLC ladder program to execute on receipt of the interrupt. Refer to the APS Reference manual for more information on SLC interrupts. The Interrupt SLC block resides on the SLC Palette. It requires no parameters, and has no dialog box.
Chapter 20 Calculation Blocks Calculation blocks perform mathematical and logical calculations to define variable values, evaluate expressions, etc. Blocks for writing equations, evaluating mathematical or logical expressions, and building tables of values are included in this section. The following table presents the icons for each block in this category along with a brief description. More detailed descriptions of the blocks are contained on the pages following this table.
402 Calculation Blocks Equation The Equation block assigns a value to: • a user variable • an indirect variable • certain system variables • a discrete output • an output group • a DH-485 variable • a cam profile point • an SLC variable • an SLC indirect variable. The assigned value can be a constant, or an expression that GML Commander evaluates to determine the assigned value. The Equation block resides on the Main Palette.
Equation • 403 Tag Explorer – Select a variable type from the tree control. The specific variables associated with a the selected variable type appear in the Tag Window. Note: If a variable type does not appear, it has not been enabled. • Tag Window – Select a specific variable or output to hold the assigned value. Note: If a particular variable or output does not appear, it has not been defined. • = (value) – Enter the value or expression that will be assigned to the selected variable.
404 Calculation Blocks TCAM Master Point – Enter a value or expression for the TCam master point, from: 0 to 12,999 for iCODE version 3.0 or later. Enter a value from 0 to 1,999 for iCODE versions earlier than 3.0. = (value) –Enter a value or expression to assign to the TCam Master point. Indirect Variable Select Indirect Variable to assign a value to an Indirect variable. Make your entries in the following fields. Variable Address – Enter a value or expression for the variable’s address (or number).
On Expression 405 On Expression Use the On Expression block to: • Evaluate a mathematical expression and make a logical decision based on the expression’s value (If Expression Type). • Pause execution of a task or program until the value of a mathematical expression is greater than or less than zero (Wait For Expression Type). The On Expression block resides on the Main Palette.
406 Calculation Blocks See the Online Help for information on the Build Table Block Pop-Up Menu and for detailed instructions on how to take information from an existing spreadsheet and place it into the Build Table Block. The Build Table block resides on the CAM Palette. Building CAM Position Profiles A CAM Position profile has two parts: a column of Master axis position values (in master axis position units) and a column of Slave axis position values (in slave axis position units).
Build Table 407 Building CAM Time Profiles A CAM Time profile has two parts: a column of Master Time values (in seconds) and a column of Slave axis position values (in slave axis position units). You can create these columns in the same Build Table block, or you can use a separate Build Table block for each column. If you use a separate Build Table block for each column, be sure to type the same value into the Starting Offset field in both blocks.
408 Calculation Blocks • 0 to 1,999 for variable arrays using iCODE version 3.0 or later • 0 to 999 for variable arrays using iCODE versions earlier than version 3.0. Starting offset does not relate to the axial position, time, or variable values stored in a Master or Slave table. GML Commander stores the values associated with each position number, or point, at a defined address. This is the same way GML Commander stores user variable values.
Chapter 21 Display and Operator Interface Blocks Display and Operator Interface blocks control the display and entering of information using an operator interface device connected to serial port B of the motion controller. Some of these blocks can also be used to interface to the GML Commander Terminal window on the host computer, using serial port A.
410 Display and Operator Interface Blocks Use this block: To: Immediately update the display (General Watch or Tag Window) with the current values. • Control the serial port buffer pointer of serial port B to get the next or previous character in the buffer. • Purge any extraneous characters in the serial port buffer before sending a request for data to the serial port. • Pause the program until serial port B receives a character. • Check serial port B for the presence of a received character.
Print to Display 411 Unless you select Force to Port (see below), the message goes to the serial port currently configured for operator interface. See Configuring Your Axis in this manual, and the Setup section of the Installation and Setup manual for your motion controller for more information on selecting the operator interface serial port. Unless you select Suppress Auto CR/LF (see below), the message ends with a carriage return and a line feed character to properly scroll the display.
412 Display and Operator Interface Blocks The available display options are: ASCII Text To display standard ASCII text in any of the four fields, select ASCII Text in the Field menu, and enter the desired text in the data entry box for this field. ASCII text is always sent exactly as entered including any imbedded spaces, preserving upper and lower case characters. The ASCII text may be up to 120 characters long, but is usually limited to less than this by the width of the operator interface device.
Print to Display 413 Expression To display the current value of any variable or expression as part of the message, select Expression from the Field menu, and enter the desired expression in the data entry box for this field. Values are displayed using a format determined by the motion controller, based on the number of significant digits in the value. To directly specify the format (and thus limit the number of characters used), select Formatted Expression for the field as explained below.
414 Display and Operator Interface Blocks Edit Value Use the Edit Value block to create custom menus that let the operator change user variable values, in a manner similar to the motion controller’s built-in operator interface setup menus. These custom menus are displayed on the operator interface port selected in the Interface page of the Configure Control Options dialog box. The Edit Value block resides on the RS-232/422 Palette.
Edit Value 415 Prompts The prompt message may be up to 24 characters long and may contain any legal ASCII character (see Appendix A for an ASCII reference table) except those shown in the following table.
416 Display and Operator Interface Blocks Range Limiting To limit the range of values that the operator can enter for the user variable, select Range Limit Input and enter the desired values for the smallest and largest allowed values in the appropriate data entry boxes. If the operator enters a value outside these limits, the value is prompted for again. Tag Explorer User Variables is pre-selected, by default. Tag Window Select the user variable whose value is to be edited during runtime.
Toggle Choice 417 When the Toggle Choice block executes, a prompt message appears on the operator interface (either the GML Commander Terminal Window via port A, or a separate operator interface terminal via port B), followed by the currently selected choice. To scroll through the available choices, the operator should press NEXT or ± on the integrated Setup and Diagnostic Panel on the IMC-S/21x controllers, or the Space bar on a terminal.
418 Display and Operator Interface Blocks Entering Choices To define the choices, enter the desired text for the first choice in the data entry box to the right of the number 0. Each choice can be of any length and can include embedded spaces. Up to 10 choices may be specified for use with a single Toggle Choice block. For example: To define the: Type: First choice as no No in the first field. Second choice as yes Yes in the field to the right of the number 1.
Abort Editing 419 Abort Editing Use the Abort Editing block during multitasking to perform a controlled interrupt of a current task’s ongoing editing session, and let another task take over control of the operator interface for a brief time (to handle faults, for example). The Abort Editing block performs this interruption in a controlled manner.
420 Display and Operator Interface Blocks Key Input Control Use the Key Input block to: • Control the serial port buffer pointer of serial port B to get the next or previous character in the buffer. • Purge any extraneous characters in the serial port buffer before sending a request for data to the serial port.
On Key Press 421 Clearing the Input Buffer Selecting Clear Input Buffer from the Type menu immediately clears the input buffer of serial port B, discarding any characters therein. You can use this function at any time to clear the serial port buffer, but that you should first clear the serial buffer before requesting any data from the operator. This guarantees that the only those characters you want—and not any extraneous ones—are evaluated by subsequent If Key blocks.
422 Display and Operator Interface Blocks Wait for Key The Wait for Key type pauses the program until serial port B receives a character. It can wait for any key, a specific key, or a specific ASCII code. With Wait for Key type selected, the On Key Press block has a single exit node. If other tasks are executing (multitasking), the task containing this block pauses, while the other tasks continue to execute.
On Key Press 423 Checking for Any Key Selecting Any Key, with If Key selected, causes program flow to branch to the true node (at the top of the block) if any keystroke character has been received by serial port B. If no character has been received, program flow branches to the false node (at the bottom of the block). This selection is useful for determining that a key has been pressed or a character received before evaluating it.
424 Display and Operator Interface Blocks Waiting for a Specific Key Selecting Specific Key, with Wait for Key selected, pauses the program until the specific character entered in the Key data entry box has been received by serial port B. Checking or Waiting for an ASCII Code The effect of selecting ASCII Key from the Key Type menu depends upon your Type selection (Wait for Key or If Key), as described below.
Configure Auto Display 425 Configure Auto Display Use the Configure Auto Display block to enable and configure up to six fields that appear in the runtime display. The runtime display is an informational display that is constantly updated while the motion controller operates. The selected fields appear in the runtime display from left to right on a single line, in the order in which they are defined in the Configure Auto Display dialog box.
426 Display and Operator Interface Blocks Field Legends Each field in the runtime display has an associated label, or legend. The legend may be up to 24 characters long and may contain any legal ASCII character (see Appendix B for an ASCII reference table) except those shown in the following table Illegal ASCII Legend Characters ASCII Keyboard Decimal Hex Description LF CTRL-j 10 0A Line Feed ESC CTRL-[ 27 1B Escape Axis status is displayed as a text message as shown in the following table.
Configure Auto Display 427 Axis Status Field Messages Runtime Display Description HOMING Homing MOVING Moving or Executing Time-Lock Cam JOGGING Jogging UNLOCK Axis Unlocked LOCKED Axis Locked When a given axis status is displayed, any status condition of lower priority can also be active. For instance, if axis status is shown as HRD LIM, a SFT LIM condition may also be active and feedback may be OFF.
428 Display and Operator Interface Blocks All faults—global, system or axis—are displayed as a text message as shown in the following tables.
Configure Auto Display 429 Motion Controller Faults 1394 Runtime Display Description PHS FLT Phase Loss Fault PRG FLT Application Program Memory Fault PWR FLT Power Fault RIO FLT RIO Fault RNG FLT Ring Fault SFT LIM Software Travel Limits Exceeded SYST OK No Faults ✔ TMP FLT Over Temperature Fault ✔ Global Axis Axis System ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ Publication GMLC-5.
430 Display and Operator Interface Blocks Publication GMLC-5.
Chapter 22 Miscellaneous Blocks Miscellaneous blocks, given their varying functionality, do not fit into the categories previously discussed. These blocks are not frequently used. The following table presents the icons for each block in this category along with a brief description. More detailed descriptions of the blocks are contained on the pages following this table. Use this block: To: Directly enter iCODE (the native language of the motion controllers) commands into your GML Commander diagram.
432 Miscellaneous Blocks Native Code You can use the Native Code block to directly enter iCODE (the native language of the motion controllers) commands into your GML Commander diagram. However, few GML Commander diagrams ever require this block. Only experienced programmers should use the Native Code block. Its purpose is to let you enter iCODE commands supported by your firmware, but not by GML Commander.
Call Module 433 When you add a New Module to a diagram, that New Module instantaneously appears in the Diagram Explorer as part of the current diagram. Open the New Module block either by double-clicking on it, or by clicking on the module name in the Diagram Explorer.
434 Miscellaneous Blocks To avoid very complex diagrams, do not use the Call Module Block unless the application absolutely requires it. The use of this feature may make it very difficult to edit and debug program flow. You may wish to use the Call Module block when an external device needs to make program flow decisions. The external device requires a method of labeling the routines that the motion controller must execute.
Remote Control 435 Multidrop Multidrop is a communications scheme that allows multiple motion controllers to communicate with each other over a single RS-422 serial link. When using multidrop, serial port B of the master motion controller is connected to serial port A of the slave controllers, as shown below. If DH-485 is selected do not use this scheme of master slave multidrop. Instead, you must daisy chain together serial ports A.
436 Miscellaneous Blocks Remote Controller Address Select the address of the desired slave motion controller from the menu. Addresses are set using the rotary Address switch on the front panel of the motion controller. See the Setup section of the Installation and Setup manual for your motion controller for more information on configuring slave motion controllers for multidrop operation.
Remote Control 437 If the current value of the requested expression cannot be represented using the specified response format, the slave motion controller returns a field of Xs. For example, if a Response Format of ###.### is used to request a variable with a current value 1000.3, the resulting message from the slave is XXX.XXX. This generates an Illegal Numeric Format runtime fault (Runtime_fault = 10) in the master motion controller, and the program is aborted.
438 Miscellaneous Blocks Publication GMLC-5.
Chapter 23 Defining Variables, Constants, and I/O The Tag Explorer and the Tag Window provide areas in which to view and select axes system variables and general system variables, and to define and select user constants, user variables and I/O. This chapter contains step-by-step procedures for viewing your program’s variables, constants, and I/O values. The topics in this chapter are: • Displaying system variables. • Defining a user variable/constant. • Defining flex inputs and outputs.
440 Defining Variables, Constants, and I/O You can view the values assigned to system variables in the Tag Window. You can also view the variables using the General Watch function as they dynamically respond to the execution of the program. (See Using the General Watch Function in this chapter.) The Expression Builder also offers numerous system variables and system functions based on your controller configurations.
Defining a User Variable/Constant 441 2. To: Do the following: View other variables Scroll down the Tag Window to view another system variable. Select a variable to add to the General Watch window 1. Select a system variable. 2. In the Tag Window, select a variable with the right mouse button. The variable shortcut menu appears. 3. Select Watch to add the selected variable to the General Watch Window.
442 Defining Variables, Constants, and I/O 1. In the Tag Explorer, select User Variable. The User Variables category is highlighted in the Tag Explorer. 2. In the Tag Window, click your right mouse button. A variable shortcut menu appears. Publication GMLC-5.
Defining a User Variable/Constant 443 3. Select New. The User Variable dialog box appears. Note: Use the same variable short-cut menu to open the variable for editing. Double clicking in the Tag window opens a new tag, or double clicking on a predefined variable opens it for editing. 4. Make entries in the following fields: Field Description Name Type a unique variable name. Address Type the variable address.
444 Defining Variables, Constants, and I/O 5. With the user variables displayed in the Tag Window: To: Do the following: View changes in a user variable In the Tag Window, scroll down to view changes to the user variable value as the program executes. Add a user variable to the General Watch window 1. In the Tag Window, select a user variable with the right mouse button. The variable short-cut menu appears. 2. Select one of the four Watches. The variable is added to that Watch Window.
Defining Flex Inputs and Outputs 445 Defining Flex Inputs and Outputs You can connect up to eight separate Flex I/O modules to the motion controller in any order. To define the inputs and outputs for Flex I/O modules: 1. Select Control Options from the Configure menu. The Configure Control Options dialog box appears 2. Select the Flex I/O tab to access the Flex I/O page. 3. In the Modules area, make an entry in the following field: Field Description Modulex 1. Select the module that you want to use.
446 Defining Variables, Constants, and I/O 5. Select Flex I/O from the Configure menu to access the Modules menu. 6. Select MODULE0. (MODULE0 is the default name. If you type a new name for this module, then this name appears.) A dialog box similar to the following appears: Publication GMLC-5.
Defining Flex Inputs and Outputs 447 7. In the Type field, select an input, output, or combo value Note: Some value selections require you to complete a second dialog box for defining parameters. Publication GMLC-5.
448 Defining Variables, Constants, and I/O 8. Select OK. The type of input, output, or combo value appears as a sub-category in the Tag Explorer under Flex I/O. Creating Flex I/O Values To create Flex I/O values: 1. In the Tag Explorer, select any Flex I/O category. The category name is highlighted in the Tag Explorer and the category name appears in the title bar at the top of the Tag Window. 2. Select the Tag Window with the right mouse button. The variable short-cut menu appears: Publication GMLC-5.
Defining Flex Inputs and Outputs 449 3. Select New. The Flex I/O dialog box appears. Publication GMLC-5.
450 Defining Variables, Constants, and I/O 4. Make entries in the following fields: Field Description Name The name of the Flex I/O input or output that you are creating. Address The location of the Flex I/O input or output. Module The name of the module. 5. Select OK. The value appears in the Tag Window. Defining I/O for RIO, SLC, AxisLink, or DH-485 Use the same method for the optional RIO, SLC, AxisLink, or DH-485 as you did to add input and output categories that appear in the Tag Explorer.
Defining I/O for RIO, SLC, AxisLink, or DH-485 451 To create input and output values: 1. In the Tag Explorer, select any input or output category. The category name is highlighted in the Tag Explorer: The category name appears in the title bar at the top of the Tag Window: Publication GMLC-5.
452 Defining Variables, Constants, and I/O 2. Select the Tag Window with the right mouse button. The variable short-cut menu appears 3. Select New. The dialog box for the selected input or output appears: Publication GMLC-5.
Defining I/O for RIO, SLC, AxisLink, or DH-485 453 4. Make the appropriate entries in fields for the selected interface. The name of the AxisLink I/O Input that is entered is shown in the example below: 5. Select OK. The newly created or edited value appears in the Tag Window. Publication GMLC-5.
454 Defining Variables, Constants, and I/O Using the General Watch Function You use the General Watch function to group variables, inputs, and outputs that you want to monitor during your testing in a central location. When you open the General Watch function, it appears in the Tag Window. You can have up to four watches available. To use the General Watch function, select General Watch in the Tag Explorer. The title, General Watch, appears at the top of the Tag Window.
Using the General Watch Function 455 3. Select Watch. The selected variable, input or output displays in the General Watch list in the Tag Window, along with general watch items previously selected for monitoring. Publication GMLC-5.
456 Defining Variables, Constants, and I/O Publication GMLC-5.
Chapter 24 User Variables and Constants The Expression Builder lets you use defined user variables, constants, and local DH-485 variables as elements in expressions. Select User Constants, User Variables, or DH-485 in the Tag Explorer. Then select the desired variable or constant in the Tag Window. Before a user variable or constant becomes available for use in an expression, you must first define it. If the Tag Window’s scrolling list is empty, no variables or constants have been defined.
458 User Variables and Constants Publication GMLC-5.
Chapter 25 The Expression Builder The Expression Builder is a specialized calculator for constructing mathematical expressions in GML Commander. You can open the Expression Builder within any GML Commander function block for a field that requires a numeric value or expression. To access the Expression Builder, place the cursor in the field where you want to create an expression. Click the right mouse button to display the menu.
460 The Expression Builder Note: The value currently in the field appears in the Expression Builder’s Expression = area. The Expression Builder automatically replaces this value with the expression as you create it. The Expression Builder Dialog Box contains the following features: • Numeric Keypad — To enter numeric values, parentheses, brackets, decimal point, comma, and certain mathematical operators. • Operator Scrolling List — To enter mathematical, logical, and relational expression operators.
The Numeric Keypad 461 Precedence All expression operators have equal precedence in an expression. This means that expressions are always evaluated from left to right regardless of what operators are used in the expression. This minimizes computation time, when the motion controller evaluates the expression.
462 The Expression Builder Continuing with the previous example, these two expressions do produce the same result—the parentheses force the addition to be performed before the multiplication: 100 * (2 + 10) (2 + 10) * 100 Both of these expressions are evaluated as: 2 + 10 * 100 = 12 * 100 = 1,200 [ ] Brackets The numeric keypad’s bracket key enters an indirect variable reference. See Indirect Variable in System Functions in this chapter for more information on indirect variable referencing.
Expression Operators 463 There are three kinds of GML Commander expression operators: • Mathematical — Combines the numerical values in an expression. • Logical — Combines the logical (true/false) variables, status conditions, and discrete I/O states to make decisions. • Relational — Lets the numerical and logical comparisons to be made and assigns a value to a variable Mathematical Operators Use mathematical operators to combine numerical values in an expression.
464 The Expression Builder Subtraction Use the minus sign (or dash) to subtract two elements. For example, the following expression evaluates as 7.5 if the most recent registration position of Axis 0 is 2.5 position units. Registration_Position_AXIS0 - 10 The minus sign may also be used as a unary minus to negate the value of an element or expression. When used as a unary minus, the minus sign and the element or expression must be enclosed in parentheses.
Expression Operators 465 Exponentiation ^ Use the caret to raise an element to a power. For example, the following expression evaluates as 25. Both the base (5 in the example above) and the exponent (2 in the example above) may be constants, variables, or expressions. 5^2 // Integer Quotient The double slash provides the quotient between two elements. It is similar to the single slash floating point divide except that the result is always an integer—all fractional information is truncated.
466 The Expression Builder 100@60 The integer remainder is useful to calculate the fractional part when one element is divided into another. For example, in a feeding application, the integer remainder of the total material fed and the length of each piece is the position within the current piece. Thus, the following expression returns the position within the current piece at any time (assuming that the actual position of Axis 0 was zero when the machine was started).
Expression Operators 467 Bitwise NOT ~ Use the tilde to complement all the bits in a binary value. Technically, this is the 1’s complement of the value. It is particularly useful for inverting the value of an input or output group used with negative logic devices’. ! ATTENTION: Do not use the Bitwise NOT operator on user or system variables. For example, the following expression complements the defined bits of the group Input_Group.
468 The Expression Builder For example, if Input_Group is defined to consist of inputs 2 - 5, in the following expression discrete inputs 2 - 5 are logically ANDed with the value 1310 (11012) when the expression is evaluated. Input_Group & 13 The result is that discrete input 3 is masked OFF and only inputs 2, 4 and 5 are read. The state of input 3—when ANDed with the 0 at that bit position—always results in a 0 regardless of whether the input is ON or OFF.
Expression Operators 469 Specifically, if inputs 2 - 5 are currently in the following states, the expression above is evaluated as 11 (10012 | 00102 = 10112 = 1110). Input 2 = ON Input 3 = OFF Input 4 = OFF Input 5 = ON Boolean NOT ! Use the exclamation point to complement a single-bit (Boolean) logic element. This is especially useful for forming logical expressions involving status bits, discrete I/O, timers, etc.
470 The Expression Builder Relational Operators Use relational operators to make numerical and logical comparisons, for example, in an On Expression block with If Expression selected. Unlike the other expression operators, that combine elements in an expression, relational operators compare one element to another element or an expression. Therefore, the relational operators are used only if the comparison yields a resultant value of true or false.
Expression Operators 471 The first expression evaluates to 1 (true) if the sum of the cut length variable and 10 equals the actual position of Axis 0. Otherwise it is 0 (false). However, the second expression evaluates to 11, if the actual position of Axis 0 equals the cut length (Actual Position of Axis 0 = Cut Length is true (1); then 1 + 10 = 11) and 10 if not (Actual Position of Axis 0 = Cut Length is false (0); then 0 + 10 = 10).
472 The Expression Builder This result is exactly opposite from that obtained when the equal sign is used. Greater Than > Use a greater-than sign to determine if one element or expression is greater than another element or expression. If the element or expression on the left side of the greater-than sign has a greater value than the element or expression on the right side, the comparison is true (1). If not, it is false (0).
System Variables 473 Less Than or Equal to <= Use a less-than sign followed by an equal sign to determine if one element or expression is equal to or less than another element or expression. If the element or expression on the left side of the <= is equal to or has a lower value than the element or expression on the right side, the comparison is true (1). Otherwise it is false (0).
474 The Expression Builder Because all system variables are strings of standard ASCII characters, you can type them directly into the expression from the keyboard. The GML Commander system variables are described in the following chapters. For presentation purposes, they are grouped by function into the following groups: • Motion variables. • Controller variables. • Fault variables. • Status variables. • Diagnostic variables. • System functions. • Mathematical functions. • User variables.
Chapter 26 Motion Variables Motion variables let you use values, such as axis position and velocity as elements in an expression. All motion variables—except the following— are read-only.
Imaginary Virtual Master Only Motion Variables Variable Units Servo 476 Command_Velocity Axis Pos. Units/Sec.
477 Actual Position Actual_Position is the current absolute position of a physical or virtual axis (in the position units of that axis) as read from the feedback transducer. In the Tag Explorer, select both Axis System Variables and the desired axis, then select Actual_Position from the Tag Window scrolling list. See the figure above, and Command Position, below, for more information on the relationship among command position, actual position, and position error. Publication GMLC-5.
478 Motion Variables Command Position Command_Position is the desired or commanded position of a physical axis or the imaginary axis (in the position units of that axis) as generated by any previous motion blocks. In the Tag Explorer, select both Axis System Variables and the desired axis, then select Command_Position from the Tag Window scrolling list. Actual position is the current position of the axis as measured by the encoder or other feedback device.
479 In the Tag Explorer, select both Axis System Variables and the desired axis, then select Strobed_Position from the Tag Window scrolling list. See the figure in Axis System Variables and Command Position earlier in this section for more information on the relationship between command position, actual position, and position error. Strobed positions are useful to correct for any motion occurring between the detection of an event and the action initiated by the event.
480 Motion Variables The accuracy of the registration position value, saved as a result of a registration event, is a function of the delay in recognizing the specified transition (1 µs) and the speed of the axis during this time. The uncertainty in the registration position is the distance traveled by the axis during 1 µS (0.000001 second) as shown by the following equation: Position Units Uncertainty = Axis Speed × 0.
481 There are 42 separate soft registration position variables, one for each of the four physical axes, the two virtual axes, and the imaginary axis. For example, the actual position of Axis 3 is stored in Soft_Reg_Pos_ Axis3_AXIS1, when a registration event occurs on Axis 1. The command position of the imaginary axis is stored in Soft_Reg_Pos_ Imag_AXIS3 when a registration event occurs on Axis 3, etc. Since the Soft_Reg_Posx.
482 Motion Variables Note that the calculated uncertainty is the maximum error in the direction in which the axis is moving. The error after any individual registration event is somewhere (essentially random) between 0 and the calculated soft registration position uncertainty. In other words, The soft registration position is: If: Greater than the true position of the axis at the occurrence of the registration event The axis is moving in the positive direction.
483 The Passively Home Axis and Calculate Position Change module included in the GML Commander Module Library under Samples on your GML Commander disk implements this calculation for Axis 0, as shown below. The Get Home Position block reads the Home Position parameter of Axis 0 and stores it in user variable Home_Position_0. The Home Axis block passively homes the axis and waits for completion.
484 Motion Variables Encoder Filter Lag Encoder_Filter_Lag is used to observe the effect of the Encoder Input Filter. It reports the existing filter-induced lag between the filtered output and axis Actual Position. A positive (+) value indicates leading, a negative (-) value indicates lagging.
485 Average Velocity Average_Velocity is the current speed of a servo, master only or virtual axis. It is measured in axis position units per second, and calculated by averaging the actual velocity of the axis over the averaged velocity timebase for that axis (entered in the motion controller’s application setup menu). Average velocity is always a positive value regardless of which direction the axis is moving.
486 Motion Variables The average velocity of the imaginary axis is always zero, because the imaginary axis has no actual position and thus no actual velocity to average. Use command velocity for the imaginary axis. Command Velocity Command_Velocity is the desired or commanded speed of a servo axis or the imaginary axis in axis position units per second, as generated by any previous motion blocks. It is calculated as the rate of command position change with time.
487 Analog Offset Error Analog_Offset_error is the position error between the selected axis’ actual analog position, and the setpoint that was input in an Analog Offset function block’s Setpoint field. In the Tag Explorer, select both Axis System Variables and the desired axis, then select Analog_Offset_error in the Tag Window.
488 Motion Variables PCAM Registration Error PCAM_registration_error is used by the auto-correction feature of position-lock cams to automatically correct for error between the measured registration position, and the desired or expected registration position. In the Tag Explorer, select both Axis System Variables and the desired axis, then select PCAM_registration_error in the Tag Window.
489 The calculation of the PCAM_registration_error value differs depending on the type of auto-correction used. For absolute and absolute ratioed auto-correction, the registration error is the difference between the most recent hard or soft registration position of the axis, and the target position as shown below.
490 Motion Variables Registration Position + ∑ Registration Distance – Previous Registration Position + ∑ Registration Error – Nominal Length The registration distance is the difference between the most recent hard or soft registration position of the axis, and the previous registration position.
491 PCAM Good Registration Count PCAM_good_registration_count is the current number of consecutive intolerance registration events, which have occurred on the registering axis for a position-lock cam with auto-correction enabled. In the Tag Explorer, select both Axis System Variables and the desired axis, then select PCAM_good_registration_count in the Tag Window.
492 Motion Variables PCAM_good_registration_count is incremented when an in-tolerance registration event occurs. As shown above, the first registration event that occurs within the specified tolerance is considered the good registration. All registration events that occur after a good registration event, and before the beginning of the next tolerance area, are considered bad—even if they occur within the current tolerance.
493 Last Good Registration Programmed Tolerance Value Nominal Length – Tolerance Registration Input Bad Registrations + Axis Position Bad Registrations Missing Registration Count Incremented PCAM_missing_registration_count is incremented when a registration event is missed, and is reset to zero when the next good (in-tolerance) registration event occurs. PCAM_missing_registration_count is set to zero when power is applied to the motion controller.
494 Motion Variables An out-of-tolerance registration event is one that occurs outside the target position or nominal length tolerance entered in the Configure Cam block, as shown below. Target Position Last Good Registration Programmed Tolerance Value Nominal Length – + Axis Position Tolerance Registration Input Bad Registrations Bad Registrations Good Registration PCAM_bad_registration_count is incremented when an out-of-tolerance registration event occurs.
495 In the Tag Explorer, select both Axis System Variables and the desired axis, then select Axis_iq_reference_1394 in the Tag Window. Axis It Limit 1394 The Axis_it_limit_1394 variable reports the current value of the computed It Limit for the designated axis, as a percent of rated current. This value changes dynamically as the commanded current to the axis is integrated over time.
496 Motion Variables Publication GMLC-5.
Chapter 27 Controller Variables Controller variables let you use timer values and states, analog input values, the last character received from the operator interface, and the current task number as elements in an expression.
498 Controller Variables Analog Inputs Four analog inputs are available as an option on IMC-S/20x-A and IMC21x-A model motion controllers for reading the values from analog transducers, etc. Analog input values range between ±10 volts, depending on the input level. In the Tag Explorer, select General System Variables, then select Analog_Input_0-3 in the Tag Window. If you selected iCODE version 2.
499 Timers Four count-down timers are provided for programming dwells and other time-dependent functions. You can set each timer to a value using the Set Timer block, and read its value (in seconds) at any time using the appropriate timer variable. In the Tag Explorer, select General System Variables, then select Timer14 in the Tag Window. You can use timer variables as mathematical variables or as logic variables in an expression.
500 Controller Variables Use the Current_Task variable when several tasks use identical (duplicate) modules in a diagram. Within a duplicate module, you can use the Current_Task variable to make decisions based on which task is currently executing the module. CPU Utilization CPU_utilization is a floating-point value, between 0 and 1, which represents the relative amount of the available CPU capacity currently being used for motion-related calculations.
501 If Extended AxisLink is selected in the General page of the Configure Control Options dialog box, Controller_address is an integer value from 0 to 15 and is set by the software using in the AxisLink page of the Configure Control Options dialog box. In the Tag Explorer, select General System Variables, then select Controller_address in the Tag Window.
502 Controller Variables AxisLink Configuration Nodes AxisLink_configuration_nodes is an eight-bit binary coded value that indicates which external controllers are connected via AxisLink. In the Tag Explorer, select General System Variables, then select AxisLink_configuration_nodes in the Tag Window. You can use this parameter to check which nodes are on the link.
Chapter 28 Fault Variables Fault variables let you use fault conditions as elements in an expression. Fault variables include numerical representations of global faults, axis faults, and fault codes, as well as logical variables for individual faults. The following table describes upper level—or general—fault variables. Later sections describe both the fault code values and the lower tier fault variables associated with the following general fault variables.
504 Fault Variables Variable Units Drive_hard_fault_1394 0 (False) or 1 (True) DH485_fault_code Integer from 0 to 4 DH485_general_fault 0 (False) or 1 (True) DSP_feedback_fault_1394 0 (False) or 1 (True) Encoder_noise_fault 0 (False) or 1 (True) Encoder_loss_fault 0 (False) or 1 (True) FLEX_fault 0 (False) or 1 (True) FLEX_fault_code Integer from 0 to 7 Hardware_overtravel_fault 0 (False) or 1 (True) Position_error_fault 0 (False) or 1 (True) Resolver_loss_fault_1394 0 (False) or 1
505 Variable Units System_smrt_pwr_shunt_timeout_fault_1394 0 (False) or 1 (True) Each of the upper-tier, general fault variables along with all related lower tier variables and fault codes are explained in the following pages. Global Fault Global_fault is an integer value representing the highest priority fault currently active in the motion controller. Global faults include controller memory faults as well as any faults on any axis.
506 Fault Variables Fault Value Description Runtime Display 2 Software_Overtravel_Fault on any axis SFT LIM 1 Encoder_Loss_Fault or Encoder_Noise_Fault on any axis ENC FLT 0 No Faults AXES OK Global faults are prioritized from highest to lowest, in the order shown in the table above. When multiple faults are active, the Global_fault value represents the highest priority fault.
507 CPU Utilization Overrun Fault The motion controllers continuously monitor average CPU utilization for performance and safety purposes. A CPU utilization overrun (Global_fault = 15) indicates that the average CPU utilization has exceeded 90%.
508 Fault Variables Flex Fault A Flex I/O Device fault applies to Compact or 1394 GMC/1394 GMC Turbo controllers configured with Flex I/O modules. A Flex I/O device fault (Global_fault = 13) means a fault has occurred when the controller tried to communicate with one or more of the Flex I/O blocks. When a flex I/O device fault occurs, the FLEX_fault_code system variable is set to the first flex I/O module detected with a communication problem. This fault usually indicates a hardware (e.g.
509 DH-485 General Fault On Compact or 1394 GMC/1394 GMC Turbo controllers with DH-485 enabled, a DH-485 fault (Global_fault = 11) indicates that a communication or data transfer error has occurred on the DH-485 network interface. Refer to DH-485 Fault Code for more information. The motion controller displays the DH-485 Fault in the Terminal Window or the runtime display (if enabled). However, this fault variable is not available in the Expression Builder.
510 Fault Variables AxisLink Timeout Fault On motion controllers with the AxisLink option (IMC-S/2xx-L models or 1394-SJTxx-C-RL), an AxisLink virtual axis fault (Global_fault = 9) indicates that the current AxisLink virtual axis connection has failed or could not be established. See AxisLink Timeout and AxisLink Failed for more information on the specific conditions that cause this fault.
511 The motion controller displays the setup data memory fault in the Terminal Window or the runtime display (if enabled). However, this fault variable is not available in the Expression Builder. Application Program Memory Fault The motion controllers use a checksum to verify the integrity of the application program (created from a GML Commander diagram) stored in memory. Whenever you download a new program to the motion controller, a new checksum is calculated and stored with the program.
512 Fault Variables Axis Fault Description Runtime Display 7 AxisLink Timeout AXL FLT ✔ 6 AxisLink Failed (axis not found) AXL FLT ✔ 5 Drive Fault / Motor Thermal 1394 DRV FLT ✔ 4 Position Error Tolerance Fault ERR FLT ✔ 3 Hardware Overtravel Fault HRD LIM ✔ 2 Software Overtravel Fault SFT LIM ✔ 1 Encoder Noise or Loss Fault ENC FLT ✔ ✔ 0 No Faults AXIS OK ✔ ✔ Servo Fault Value ✔ Imaginary Virtual Master Only Axis_fault is an integer value representing the highes
513 • 0 (false) if not An AxisLink timeout is defined to have occurred when the linked axis has failed to provide any new information for at least 5 servo update intervals. The AxisLink LED on the front panel flashes red when an AxisLink timeout occurs. When AxisLink_timeout = 1, Axis_fault = 7, Axis_status = 14, and Global_fault = 9.
514 Fault Variables You can directly clear an AxisLink failure on a virtual axis using a Reset Fault block or by assigning a value of 0 to the appropriate AxisLink_failed variable using an Equation block. However, this does not automatically re-enable the virtual axis. Drive Fault / Motor Thermal 1394 Drive_Fault applies to Compact, Integrated, and Basic controllers. Motor_Thermal_1394 applies to 1394 controllers.
515 When configured to use the drive fault input, each physical axis of the motion controller can be further configured to respond to a drive fault in different ways. If drive fault action is set to STOP MOTION, then when the drive fault input is activated, the axis immediately decelerates to a stop without disabling feedback or the drive enable output.
516 Fault Variables When evaluated in an expression, the value of the Position_error_fault variable indicates whether a position error fault has occurred. When Position_error_fault = 1, Axis_fault = 4, Axis_status = 10 if no other faults of higher priority are active on the axis, and Global_fault = 4 if no other faults of higher priority are active on any axis.
517 If position error fault action is set to STATUS ONLY, position error faults must be handled within the GML Commander diagram. In general, this setting should only be used in applications where neither the standard STOP MOTION nor DISABLE DRIVE actions are appropriate. See the Setup section of the Installation and Setup manual for your motion controller for more information on configuring the position error fault action.
518 Fault Variables A hardware overtravel fault can only occur if the motion controller is configured to use overtravel limit switches. See in the Setup section of the Installation and Setup manual for your motion controller for more information on configuring the overtravel inputs. When configured to use overtravel limit switches, each physical axis of the motion controller can be further configured to respond to a hardware overtravel fault in different ways.
519 ! ATTENTION: Be careful to move the axis in the direction opposite the previous move (i.e. away from the overtravel condition). Movement in the wrong direction may cause physical harm to materials, machinery or to the operator. 5. Use the Control Settings block to re-enable the Hardware Overtravel Checking data bit.
520 Fault Variables Maximum Negative Travel Software_overtravel _fault = 0 - Normal Axis Travel Maximum Positive Travel Software_overtravel Software_overtravel _fault = 0 _fault = 1 0.0 + Axis Position When configured to use soft travel limits, each physical axis of the motion controller can be further configured to respond to a software travel fault in different ways.
521 ! ATTENTION: Be careful to move the axis in the direction opposite the previous move (i.e. away from the overtravel condition). Movement in the wrong direction may cause physical harm to materials, machinery or to the operator. 5. Use the Control Settings block to re-enable the Software Overtravel Checking data bit.
522 Fault Variables CH A: CH B: Each physical axis of the motion controller can be configured to respond to encoder noise in different ways. If the encoder noise fault action is set to STOP MOTION, then when encoder noise is detected, the axis immediately decelerates to a stop at maximum deceleration without disabling feedback or the drive enable output.
523 • 0 (false) if not Note: An Encoder is sometimes alternately referred to as a Transducer. Thus, Encoder Loss Fault is sometimes referred to as Transducer Loss Fault In the Tag Explorer, select both Axis System Variables and the desired physical axis, then select Encoder_loss_fault in the Tag Window. When evaluated in an expression, the value of the Encoder_loss_fault variable indicates whether encoder signal loss has been detected on the encoder input for the axis.
524 Fault Variables An encoder loss fault on an axis can be directly cleared by assigning a value of 0 to the appropriate Encoder_loss_fault variable using an Equation block. However, this does not automatically re-enable feedback or the drive, and if encoder signals are still lost after executing the Equation block, the fault occurs again immediately. An encoder loss fault is also cleared when a Feedback On or Home Axis block is executed or when the setup menus in the motion controller are run.
525 • 1 (true) if there has been an AxisLink timeout attempting to access another motion controller’s AxisLink outputs or data • 0 (false) if not In the Tag Explorer select General System Variables, then select AxisLink_general_fault in the Tag Window. When evaluated in an expression, the value of the AxisLink_general_fault variable indicates whether a fault has occurred attempting to access another motion controller’s AxisLink outputs or data.
526 Fault Variables Fault Code Description LED Color 76 Timeout Accessing Controller 12 Data Flashing Red 75 Timeout Accessing Controller 11 Data Flashing Red 74 Timeout Accessing Controller 10 Data Flashing Red 73 Timeout Accessing Controller 9 Data Flashing Red 72 Timeout Accessing Controller 8 Data Flashing Red 71 Timeout Accessing Controller 7 Data Flashing Red 70 Timeout Accessing Controller 6 Data Flashing Red 69 Timeout Accessing Controller 5 Data Flashing Red 68 Timeout
527 Fault Code Description LED Color 35 Timeout Accessing Controller 3 Outputs Flashing Red 34 Timeout Accessing Controller 2 Outputs Flashing Red 33 Timeout Accessing Controller 1 Outputs Flashing Red 32 Timeout Accessing Controller 0 Outputs Flashing Red 31 Link Error Accessing Controller 15 Flashing Green 30 Link Error Accessing Controller 14 Flashing Green 29 Link Error Accessing Controller 13 Flashing Green 28 Link Error Accessing Controller 12 Flashing Green 27 Link Error
528 Fault Variables controller. When the highest priority fault is cleared, AxisLink_fault_code has the value of the next highest priority fault. Offline The offline condition (AxisLink_fault_code = 128) indicates that there have been at least 256 link errors and that AxisLink has shut down. This is usually caused by a cabling or power-up sequence problem.
529 Timeout Accessing Output The timeout accessing controller AxisLink outputs conditions (AxisLink_fault_code = 32 - 47) indicate that the specified motion controller has stopped updating its AxisLink outputs (more than 1 second has elapsed with no response from the specified motion controller). The AxisLink LED flashes red when this condition occurs.
530 Fault Variables Fault Value Description 30 Flex I/O Missing or Failed 29 Illegal Path Reference 28 Insufficient Time (Linear Interpolation) 27 Bad Arc (Circular Interpolation) 26 Unknown RIO Device (Scanner) 25 Attempt to Access Unknown AxisLink Device 24 Optional Hardware Missing 23 No Tasks Running 22 Attempt to Access Locked Memory 21 Illegal Direct Command 20 Program Checksum Error 19 Illegal Command While Program Running 18 Illegal Command While in Overtravel 17 Illeg
531 Fault Value Description 5 Missing [ or ] in Command 4 Missing Label for Goto 3 Missing = in Expression 2 Missing Comma (,) in Command 1 Illegal Command 0 No Fault Detected You use an End Program block, configured for When End of Fault with Go to When End if Runtime Fault Occurs selected, to intercept runtime faults, which occur while the application program is running.
532 Fault Variables The number of pointers a program stack can contain (“program stack depth”) varies by controller, as follows: Controller Call Depth IMC S Class 1394 Turbo 40 IMC S Class 1394 25 IMC S Class Compact 25 The Stack Fault occurs when: • the number of program calls to the stack exceeds the program stack depth, or • the number of returns exceeds the number of calls from the iCODE script to the program stack.
533 3. Download a “clean” version of the application program, and re-run the program. If the fault does not recur, the problem probably was a stack underflow, and should be solved. 4. If the block referenced in the error message includes an ordinary call to another part of the program, the problem is probably a stack overflow. In this case, simplify your program by eliminating stack calls, so the program stack depth of your controller is not exceeded. 5.
534 Fault Variables 1. Remove all axis and DIM modules. 2. Plug the terminator into the system module. If the system module is OK (system LED flashing red/green), go to step 3. If not (system LED solid red) go to step 4. 3. Plug in each axis and DIM module one at a time, re-attaching the terminator after each module is added. See which module causes the system to fail (system LED solid red). Note: If no module fails, combine the axis modules in different order, until one fails. 4.
535 Cause Comment/Response A system or axis module hard fault occurred. To check for a hard fault: 1. Select General System Variables in the Tag Explorer, and scroll to Drive_Hard_Fault_1394 in the Tag Window. 2. Check for the presence of an Axis_module_hard_fault_ 1394 or a System_module_hard_fault_ 1394. 3. If either fault exists, find the underlying axis or system hard fault. 4. Locate and remedy the cause of the fault. 5. Clear the underlying fault with a Reset Fault block set to Reset 1394. 6.
536 Fault Variables To correct the problem: Press the Reset button on the system module. If the problem persists, return the controller to the manufacturer for repair. This fault condition does not appear as an independent fault variable in either the Tag Window or the Expression Builder.
537 2. Verify that all Flex I/O modules are installed on their rack in the same order that they are: • enabled in the Flex I/O page of the Configure Control Options dialog box, and • configured in the Configure Flex I/O Module menu. 3. Restart the controller. If the problem persists, it is a hardware problem. Return the controller to the manufacturer for repair. This fault condition does not appear as an independent fault variable in either the Tag Window or the Expression Builder.
538 Fault Variables This fault condition does not appear as an independent fault variable in either the Tag Window or the Expression Builder. Bad Arc (Circular Interpolation) This fault (Runtime_fault = 27) occurs when an Interpolate Axes block executes in either of two instances. First, with Intermediate Arc selected, either: • the current position, the end point and the intermediate point are all on the same line, or • two of these points are identical.
539 To correct the problem: • Check the diagram for complete configuration of all AxisLink-related settings (e.g. AxisLink I/O Input and Input Group dialog boxes, Read Remote Value block, etc.) • Check the cable and terminators connecting each node (controller) on the AxisLink. • If all else fails, there may be a hardware problem with the AxisLink card. If so, return the controller to the manufacturer for repair.
540 Fault Variables • start new program (!N) • set a power-up data bit (BS) • set a power-up data parameter (DS) • transfer a diagram checksum (X) • initialize setups (.I), or • upload working values (.U). To correct the problem: 1. Set the Memory switch to unlocked. 2. Repeat the data transfer iCODE command. This fault condition does not appear as an independent fault variable in either the Tag Window or the Expression Builder.
541 • Enable AxisLink in the General and AxisLink pages of the Configure Control Options dialog box; or • Start program execution using the Go command in either the Online Toolbar or the Diagram menu. This fault condition does not appear as an independent fault variable in either the Tag Window or the Expression Builder.
542 Fault Variables • a jog or a move (in either the positive or the negative direction) has caused a Hardware_overtravel_fault or a Software_overtravel_fault, and • the system response (set in the Fault Action page of the Configure Axis Use dialog box) is to Disable Drive or Stop Motion. To correct the problem: 1. Clear the overtravel condition. This can include some or all of the following steps: • Reset the controller and turn feedback on, using a Feedback block (for Disable Control fault action).
543 • Gear Axes • Time Lock Cam • Position Lock Cam For example: In a diagram with multitasking, a fault in Task0 might lead to a fault handling routine which turns off feedback, while Task1 continues to execute and commands motion. To correct the problem: 1. Turn feedback ON for the necessary axis, using a Feedback block. 2. Re-execute the command. This fault condition does not appear as an independent fault variable in either the Tag Window or the Expression Builder.
544 Fault Variables Scanner Adapter In the Tag Explorer select General System Variables, then select RIO_fault_code in the Tag Window.
545 Failed Getting Inputs An RIO failed getting inputs fault (RIO_fault_code = 6) indicates that the motion controller could not successfully read its RIO discrete inputs. When RIO_fault_code = 6, RIO_status = 1 (Offline), the LED on the RIO option is OFF, and Global_fault = 10 (RIO Fault). If you configured the motion controller for adapter mode, check whether the RIO scanner (in the SLC or PLC) is properly scanning the motion controller’s I/O.
546 Fault Variables Failed Getting Data An RIO failed getting data fault (RIO_fault_code = 3) indicates that the motion controller’s RIO adapter received a block or discrete transfer from the scanner, but the expected data was not present. Although this fault does not directly cause a global fault, if the condition persists another more serious RIO fault occurs.
547 Fault Code Fault Condition LED 2 Incorrect Network Configuration Flashing Red/ Green 1 Incorrect Node Configuration Flashing Red 0 No Fault Solid Green When CNET_fault_code > 0, CNET_fault = 1, and Global_fault = 16 (if no higher global faults are active). Note: There are two CNET plug card LEDs – one for channel A and one for channel B. Because these LEDs are internal to the CNET fiber optic plug card, they are not readily visible on this type of plug card.
548 Fault Variables • Execute a Reset CNET Fault block, set to Type Card, as a Direct Command from the Select Direct Command Window on the Online Toolbar. Executing a Reset CNET Fault block, set to Type Card, will reinitialize the plug card and reset the variables CNET_fault_code and CNET_status to 0. If executing a Reset CNET Fault block (as described above) fails to clear this fault, the plug card is defective and must be either repaired or replaced.
549 • Find and fix the problem (either fix the wiring problem, or configure other network nodes for ControlNet communications). Then, execute a Reset CNET Fault block, set to type All Faults, as a Direct Command from the Select Direct Command Window on the Online Toolbar. Executing a Reset CNET Fault block, set to Type All Faults, will reset the variables CNET_fault_code and CNET_status to 0.
550 Fault Variables If recycling power or executing a Reset CNET Fault block (as described above) fails to clear this fault, the plug card is defective and must be repaired or replaced. This fault condition does not appear as an independent fault variable in either the Tag Window or the Expression Builder.
551 In the Tag Explorer select General System Variables, then select DH-485_fault_code in the Tag Window. Fault Code Description 5 Remote Device Response STS Byte 4 Command Failed 3 Response Timeout 2 Transaction ID Mismatch 1 Bad Command 0 No DH-485 Fault When DH485_fault_code > 0, DH485_general_fault = 1 (DH-485 fault). When DH485_fault_code = 0, the remote device received and accepted (acknowledged) the message sent by the motion controller.
552 Fault Variables Response Timeout A response timeout fault (DH485_fault_code = 3) indicates that a message was successfully sent to the remote device, but no response was received from the remote device within the timeout period. The timeout period is approximately one second per valid network node address. For example, if all 31 DH-485 nodes are used, the timeout period is about 31 seconds. Verify that the remote device is operating properly.
553 SLC Fault Code When a fault occurs within the SLC interface, the SLC_fault_code variable determines the type of fault, as follows: Fault Code Type Description 0 No fault When no SLC faults have occurred, the variables SLC_fault and SLC_fault_code both = 0 1 SLC process fault Occurs when the dedicated SLC process fault bit is set to 1 by the SLC application program. This allows the SLC application program to generate a fault condition in the 1394 Turbo.
554 Fault Variables Drive Hard Fault 1394 A drive hard fault occurs when the system module, or any axis module, detects a fault condition. When this condition occurs, the status LED on the front cover of the 1394 system module flashes red. You can identify the offending module(s) by checking the status of the 1394 axis module hard fault variables, and the 1394 system module hard fault variable.
555 • 0 (false) if not. When Axis_module_hard_fault_1394 = 1, Drive_hard_fault_1394 = 1. The occurrence of one of the following underlying faults triggers the Axis_module_hard_fault_1394: • Axis_bus_loss_fault_1394 • Axis_Drive_over_temp_fault_1394 • Axis_it_fault_1394 • Axis_power_fault_1394 To clear this fault, you must clear the underlying fault with a Reset Fault block, set to Reset 1394.
556 Fault Variables • System_over_temp_fault_1394 • System_phase_loss_fault_1394 • System_smrt_pwr_i_limit_fault_1394 • System_smrt_pwr_pre-charge_fault_1394 • System_smrt_pwr_shunt_timeout_fault_1394 To clear this fault, you must clear the underlying fault with a Reset Fault block, set to Reset 1394. Important: Do not use an Equation block to clear the underlying fault. The Reset Fault block not only resets this variable to zero, it also resets the Drive OK Relay inside the 1394 system module.
557 ! ATTENTION: A hard fault is a serious condition! Be certain to correct the underlying cause of this fault, before clearing the fault and reactivating the drive. Clear this fault with a Reset Fault block, set to Reset 1394. Important: Do not use an Equation block to clear this fault. The Reset Fault block not only resets this variable to zero, it also resets the Drive OK Relay inside the 1394 system module. This relay must be reset before the System Bus can be reapplied.
558 Fault Variables Clear this fault with a Reset Fault block, set to Reset 1394. Important: Do not use an Equation block to clear this fault. The Reset Fault block not only resets this variable to zero, it also resets the Drive OK Relay inside the 1394 system module. This relay must be reset before the System Bus can be reapplied. In the Tag Explorer, select both Axis System Variables and the desired physical axis, then select Axis_bus_loss_fault_1394 in the Tag Window.
559 Important: Do not use an Equation block to clear this fault. The Reset Fault block not only resets this variable to zero, it also resets the Drive OK Relay inside the 1394 system module. This relay must be reset before the System Bus can be reapplied. In the Tag Explorer select both Axis System Variables and the desired physical axis, then select Axis_Motor_over_temp_fault_1394 in the Tag Window.
560 Fault Variables Clear this fault with a Reset Fault block, set to Reset 1394. Important: Do not use an Equation block to clear this fault. The Reset Fault block not only resets this variable to zero, it also resets the Drive OK Relay inside the 1394 system module. This relay must be reset before the System Bus can be reapplied. In the Tag Explorer, select both Axis System Variables and the desired physical axis, then select Axis_Drive_over_temp_fault_1394 in the Tag Window.
561 Important: Do not use an Equation block to clear this fault. The Reset Fault block not only resets this variable to zero, it also resets the Drive OK Relay inside the 1394 system module. This relay must be reset before the System Bus can be reapplied. In the Tag Explorer, select both Axis System Variables and the desired physical axis, then select Axis_it_fault_1394 in the Tag Window. System Bus Over Voltage Fault 1394 The System_bus_over_voltage_flt activates if drive bus reaches 810V.
562 Fault Variables In the Tag Explorer select General System Variables, then select System_bus_over_voltage_flt_1394 in the Tag Window. System Bus Under Voltage Fault 1394 If at any time the drive bus falls below 275V, the sysem_bus_undr_voltage_flt_1394 activates. System_bus_undr_undr_voltage_flt_1394 is a logical (Boolean) variable, with a value of: • 1 (true) if the drive bus falls below 275V at any time, and • 0 (false) if not.
563 System Over Temp Fault 1394 The System_over_temp_fault_1394 is activated if the ambient air temperature inside the system module becomes too hot. System_over_temp_fault_1394 is a logical (Boolean) variable, with a value of: • 1 (true) if the ambient air temperature inside the system module becomes too hot, and • 0 (false) if not.
564 Fault Variables In the Tag Explorer select General System Variables, then select System_over_temp_fault_1394 in the Tag Window. System Control Power Fault 1394 The System_control_power_fault_1394 occurs when the 1394 system module detects that voltages, generated by the power supply for the control, are below acceptable limits.
565 System Phase Loss Fault 1394 A System_phase_loss_fault_1394 occurs when the 1394 system module detects that one or more phases of the main power supply is missing. System_phase_loss_fault_1394 is a logical (Boolean) variable, with a value of: • 1 (true) if the 1394 system module detects that one or more phases of the main power supply are missing, and • 0 (false) if not. When System_phase_loss_fault_1394 = 1, System_module_hard_fault_1394 = 1, and Drive_hard_fault_1394 = 1.
566 Fault Variables System Ground Fault 1394 A System_ground_fault_1394 occurs when the 1394 system module detects that there is significant current flowing through the earth ground connection to the drive. This usually results from improper installation of the 1394 drive system.
567 System Smart Power I Limit Fault 1394 The Programmable Integrated Controller (PIC) processor, in the Smart Power system module, monitors the DC link current to protect the DC bus pins when maximum power is being consumed in either normal operation or a common bus mode.
568 Fault Variables ! ATTENTION: A hard fault is a serious condition! Be certain to correct the underlying cause of this fault, before clearing the fault and reactivating the drive. When System_smrt_pwr_pre-charge_fault_1394 = 1, System_module_fault_status_1394 = 10.
Chapter 29 Status Variables Variable Units Servo Master Only Virtual Imaginary Status variables allow any of the various status conditions within the motion controller to be used as elements in an expression. Mathematical variables for axis status, program status, and the front panel status LEDs, as well as logical variables for individual axis status conditions, are provided as shown in the table below.
Variable Units Master Only Virtual Imaginary Status Variables Servo 570 Watch_Pos_status 0 (False) or 1 (True) ✓ ✓ ✓ ✓ Output_limit_status 0 (False) or 1 (True) ✓ AxisLink_status 0 (False) or 1 (True) Interp0_status 0 (False) or 1 (True) Interp1_status 0 (False) or 1 (True) Accel_status_Interp0 0 (False) or 1 (True) Accel_status_Interp1 0 (False) or 1 (True) Decel_status_Interp0 0 (False) or 1 (True) Decel_status_Interp1 0 (False) or 1 (True) Merge_status_Interp0 0 (False) or
571 All status variables—except Status_LEDs—are read-only. Status_LEDs can also be used within an expression, and can be used to display a code on the motion controller’s front panel Status LEDs. Each of the variables in the table above is described in the following pages. Axis Status Axis_status is an integer value representing the present status of a specific axis. In the Tag Explorer, select both Axis System Variables and the desired physical axis, then select Axis_status in the Tag Window.
Description Runtime Display Virtual 4 Homing HOMING ✓ ✓ ✓ 3 Moving or Executing Time-Lock Cam MOVING ✓ ✓ 2 Jogging JOGGING ✓ ✓ 1 Axis Unlocked UNLOCK ✓ ✓ 0 Axis Locked LOCKED ✓ Imaginary Status Code Master Only Status Variables Servo 572 Axis status conditions are prioritized from highest to lowest in the order shown in the table. The higher the status value, the higher its priority (or severity).
573 See the individual axis status conditions for an explanation of each axis status condition. Acceleration Status Accel_status is a logical (Boolean) variable which has values of: • 1 (true) if the axis is accelerating • 0 (false) if not In the Tag Explorer, select both Axis System Variables and the desired physical or imaginary axis, then select Accel_status in the Tag Window.
574 Status Variables In the Tag Explorer, select both Axis System Variables and the desired physical or imaginary axis, then select Decel_status in the Tag Window. The value of the Decel_status variable indicates whether or not the axis is currently decelerating because of a previous Interpolate Axes, Move Axis, Jog Axis, or Stop Motion block. .
575 • 1 (true) if the feedback loop of a servo axis is enabled • 0 (false) if not In the Tag Explorer, select both Axis System Variables and the desired physical axis, then select Feedback_status in the Tag Window. You can directly enable feedback using a Feedback block with Feedback On selected. You can also enable feedback using a Home Axis block, depending on the selected homing procedure. You can directly disable feedback using a Feedback block with Feedback Off selected.
576 Status Variables • 1 (true) if the axis is jogging, and • 0 (false) if not. In the Tag Explorer, select both Axis System Variables and the desired physical or imaginary axis, then select Jog_status in the Tag Window. Jogging is initiated by a Jog Axis block, and stopped by a Stop Motion or Change Dynamics block. When Jog_status = 1, Axis_status = 2 if no faults are active on the axis.
577 Programmed Position Lock Tolerance Value Lock_status = 1 Lock_status = 0 – Position Lock Tolerance Lock_status = 0 + 0.0 Position Error See the Setup section of the Installation and Setup manual for your motion controller for more information on position lock tolerance. When Lock_status = 1, Axis_status = 0 if no faults are active and no motion is being commanded on the axis. When Lock_status = 0, Axis_status = 1 if no faults are active and no motion is being commanded on the axis.
578 Status Variables Gearing Status Gearing_status is a logical (Boolean) variable which has values of: • 1 (true) if electronic gearing is active for the axis • 0 (false) if not In the Tag Explorer, select both Axis System Variables and the desired physical or imaginary axis, then select Gearing_status in the Tag Window. Gearing is activated by a Gear Axes block and stopped by a Disable Gearing or Stop Motion block. When Gearing_status = 1, Axis_status ≤ 5 if no faults are active on the axis.
579 Registration Input Registration_status =0 Registration Event Set Up Registration_status =1 Registration Event Occurs Important: Until the registration event is set up, the value of the Registration_status variable is undefined and may be 0 or 1. If no registration event has previously been set up for the axis, Registration_status is 0. If a previous registration event has been set up, Registration_status is 1, if the previous event occurred and 0 if not.
580 Status Variables Position Lock Cam Status PCAM_status is a logical (Boolean) variable which has values of: • 1 (true) if a position-lock cam has been initiated and is active for the axis • 0 (false) if not In the Tag Explorer, select both Axis System Variables and the desired physical or imaginary axis, then select PCAM_status in the Tag Window.
581 Position Lock Cam Pending Profile Status PCAM_pending_profile_status is a logical (Boolean) variable which has values of: • 1 (true) if a new position-lock cam profile is currently pending for the axis • 0 (false) if not Slave Position Current Profile New Profile Master Position PCAM_pending_ profile_status .
582 Status Variables In the Tag Explorer, select both Axis System Variables and the desired physical or imaginary axis, then select PCAM_auto_correction_status in the Tag Window. Auto-correction is enabled and disabled in the Configure Cam block. Auto-correction on an axis is automatically disabled when the positionlock cam, of which the axis is a slave, is stopped.
583 If no watch position event has previously been set up for the axis, Watch_Pos_status is 0. If a previous watch position event has been set up, Watch_Pos_status is: • 1 if the previous event occurred • 0 if not Set up Watch Position events in a Watch Control block, with Arm and Watch Position. Watch Position events are canceled when the watch position event occurs, or by using a Watch Control block with Disarm selected.
Status Variables Servo Output Output_Limit_status =1 Servo Output Limit Error . Output_Limit_status =0 Output_Limit_status =1 584 The servo output limit is set in the motion controller’s machine setup menu, or by using a Motion Settings block with Set Output Limit selected. The servo output limit specifies the maximum voltage (±) that the servo output is allowed to produce.
585 In the Tag Explorer, select both Axis System Variables and the desired virtual axis, then select Output_limit_status in the Tag Window. Virtual axes are enabled and disabled by a Virtual Axis Control block. When AxisLink_status = 1, Axis_fault = 0 and Axis_status = 6 if no faults are active on the axis, and Global_fault = 0 if no other faults are active on any axis. When AxisLink_status = 0, Axis_status = 12 if no faults are active on the axis, and Global_fault = 0 if no faults are active on any axis.
586 Status Variables Interpolator Deceleration Status Decel_status_Interp0 and Decel_status_Interp1 are logical (Boolean) variables which have values of: • 1 (true) if the corresponding interpolator is commanding vector deceleration of the associated axes • 0 (false) if not In the Tag Explorer select General System Variables, then select either Decel_status Interp0 or Decel_status_Interp1 in the Tag Window.
587 Status LEDs Three general purpose status LEDs are provided on the front panel of the motion controller. Labeled STATUS 0, STATUS 1, and STATUS 2, these LEDs indicate the results of the power-up diagnostics, performed whenever power is applied. After the power-up diagnostics, the three status LEDs can be used for any desired purpose. Status_LEDs is a mathematical variable used to turn the status LEDs ON and OFF.
588 Status Variables Program Status Program_status is an integer value representing the current state of the application program in the motion controller. When used in an expression in a GML Commander diagram, the Program_status variable always has values of 1 indicating that the application program is running.
589 Value Description 3 CNET Fault 2 Failing 1 Offline 0 Online CNET Fault status (CNET_status = 3) indicates that a CNET fault has occurred (i.e., CNET_fault = 1). For information on the cause of the particular fault, check the value of the CNET_fault_code variable, then refer to the chapter on Fault Variables in this manual for that CNET_fault_code value and description. Failing status (CNET_status = 2) indicates that the CNET plug card is experiencing temporary errors.
590 Status Variables SLC Status SLC_status is an integer value identifying the mode in which the SLC is operating, as follows: Status Description 0 Program Mode 1 Run Mode 2 (not used) 3 Faulted Mode When SLC_status = 0 (Program mode), the SLC is in the mode for creating or programming a ladder logic program in the SLC. When SLC_status = 1 (Run mode), the SLC is executing or running a previously programmed SLC ladder logic program.
591 • 1 (true) if the SLC is requesting to send M0 file data to the 1394 Turbo controller, and • 0 if not. An SLC_M0_Update_Request precedes an SLC_M0_Update_Acknowledge variable.
592 Status Variables In the Tag Explorer select General System Variables, then select DH485_status in the Tag Window. When DH485_status = 2, the motion controller is busy doing one of the following caused by a DH-485 Value block with either Send or Read selected: • Reading a value. • Sending a value. • Waiting for an acknowledgment or reply from a remote device on the DH-485 network. When DH485_status = 1, the motion controller is not communicating on the DH-485 network.
593 In the Tag Explorer, select both Axis System Variables and the desired physical axis, then select Axis_it_limit_status in the Tag Window. System Module Fault Status 1394 System_Module_Fault_Status_1394 is an integer value representing the highest priority fault condition currently active in the system module. The table below shows the System Module Fault 1394 Status 1394 values, and the corresponding message that appears in a System Fault 1394 field in the runtime display (if enabled).
594 Status Variables Axis Module Fault Status 1394 Axis_module_fault_status_1394 is an integer value representing the highest priority fault condition currently active in the axis module. The table below shows the 1394 Axis Module Fault Status values, and the corresponding message that appears in an Axis Fault field in the runtime display (if enabled).
595 • 1 (True) if forward, bus charging or regenerative current reaches 80% if the Smart Power system module 34 amperes Root Mean Square (RMS) continuous limit, or • 0 (False) if not.
596 Status Variables Publication GMLC-5.
Chapter 30 Diagnostic Variables Diagnostic variables let you include axis and system conditions as elements in an expression. All diagnostic variables—except Analog_Test_Outputs_1394—are read-only (they can be used in an expression, but cannot be assigned a value). Analog_Test_Outputs_1394 can both be used in an expression and be assigned a value.
598 Diagnostic Variables In the Tag Explorer select General System Variables, then select Analog_test_output_0_1394 in the Tag Window. If you set the Analog_Test_0_Mode_1394 data parameter to 0 (using a Control Settings block with Adjust selected), you can also assign this variable a value (using an Equation block with Configured selected) that is converted to an equivalent voltage on the A_TEST_0_output_1394. The voltage range of this output is -10 to +10 Volts.
599 If you set the Analog_Test_1_Mode_1394 data parameter to 0 (using a Control Settings block with Adjust selected), you can also assign this variable a value (using an Equation block with Configured selected) that is converted to an equivalent voltage on the A_TEST_1_output_1394. The voltage range of this output is -10 to +10 Volts.
600 Diagnostic Variables Axis kw 1394 The Axis_kw_1394 variable reports the kilowatt rating of the associated 1394 Axis Module. In the Tag Explorer, select both Axis System Variables and the desired physical axis, then select Axis_kw_1394 in the Tag Window. Axis Rated Current 1394 The Axis_rated_current_1394 variable reports the maximum current rating of the associated 1394 Axis Module in Amps.
601 System Smart Power Motor Power Percent Used 1394 The System_smrt_pwr_mtr_pwr_%_used_1394 variable reports motoring (forward direction) power utilization in the Smart Power system module, as a percentage of the 34 Amperes Root Mean Square (RMS) continuous current limit. System Smart Power PIC Software Version 1394 The System_smrt_pwr_pic_sftwr_ver_1394 defines the software version of the Programmable Interface Controller (PIC) processor in the Smart Power system module.
602 Diagnostic Variables Publication GMLC-5.
Chapter 31 System Functions The Expression Builder presents two types of system functions: • Motion controller functions, which provide indirect addressing of variables, and direct access to cam profile tables and I/O • Mathematical Functions, which provide standard algebraic and trigonometric functions for use in expressions You include a system function in an expression by selecting System Functions in the Tag Explorer. In the Tag Window, select the desired function.
604 System Functions Motion Controller Functions Motion controller functions provide indirect addressing of variables and direct access to cam profile tables and the discrete I/O of the motion controller. The available motion controller functions are listed below.
Motion Controller Functions 605 Function Argument RIO_group_input Address 0 – 99, Total Signals in Group 1 - 16, Optional Mask RIO_scanner_group_input Group Address, Total Signals, Optional Mask SLC_bit_group_input Address 0 – 39, Total Signals in Group 1 – 16, Optional Mask AxisLink_group_input Controller Node, Address, Total Signals in Group, Optional Mask Flex_IO_group_input Module, Address, Total Signals in Group, Optional Mask Output Address 0 – 11 Axis_output Address 0 – 1 RIO_output
606 System Functions Function Argument Flex_IO_module_type Module Type Number Master_CAM_position PCAM Master Point: S Class controllers 0 – 1999 Compact and 1394 controllers 0 - 12999 Master_CAM_time TCAM Master Point: S Class controllers 0 – 1999 Compact and 1394 controllers 0 - 12999 Slave_CAM_position PCAM Slave Point: S Class controllers 0 – 1999 Compact and 1394 controllers 0 - 12999 Each of the motion controller functions is explained on the following pages.
Motion Controller Functions 607 Indirect_variable[address] Insert a value or expression equal to the desired user address. The argument is evaluated as an integer (floating-point values are truncated), and must have a value from 0 to 999 for Integrated and Basic controllers, or from 0 to 1999 for Compact and 1394 controllers. For example, lets say user variables 900 through 909 store an array of axis positions, to be used depending on which product is selected by an operator.
608 System Functions Argument Description File Number An integer value from 0 to 15. Element The selected file’s specific element number. File types have the following kinds and numbers of elements: BinaryWords0 – 1023 Integer16-bit Integer values0 – 1023 FloatingFloating-Point values0 – 511 ASCIICharacters0 – 2047 BCD4-digit BCD Integers0 – 10-23 IntFloatFloating Point values0 – 511 Sub-element If you selected Binary File Type, this is the selected element’s specific bit (from 0 to 15).
Motion Controller Functions 609 Indirect SLC M0 Integer Variable Use the Indirect_SLC_M0_Integer_variable to transfer large, non-timecritical groups of data—such as endpoints and CAM tables—from the SLC to the 1394 GMC Turbo in integer format. You define and select SLC M0 Integers using the Tag Explorer (under SLC M0 Integer) and the Tag Window. It is not necessary to use the Indirect SLC M0 Integer Variable function to specify them directly.
610 System Functions You define and select SLC M1 Integers using the Tag Explorer (under SLC M1 Integer) and the Tag Window. It is not necessary to use the Indirect SLC M1 Integer Variable function to specify them directly. Syntax: Indirect_SLC_M1_Integer_variable[variable number] Insert a value or expression equal to the desired variable number. The argument is evaluated as an integer, and must have a value from 0 to 511.
Motion Controller Functions 611 RIO Scanner Variable Use the RIO_scanner_variable function to directly specify RIO scanner formatted data input groups in an expression. You define and select RIO scanner inputs using the Tag Explorer (under RIO Formatted Input) and the Tag Window. It is not necessary to use the RIO Scanner Variable function to specify them directly.
612 System Functions Syntax: Task_status[task number] Type an integer value or expression, from 0 to 9 inclusive, representing the task number you want to check. The table below shows the Task_status function’s returnable values, and the status indicated by each value. Value Status 2 Task suspended 1 Task running 0 Task stopped or never started A task is: • suspended, if it has been paused by a Stop Dispatcher command in the Task Control block.
Motion Controller Functions 613 Insert a value or expression equal to the desired address. The argument is evaluated as an integer (floating point values are truncated) and must have a value from 0 to 11 inclusive. The Input function evaluates as 1 (true) if the input is ON, and 0 (false) if it is OFF. Miscellaneous Inputs Use the Miscellaneous Input function to include the state of the non-axisspecific, dedicated input on the motion controller in an expression.
614 System Functions The Miscellaneous Input function is evaluated as 1 (true) if the input is ON and 0 (false) if it is OFF. The Miscellaneous Input function reads the current physical state (ON/OFF) of the input. Axis Input Use the Axis_input function to include the state of the motion controller’s axis specific, dedicated, discrete inputs in an expression. After selecting Axis_input in the Expression Builder’s Tag Window, be sure to select the desired Axis in the pop-up menu.
Motion Controller Functions 615 The argument is evaluated as an integer (floating point values are truncated) and must have a value between 0 and 9 inclusive. The Axis_input function is evaluated as 1 (true) if the input is ON and 0 (false) if it is OFF. The Axis_input function reads the current physical state (ON or OFF) of the input. The Contacts? setting (NORMAL OPEN or NORMAL CLOSED) in the motion controller’s machine setup menu is ignored for the overtravel and drive fault inputs.
616 System Functions User-Defined Discrete Inputs Correspond to PLC Outputs in I/O Group… Starting Group 0 2 4 6 0 2 4 0 2 0 Rack Size 1/4 1/2 3/4 Full * User-defined discrete inputs 0 – 3 correspond to PLC output bits 14 – 17 (octal) in the appropriate I/O group. The RIO_input function is evaluated as 1 (true) if the input is ON and 0 (false) if it is OFF.
Motion Controller Functions 617 SLC Bit Input Use the SLC_bit_input function to directly specify the SLC input bits on 1394 motion controllers in an expression. The SLC_bit_input function is not available for Compact, Integrated, or Basic motion controllers. You define and select SLC input bits in the Tag Explorer (under SLC Input Bit) and Tag Window. It is not necessary to use the SLC_bit_input function to specify them directly.
618 System Functions Flex I/O Input Use the Flex_IO_input function to directly specify Flex I/O discrete inputs in an expression. This function is available only if your motion controller is running iCODE version 3.0 or later (as selected in the General page of the Configure Control Options dialog box). You define and select Flex I/O discrete inputs in the Tag Explorer (under Flex I/O Input) and the Tag Window. It is not necessary to use this function to specify them directly.
Motion Controller Functions 619 Syntax: Flex_I/O_analog_input[module, address] Argument Description Module The Flex I/O module number (from 0 to 7) whose output is read. Address The address of the selected module’s specific input (from 0 to 15) to be read. Group Input Use the Group_input function to directly specify discrete input groups (Integrated and Basic only) in an expression. You define and select input groups in the Tag Explorer (under General Purpose I/O Input Group) and Tag Window.
620 System Functions Optional Masks Use a bit mask to exclude or mask unwanted inputs (bits) from the input group. Using a bit mask lets you create an input group consisting of noncontiguous inputs. For example, you can use a bit mask to create a group consisting of four inputs, starting at input #2 and running through input #5, but excluding input #3. The bit mask is the sum of the binary value of each group input bit whose signal is read.
Motion Controller Functions For this bit in an input group Use this Binary Value 16th 32,768 621 In our example, to create a bit mask for the group beginning at bit #2 and ending at bit #5, but excluding bit #3, add together these binary values: Bit Number / Status Binary Value 2 / ON 1 (the first bit in the group) 3 / OFF 0 (masked) 4 / ON 4 (the third bit in the group) 5 / ON 8 (the fourth bit in the group) Bit Mask = 13 The first input in your group (unless it is masked) has the binary va
622 System Functions Argument Description Total Signals in Group The total number of consecutive signals (from 0 to 16) comprising the group, including any masked (or omitted) signals. Optional Mask An integer representing the sum of the binary value of each group input bit whose signal is read, excluding—or masking—the binary value of every group input bit whose signal is not read. (See Optional Masks in the Group Input section.
Motion Controller Functions 623 You define and select input groups using the Tag Explorer (under SLC Input Group Bit) and Tag Window. It is not necessary to use this function to specify them directly. Syntax: SLC_bit_group_input[address, total signals in group, optional mask] Argument Description Address The address or signal number (from 0 to 39) of the first signal whose output is read.
624 System Functions Argument Description Total Signals in Group The total number of consecutive signals (from 1 to 16) comprising the group, including any masked (or omitted) signals. Optional Mask An integer representing the sum of the binary value of each group input bit whose signal is read, excluding—or masking—the binary value of every group input bit whose signal is not read. (See Optional Masks in the Group Input section.
Motion Controller Functions 625 Output Use the Output function to directly specify the motion controller’s general purpose discrete outputs (Integrated and Basic only) in an expression. You define and select outputs in the Tag Explorer (under General Purpose I/O Output) and Tag Window. It is not necessary to use this function to specify them directly. Syntax: Output[address] Insert a value or expression equal to the desired output address.
626 System Functions The argument is evaluated as an integer (floating-point values are truncated) and must have a value of 0 or 1. The Axis_output function is evaluated as 1 (true) if the output is ON and 0 (false) if it is OFF. RIO Output Use the RIO_output function to directly specify RIO adapter outputs in an expression. This function is available only for Integrated and Basic motion controllers. You define and select RIO adapter outputs in the Tag Explorer (under RIO Adapter Output) and Tag Window.
Motion Controller Functions 627 The RIO_output function is evaluated as 1 (true) if the output is ON and 0 (false) if it is OFF. RIO Scanner Output Use the RIO_scanner_output function to directly specify the RIO scanner outputs, on Integrated and Basic motion controllers, in an expression. You define and select RIO scanner outputs using the Tag Explorer (under RIO Scanner Output) and Tag Window. It is not necessary to use this function to specify them directly.
628 System Functions Insert a value or expression equal to the desired address for the argument. The argument is evaluated as an integer (floating-point values are truncated) and must have a value from 0 to 39. AxisLink Output Use the AxisLink_output function to directly specify the AxisLink outputs, on IMC-S/2xx-L model motion controllers, in an expression. You define and select AxisLink outputs using the Tag Explorer (under AxisLink I/O Output) and Tag Window.
Motion Controller Functions 629 Argument Description Module The Flex I/O module number (from 0 to 7) from which output is sent. Address The address of the selected module’s specific output (from 0 to 15) to be sent. The Flex_IO_output function is evaluated as 1 (true) if the output is ON and 0 (false) if it is OFF. Flex I/O Analog Output Use the Flex_IO_analog_output function to directly specify Flex I/O analog outputs in an expression.
630 System Functions Get Firmware Use the Get_Firmware function to return the current version of firmware used in the motion controller. The returned value will appear as a string of three numerical characters, as follows: If the firmware version is: Get_Firmware returns: 3.9 390 3.9A 391 3.9B 392 Syntax: Get_Firmware[ ] Note: Unlike other system functions, no argument is required for the Get_Firmware function Get_Firmware is available only for firmware versions 3.9 and higher.
Motion Controller Functions 631 Argument Description Optional Mask An integer representing the sum of the binary value of each group output bit whose signal is sent, excluding—or masking—the binary value of every group output bit whose signal is not sent. (See Optional Masks in the Group Input section.) RIO Group Output Use the RIO_group_output function to directly specify RIO adapter output groups in an expression.
632 System Functions Syntax: RIO_scanner_group_output[group, address, total signals in group, optional mask] Argument Description Group The starting group of the output (from 0 to 7) to be sent. Address The address, or signal number (from 0 to 15), of the first signal from which output is sent. Total Signals in Group The total number of consecutive signals comprising the group, including any masked (or omitted) signals.
Motion Controller Functions 633 Argument Description Optional Mask An integer representing the sum of the binary value of each group input bit whose signal is read, excluding—or masking—the binary value of every group input bit whose signal is not read. (See Optional Masks in the Group Input section.) AxisLink Group Output Use the AxisLink_group_output function to directly specify AxisLink output groups in an expression.
634 System Functions You define and select Flex I/O output groups using the Tag Explorer (under Flex I/O Output Group) and Tag Window. It is not necessary to use this function to specify them directly. Syntax: Flex_IO_group_output[module, address, total signals in group, optional mask] Argument Description Module Select the Flex I/O module number (from 0 to 7) from which output is sent. Address Select the address of the selected module’s specific output (from 0 to 15) to be sent.
Motion Controller Functions 635 This system function returns a numeric value based upon the configured Flex IO module installed at the specified module location (0 to 7) as shown in following table: Flex I/O Module Type Module Type Number 1794-IB16 10 1794-IE8 11 1794-IAS 12 1794-IF41 13 1794-OB16 64 1794-OE4 65 1794-OA8 66 1794-OW8 67 1794-0B16P 68 1794-IE 4XOE2 128 1794-IB10XOB6 129 Master Cam Position Use the Master_CAM_position function to store a master axis position in the ca
636 System Functions • 0 to 1999 for firmware versions under 3.0 (Integrated and Basic motion controllers) • 0 to 12999 for firmware versions 3.0 and higher (1394 and Compact controllers). Master Cam Time Use the Master_CAM_Time function to store a master axis time point in the cam table, or use it as an element in an expression. You use the Build Table or Equation block to build time cam master tables. It is not necessary to use this function for this purpose.
Motion Controller Functions 637 After you select an axis from the pop-up menu, insert a value or expression equal to the desired position cam slave table point for the argument. The argument is evaluated as an integer (floating-point values are truncated) and must have a value from: • 0 to 1999 for firmware versions under 3.0 (Integrated and Basic motion controllers) • 0 to 12999 for firmware versions 3.0 and higher (1394 and Compact controllers). Publication GMLC-5.
638 System Functions Publication GMLC-5.
Chapter 32 Mathematical Functions Mathematical functions provide standard algebraic and trigonometric functions for use in expressions. The available mathematical functions are shown in the table below.
640 Mathematical Functions Absolute Value The Absolute_value function is a positive value equal to the magnitude of the argument, as shown below. + Argument – + – The argument can be any floating point value or expression. If the argument is positive, it is not affected by the Absolute_value function. For example, the following expression is evaluated as 10.257 if the user variable Cut_Length has a value of 10.257 or -10.257.
641 + π –1 Argument +1 – The argument can be any floating point value or expression, but it must have a value from -1 to 1, inclusive, because the cosine of an angle is always within this range. The value of the Arc_cosine function is always an angle from 0 to π radians (180°), inclusive. If the argument is not between ±1, the value of the Arc_cosine function is zero. For example, the following expression is evaluated as 1.047xx since the principal angle whose cosine is 0.5 is 1.047 radians (60°).
642 Mathematical Functions + π/2 –1 Argument +1 −π/2 – The argument can be any floating point value or expression, but it must have a value from -1 to 1, inclusive, because the sine of an angle is always within this range. The value of the Arc_sine function is always an angle from -π/2 to π/2 radians (±90°), inclusive. If the argument is not between ±1, the value of the Arc_sine function is zero. For example, the following expression is evaluated as 0.5235xx since the principal angle whose sine is 0.
643 + +π/2 – Argument + −π/2 – The argument may be any floating point value or expression. The value of the Arc_tangent function is always an angle from -π/2 to π/2 radians (±90°), inclusive. For example, the following expression is evaluated as 0.7853xx since the principal angle whose tangent is 1 is 0.7853 radians (45°). Arc_tangent(1) To convert the value of the Arc_tangent function to degrees, multiply by 180 /π.
644 Mathematical Functions +1 –π Argument π –1 The argument can be any floating point value or expression in radians. The value of the Cosine function is always from –1 to +1, inclusive. For example, the following expression is evaluated as 0.5 since the cosine of 1.047 radians (60°) is 0.5. Cosine(1.047) To convert the argument of the Cosine function from degrees to radians, multiply by π/180. For example, the following expression is evaluated as 0.
645 +1 –π Argument π –1 The argument may be any floating point value or expression in radians. The value of the Sine function is always from –1 to +1, inclusive. For example, the following expression is evaluated as 0.5 since the sine of 0.5235 radians (30°) is 0.5. Sine(0.5235) To convert the argument of the Sine function from degrees to radians, multiply by π/180. For example, the following expression is evaluated as 0.
646 Mathematical Functions + –π/2 π/2 Argument – The argument can be any floating point value or expression, but it must not be a multiple of ±π/2 radians (±90°), since the tangent of ±π/2 radians is ±∞, and thus undefined. For example, the following expression is evaluated as 1 since the tangent of 0.7853 radians (45°) is 1. Tangent(0.7853) To convert the argument of the Tangent function from degrees to radians, multiply by π/180.
647 +2 +1 –2 –1 +2 +1 Argument –1 –2 The argument may be any floating-point value or expression. For example, the following expression is evaluated as 10 if the user variable Cut_Length has a value between 9.5 and 10.49 (9.5 ≤ Cut_Length < 10.49), 11 if Cut_Length has a value between 10.5 and 11.49 (10.5 ≤ Cut_Length < 11.49), etc. Round(Cut_Length) Round Up The Round_up function rounds the argument up to the next higher integer value, as shown below. Publication GMLC-5.
648 Mathematical Functions +2 . +1 –2 +1 +2 Argument –1 –1 –2 The argument can be any floating point value or expression. For example, the following expression is evaluated as 10 if the user variable Cut_Length has a value between 9 and 10 (9 < Cut_Length ≤ 10), 11 if Cut_Length has a value between 10 and 11 (10 < Cut_Length ≤ 11), etc. Round_up(Cut_Length) Round Down The Round_down function rounds the argument down to the next lower integer value, as shown below. Publication GMLC-5.
649 +2 +1 –2 –1 +2 +1 Argument –1 –2 The argument can be any floating point value or expression. For example, the following expression is evaluated as 9 if the user variable Cut_Length has a value between 9 and 10 (9 ≤ Cut_Length < 10), 10 if Cut_Length has a value between 10 and 11 (10 ≤ Cut_Length < 11), etc. Round_down(Cut_Length) Integer Value The value of the Integer function is the integer part of the argument, as shown below. Publication GMLC-5.
650 Mathematical Functions +2 +1 –2 –1 +2 +1 Argument –1 –2 The argument can be any floating point value or expression. Note that for positive arguments, the action of the Integer function is identical to that of the Round_down function, while for negative arguments, it is identical to the Round_up function.
651 4 e 3 2 1 –2 –1 +2 +1 Argument The argument may be any floating-point value or expression. The constant e is the base of the natural system of logarithms. It is an irrational number, which to 15 decimal places, is equal to 2.71828 18284 59045. For example, the following expression is evaluated as 2.7182xx (e) since anything raised to the power of 1 is itself. Exponent(1) Natural Logarithm The value of the Log function is the natural logarithm (loge or ln) of the argument, as shown below.
652 Mathematical Functions +2 +1 1 –1 e 2 3 Argument 4 –2 The base of the Log function is e, is an irrational number, which to 15 decimal places, is equal to 2.71828 18284 59045. The argument can be any floating point value or expression, but must be greater than zero. A negative or zero argument gives a value of 0 for the Log function. For example, the following expression is evaluated as 0.693xx since ln 2 = 0.6931. Log(2) Note that the Log function is the inverse of the Exponent function.
653 Square Root The value of the Square_root function is the square root ( argument, as shown below. ) of the 3 2 1 1 2 3 Argument 4 5 The argument may be any floating point value or expression, but must be positive. A negative argument gives a value of 0 for the Square_root function. For example, the following expression is evaluated as 5 if the user variable Cut_Length has a value of 25. Square_root(Cut_Length) Publication GMLC-5.
654 Mathematical Functions Publication GMLC-5.
Chapter 33 Using AxisLink The AxisLink option for your motion controllers lets you use axes on other motion controllers (also with the AxisLink option) or an ALEC (AxisLink Encoder Converter) as master axes for electronic gearing and cams. This means that axes on different motion controllers can be synchronized, providing real-time coordination for distributed, multi-axis systems in electronic gearing, cam, and lineshaft applications.
656 Using AxisLink Virtual Axes An axis on one motion controller, which is linked to an axis on another motion controller or ALEC via AxisLink, is called a virtual axis. A virtual axis in one motion controller can be linked to any physical or imaginary axis on any other motion controller or ALEC via AxisLink. Thus, virtual axes are functionally identical to extra encoder inputs on the motion controller.
Getting Started 657 Connecting the AxisLink Cable For information on connecting the AxisLink cable, including an explanation of extended length mode, referenced above, see AxisLink information in the Installation and Hookup section of the Installation and Setup manual for your motion controller. Also, see Connecting AxisLink in the Installation & Hookup chapter of the ALEC Installation and Setup manual (publication 4100-5.3).
658 Using AxisLink Note: If you also select Extended AxisLink, your controller can read output from up to 15 remote motion controllers or ALECs. This Extended AxisLink option is available only for 1394 or Compact controllers using iCODE version 3.5 or higher. 4. Select the AxisLink tab. The AxisLink page appears. 5. In the Address of This Control field select the address of the controller to which the current GML Commander diagram is downloaded.
Configuring Virtual Axes 659 AxisLink is not finally enabled until the diagram is downloaded to the controller. To enable AxisLink immediately, do one of the following: • Create a null diagram by connecting the Start block to the End block then download the null diagram to the motion controller. • Use a Control Setting function block, with Adjust selected, to enable the AxisLink Data Bit.
660 Using AxisLink AxisLink provides two virtual axes for use in each GML Commander diagram. However, only one of these can be in use at any time. The second virtual axis is provided to facilitate switching between two different master axes on the fly. If the motion controller does not need to switch master axes on the fly, only one of the virtual axes needs to be defined. To configure a virtual axis: 1. From the menu bar, select Configure. The Configure menu appears. 2. Select Control Options.
Configuring Virtual Axes 661 The Configure Axis Use dialog box appears. 9. In the General page of the Configure Axis Use dialog box, make the following entries: Field Description Remote Address Select the remote address of the controller or ALEC to which this virtual axis is to be linked.
662 Using AxisLink Example of a virtual axis configuration The axis configuration, shown below, links virtual axis 0 in this motion controller to physical Axis 2 of the motion controller whose address is 3 via AxisLink. Like a physical axis, set each AxisLink virtual axis’ Mode (rotary or linear), Units and Display Formats, Conversion Constant, Unwind Constant (rotary axes only) and Home Position.
Using Virtual Axes 663 See AxisLink Blocks in the Functional Blocks chapter of this manual for more information on the Virtual Axis Control block. After enabling a virtual axis, the variable Axislink_status = 1 for that virtual axis. The virtual axis can be tested, while moving the linked motion controller’s physical axis, by reading its actual position using General Watch.
664 Using AxisLink • Show Axis Status • Control Setting See the descriptions of the above blocks in the Function Blocks chapter of this manual for more information on using virtual axes with each of them. ! ATTENTION: Ensure that all motion controllers and ALEC(s) on AxisLink are using the same Servo Update Rate.
Using Virtual Axes 665 Passively homing the virtual axis—or any axis—causes no motion. The passive homing operation is complete when the physical axis, to which the virtual axis is linked, is caused to move past its encoder marker pulse. See Home Axis in the Function Blocks chapter of this manual for more information on passive homing. The homing status of the virtual axis can be checked using either its Homing_status variable, or an On Axis block, as is the case with a physical axis.
666 Using AxisLink However, the registration input of the physical axis to which the virtual axis is linked must be activated or deactivated (as determined by the Watch Control dialog box settings) to cause the registration event on the virtual axis. See Watch Control in the Function Blocks chapter of this manual for more information on registration. The registration status of the virtual axis can be checked using either its Registration_status variable, or an On Watch function block.
Using AxisLink I/O 667 Using AxisLink I/O Each motion controller on AxisLink has 16 user-definable discrete outputs. These can be read as AxisLink inputs by any other motion controller on AxisLink, and can be used for program synchronization, etc. Thus, each motion controller on AxisLink has a maximum total of 112 (112 = 7 x 16) AxisLink inputs in addition to its own 16 outputs. Like other discrete I/O in the motion controllers, AxisLink I/O can be defined singly or in groups of up to 16 I/O.
668 Using AxisLink 4. In the AxisLink I/O Output (or Output Group) dialog box, complete the output name, address and (if applicable) group I/O options settings. See Online Help for further instructions. AxisLink Inputs I/O connections to other motion controllers must be configured before any AxisLink inputs from these other linked motion controllers can be defined and used in the GML Commander diagram. Configuring AxisLink Inputs To configure the AxisLink I/O input connections: 1.
Using AxisLink I/O 669 Note: In the above example, controller address number 4—the address of the controller receiving input—is not available. Addresses 8 through 15 are enabled only by selecting Extended AxisLink in the General page of the Configure Control Options dialog box. Defining AxisLink Inputs After the AxisLink I/O Connections have been configured, the next step is to define the AxisLink inputs that are used in the GML Commander diagram. 1.
670 Using AxisLink A menu appears. Tag Explorer Tag W in d ow 3. Select New. The AxisLink I/O Input (or Input Group) dialog box appears. 4. Complete the input name, address and (if applicable) group I/O options settings. See Online Help for more information on defining AxisLink inputs and input groups.
Reading Values via AxisLink 671 For example, suppose this motion controller needs to know the status of another motion controller (with an address of 2) on AxisLink. Motion controller 2 has a user variable (User Variable 10) defined that contains a numeric value indicating its status. The following Read Remote Value block in the GML Commander diagram for this motion controller, is then used to read the status variable from controller 2 and store the value in the local user variable Controller_2_Status.
672 Using AxisLink It is not possible to directly write a variable or parameter value to another controller via AxisLink. However, a discrete AxisLink output on this motion controller can be used to tell another motion controller to request a value using a Read Remote Value block, thus accomplishing the same thing.
Handling Faults 673 In most applications, AxisLink faults should be handled as part of a global fault handling task or routine in the diagram. See End Program in the Function Blocks chapter of this manual for information on the recommended global fault handler. Since an AxisLink fault in one motion controller can also cause AxisLink faults in other motion controllers in the chain, the fault recovery routine must consider the application programs running in other motion controllers.
674 Using AxisLink If a virtual axis connection could not be established by a Virtual Axis Control block (the axis, motion controller, or ALEC could not be found), the link is said to have failed. When an attempted connection fails, AxisLink_failed = 1, Axis_fault = 6, Axis_status = 13, and Global_fault = 9. In addition, the AxisLink LED on the front panel flashes green.
Handling Faults • By communication errors on the link. • If AxisLink on this controller is offline (not operating). 675 When one of these faults occur, AxisLink_general_fault = 1 and Global_fault = 8 if no virtual axis faults are active. The specific cause of an AxisLink general fault can be determined by the value of the AxisLink_fault_code variable. See the System Variables i chapter in this manual for a description of the AxisLink_fault_code values and the causes of each condition.
676 Using AxisLink The Handle Virtual Axis Faults module checks for a timeout or failure on both virtual axes. The faulty axis is disabled, the fault is cleared, and the virtual axis re-enabled as shown below. Publication GMLC-5.
Handling Faults 677 The Handle AxisLink General Faults module checks for all possible values of the AxisLink_fault_code variable and takes the appropriate action, as shown below. Publication GMLC-5.
678 Using AxisLink If the link is offline, AxisLink is disabled and then re-enabled—this is the only way to clear the offline condition. As long as the link is not offline, AxisLink data and I/O communication with other controllers is temporarily stopped, the fault variables are cleared, and data and I/O communication with other controllers restored.
Performance Considerations 679 Note: In the block, above, the AxisLink_Nodes_Addresses user variable was declared for use by another Control Settings block (found in the Start of Program GML Commander module, included in the GML Commander module library). The AxisLink_Nodes_Addresses user variable was input as the Set To value using the Expression Builder. For more information on user variables, see the User Variables chapter in this manual.
680 Using AxisLink On the other hand, the CPU utilization of the motion controller to which a virtual axis is linked is not increased by having one of its axes linked to by another controller or multiple controllers. Once an AxisLink connection is established between two modules (motion controllers or ALECs), reading AxisLink inputs, setting AxisLink outputs, or reading values over AxisLink does not affect the CPU utilization of either controller. Publication GMLC-5.
Chapter 34 Using the RIO Adapter Option The Remote I/O option provides RIO Adapter functionality for the 1394 GMC/GMC Turbo, Compact, Integrated, and Basic motion controllers. For IMC-S/20x-R and IMC/S21x-R models, the Remote I/O option also provides Scanner functionality. Either way, this option allows the motion controller to communicate directly with an Allen-Bradley PLC or host computer via RIO.
682 Using the RIO Adapter Option When configured as an adapter, both dedicated (pre-defined) and userdefined discrete I/O are available. It provides 12 dedicated discrete inputs for direct control of certain manual functions and 12 dedicated discrete outputs for basic status reporting to the PLC. Up to 100 user-defined inputs and 100 user-defined outputs are also available. These I/O are transferred once each RIO scan.
683 RIO Addressing To the PLC, the motion controller appears as 1/4, 1/2, 3/4, or a full remote rack on the RIO link depending on the setting of the Rack Size parameter in the RIO page of the Configure Control Options dialog box, as explained below. In the figure above, the numbers 0 – 99 correspond to the RIO Input and Output address defined in GML Commander. As implied in the figure above and shown in the following table, the selected rack size determines the total number of user-defined discrete I/O.
684 Using the RIO Adapter Option Remote I/O Adapter Number of User-Defined Discrete I/O Bits Rack Width Inputs Outputs ¾ 68 68 Full 100 100 In general, set the rack size to the smallest value that provides enough user-defined discrete I/O for your application. The Starting Group parameter in the RIO page of the Configure Control Options dialog box determines where in the rack the motion controller RIO adapter appears to the RIO scanner.
Getting Started 685 Important: SLC processors should not use the I/O Group reserved for block transfers in the motion controller RIO Adapter. For example, with a rack size of 1/2 and a starting group of 4, block transfers appear in I/O Group 4, the dedicated I/O and the first four userdefined I/O in I/O Group 5, user-defined I/O 4 – 19 in I/O Group 6, and user-defined I/O 20 – 35 in I/O Group 7. As indicated by N/A, userdefined discrete I/O 36 – 99 are not available with this addressing configuration.
686 Using the RIO Adapter Option Configuring the RIO Adapter Configure the RIO adapter—including baud rate, rack size, and rack address—using either the motion controller’s built-in setup menus or the RIO page of the Configure Control Options dialog box in GML Commander. See RIO Addressing in this chapter for more information on configuring the RIO adapter for your application. Enabling RIO in GML Commander To enable RIO: 1. From the menu bar, select Configure. The Configure menu appears. 2.
Using the Dedicated Discrete Inputs 687 Using the Dedicated Discrete Inputs RIO Adapter Dedicated Discrete Inputs I/O Group: Starting Group + 1 Output SLC PLC Function 0 0 Select Axis 0 for Jog or Home 1 1 Select Axis 1 for Jog or Home 2 2 Select Axis 2 for Jog or Home 3 3 Select Axis 3 for Jog or Home 4 4 Run application Program 5 5 Stop Application Program 6 6 Pause/Resume Application Program 7 7 Kill Control 8 10 Home Selected Axes 9 11 Jog Selected Axes in a Positive Di
688 Using the RIO Adapter Option Homing Axes To directly home an axis from the PLC, select the axis by setting the appropriate axis select bit (0 – 3) and the home selected axes bit (SLC output 8, PLC output 10). To home more than one axis simultaneously, set more than one axis select bit. Axes can be homed using this bit only while there is no application program running in the motion controller. This bit has no effect if it is set while the application program is running.
Using the Dedicated Discrete Inputs 689 The recommended ladder logic for homing axes is shown below. Only axes 0 and 1 are shown, but axes 2 and 3 are handled in the same manner. The Rack Address in the motion controller is set to 5 and the Starting Group parameter to 0. Thus the dedicated discrete RIO bits appear in I/O group 1 of rack 5 (I/O:051).
690 Using the RIO Adapter Option While homing is in progress, (provided there are no faults active on the axis) both the axis locked and axis fault dedicated discrete RIO outputs from the motion controller for the selected axes are cleared. When homing has finished successfully and the position error of the axis is less than the position lock tolerance, the axis locked dedicated discrete RIO outputs from the motion controller for the selected axes are set.
Using the Dedicated Discrete Inputs 691 The jog selected axes inputs continuously move the selected axis (or axes) in the specified direction at 100% of maximum speed, and accelerates and decelerates at 100% of that axis’ maximum acceleration and maximum deceleration values.
692 Using the RIO Adapter Option Velocity 100% Velocity 100% Acceleration 100% Deceleration Time Axis Select . Jog Selected Axes Axis Locked While a jog is in progress, both the axis locked and axis fault dedicated discrete RIO outputs from the motion controller for the selected axes are cleared, provided there are no faults active on the axis.
Using the Dedicated Discrete Inputs Program Listing Report PLC-5/30 Rung 2:1 | Jog 0 Axis 1 | Positive Selected | I:002 O:051 +-+---] [----+---]/[----+------------------------------( | | 00 | 01 | | | Jog 0 | | | | Negative| | | | I:002 | | | +---] [----+ | | | 01 | | | Axis 0 Axis 0 | | | Selected Locked | | | O:051 I:051 | | +---] [--------]/[----+ | 00 00 Rung 2:2 | Jog 1 Axis 0 | Positive Selected | I:002 O:051 +-+---] [----+---]/[----+------------------------------( | | 02 | 00 | | | Jog 1 | | | | Nega
694 Using the RIO Adapter Option ! ATTENTION: Do not use the PLC ladder logic shown here for jogging axes in the same PLC program with the ladder logic shown previously for homing axes. Activating the positive or negative jog input for an axis selects that axis in the motion controller as long as the other axis is not selected.
Using the Dedicated Discrete Inputs 695 Stopping Motion with Kill Control Setting PLC or SLC bit 7 stops all motion on all axes, disables feedback on all axes, sets all servo outputs to zero, de-activates all drive enable outputs, aborts the program, and disables the CPU Watchdog. Use this bit only in an emergency, when the motion controller must be disabled quickly.
696 Using the RIO Adapter Option ! ATTENTION: If the motion controller powers up with the Run Application Program bit set, the program will start immediately. These inputs are level-sensitive, not edge-sensitive. Whenever the motion controller sees the run application program bit set—even immediately after power up—and the program is not currently running, it starts running the program.
Using the Dedicated Discrete Inputs Program Listing Report 697 PLC-5/30 Rung 2:0 | Program Run | | Run/Stop Running Program | | I:002 I:051 O:051 | +----] [------]/[-------------------------------------------------( )--+ | 17 10 04 | Rung 2:1 | | | Program Stop | | Run/Stop Running Program | | I:002 I:051 O:051 | +----]/[-------] [------------------------------------------------( )--+ | 17 10 05 | When the run/stop input to the PLC (I:002/17) is activated, the run application program bit in the motion c
698 Using the RIO Adapter Option While the program is paused, the application program running dedicated discrete RIO output from the motion controller (SLC input 8; PLC input 10) remains set. See Dedicated Discrete Outputs later in this section for more information on the application program running bit.
Using the Dedicated Discrete Outputs 699 Axis Locked The axis locked output for each axis (SLC or PLC inputs 0 – 3) is set whenever both the axis is locked onto its command position and no faults are active on the axis. Otherwise, axis locked output is cleared. An axis is locked whenever either of the following two sets of conditions are true: • • Electronic gearing is OFF, and no position-lock cam or interpolated motion is in progress: • No motion (move, jog, or time-lock cam) in progress.
700 Using the RIO Adapter Option Axis Fault The axis fault output for each axis (SLC or PLC inputs 4 – 7) is set whenever an axis fault occurs (Axis_fault > 0). The next table shows the axis faults that trigger an axis fault output, and the corresponding message that appears in the Terminal Window (or Runtime Display, if enabled).
Using the Dedicated Discrete Outputs 701 Application Program Running Running the application program in the motion controller (generated from a GML Commander diagram and previously downloaded) sets either SLC input bit 8, or PLC input bit 10. This bit is cleared when the program stops running. The PLC can use this bit to: • Verify that the program has started or stopped before clearing the run or stop application program bits. • Disable block transfers when the program is not running.
702 Using the RIO Adapter Option Using Block Transfers Block transfers are used to transfer user variable, data parameter, data bit, and cam table values between a data file in the PLC and the motion controller. A block transfer write (BTW) sends data from the PLC to the motion controller, while a block transfer read (BTR) gets data from the motion controller and stores it in the PLC.
Using Block Transfers Program Listing Report 703 PLC-5/30 Rung 2:0 EXAMPLE OF SENDING DATA TO THE MOTION CONTROLLER | BLOCK BLOCK | | TRANSFER S CLASS TRANSFER | | SEND DATA BTW BTR PROGRAM WRITE | | CONDITION ENABLE ENABLE RUNNING CONTROL | | I:002 N10:0 N10:5 I:011 +BTW-----------------+ | +----] [------]/[-------]/[-------] [------+BLOCK TRNSFR WRITE +-(EN)-+ | 00 15 15 10 |Rack 01| | | |Group 0+-(DN) | | |Module 0| | | |Control Block N10:0+-(ER) | | |Data file N13:0| | | |Length 0| | | |Continuous N|
704 Using the RIO Adapter Option Interlocking the block transfers with the program running bit stops the block transfers when the motion controller’s program is not running. This significantly improves the downloading of GML Commander diagrams, cam tables, etc., as well as the operation of the motion controllers built-in setup menus. See Using the Dedicated Discrete Outputs in this chapter for more information on the program running bit.
Using Block Transfers 705 Getting Data from the Motion Controller A block transfer write (BTW), followed immediately by a block transfer read (BTR), is used to get (read) data from the motion controller. The BTW specifies the data to be read; the BTR reads the current values and stores them in a data file in the PLC. Every BTR must be preceded with a BTW to set up the values to be read.
706 Using the RIO Adapter Option ! ATTENTION: The interlocks shown for the block transfers are the minimum required for reliable operation. Other conditions can be required in your application. Other interlocks in the block transfer rungs can be required for your application. At a minimum, you should have the following: • A condition that causes the block transfers (don’t send block transfers on every PLC scan).
Using Block Transfers 707 The data to be read from the motion controller is specified in a data file in the PLC (N14 in the previous example), as explained in Constructing the PLC Data File in this chapter. The data returned by the BTR must be stored in another data file (N7 in the example above) in the PLC. After completing the BTR, this data file contains the returned values. ! ATTENTION: Be sure to specify the correct BTR file type for the numeric format of the transferred values.
708 Using the RIO Adapter Option Constructing the PLC Data File A BTW data file must be constructed in the PLC, regardless whether the PLC is sending data to or getting data from the motion controller. This data file specifies the type of data (variable, data parameter, etc.), the specific data item (which variable, which data parameter, etc.), or the first item if transferring multiple user variables or cam table values, the number of items, and the format of the values to be read or written.
Using Block Transfers 709 RIO Adapter Block Transfer Write Data File Format Word Description 1 First Data Item: t(Word0)=0: t(Word0)=1: t(Word0)=2: t(Word0)=3: t(Word0)=4: t(Word0)=5: t(Word0)=6: User Variable Number Data Parameter Number Data Bit Number Master Cam Table Point Number Master Cam Table Point Number Slave Cam Table Point Number Internal Variable (all hex values): 0000 = Fault Code 0001 = Analog Input Voltage 0002 = Last Keypress 0003 = Actual Position 0004 = Command Position 0005 = Posi
710 Using the RIO Adapter Option RIO Adapter Block Transfer Write Data File Format Word Description 2 Number and Format of Items: fdnn where f is the Numeric Format: 0 = 32-bit integer 1 = 16-bit integer 2 = 32-bit signed BCD 3 = 32-bit floating point 4 = Word-swapped 32-bit integer 5 = Reserved (do not use) 6 = Word-swapped 32-bit signed BCD 7 = Word-swapped 32-bit floating point d is the Number of Decimal Digits (d 2 OF hex) nn is the Number of Sequential Items (nn<60 dec) 3-X Data Item Values (Se
Using Block Transfers 711 RIOI Adapter Block Transfer Write Data Types (Data File Word 0) Description Send Data (Hex) Get Data (Hex) User Variable 7B00 7D00 Axis 0 Data Parameter 7B01 7D01 Axis 0 Data Bit 7B02 7D02 Axis 0 Master Cam Position Point* 7B03 7D03 Axis 0 Master Cam Time Point* 7B04 7D04 Axis 0 Slave Cam Position Point* 7B05 7D05 Axis 0 System Variable — 7D06 Axis 1 Data Parameter 7B11 7D11 Axis 1 Data Bit 7B12 7D12 Axis 1 Master Cam Position Point* 7B13 7D13 Ax
712 Using the RIO Adapter Option RIOI Adapter Block Transfer Write Data Types (Data File Word 0) Description Send Data (Hex) Get Data (Hex) Axis 3 Slave Cam Position Point* 7B35 7D35 Axis 3 System Variable — 7D36 Imaginary Axis (4) Data Parameter 7B41 7D41 Imaginary Axis (4) Data Bit 7B42 7D42 Imaginary Axis Master Cam Position Point* 7B43 7D43 Imaginary Axis Master.
Using Block Transfers 713 First Data Item When transferring only one item, the specific item (of the type specified by word 0 of the data file) is specified in word 1 of the data file. When transferring multiple user variables or cam table points in a single block transfer, the first (lowest numbered) item is specified in word 1, as shown in the table below. Put the appropriate value from the table in word 1 of the BTW data file.
714 Using the RIO Adapter Option 2. Put 0064 (100 decimal = 64 hex) in word 1 of the BTW data file. See detailed information in this chapter on sending or getting each type of item. Number and Format of Items Each digit in the hexadecimal representation of word 2 in the BTW data file is used to represent a different part of the format of the values sent to or read from the motion controller. The numeric format of the values is specified by the most significant hex digit of word 2 in the BTW data file.
Using Block Transfers 715 For example, to send 10 position values for axis 2, and each in 32-bit integer format with three digits to the right of the decimal point, and from the PLC to points 100-109 in the master cam table in the motion controller: 1. Put 7B23 in word 0 of the BTW data file. 2. Put 0064 (100 decimal = 64 hex) in word 1 of the data file. 3. Put 030A (32-bit integer; 3 decimal digits; 10 decimal = 0A hex items) in word 2 of the BTW data file.
716 Using the RIO Adapter Option RIO Adapter Block Transfer Write 32-bit Integer Data File Format Word Description 0 1 2 Data Type First Data Item Number and Format of Items: 0dnn 3 4 First Data Item Value MSW First Data Item Value LSW 5 6 Second Data Item Value MSW Second Data Item Value LSW 2nn+1 2nn+2 Last Data Item Value MSW Last Data Item Value LSW 2nn+3 End-of-Block Delimiter (000D hex) When received by the motion controller, the two integers representing each value are concatenated to f
Using Block Transfers 717 RIO Adapter Block Transfer Write 32-bit Integer Numeric Format Number of Decimal Digits: 0 1 2 3 4 5 Multiply PLC Values by: 1 10 100 1,000 10,000 100,000 6 7 8 9 10 1,000,000 10,000,000 100,000,000 1,000,000,000 10,000,000,000 11 12 13 14 15 100,000,000,000 1,000,000,000,000 10,000,000,000,000 100,000,000,000,000 1,000,000,000,000,000 Maximum Representable Value in the Motion Controller: ±2,147,483,647.0 ±214,748,364.7 ±21,474,836.47 ±2,147,483.647 ±214,748.364 7 ±21,474.
718 Using the RIO Adapter Option Up to 30 sequential user variables or cam table points can be transferred in any one block transfer using 32-bit integer numeric format since each block transfer is limited to a maximum of 64 words, as shown by the following formula: Words 30 Items × 2 ---------------- + 3 Header Words + End-of-Block Word Item = 64 Words If the PLC is getting data from the motion controller, no item values need be specified in the BTW data file and thus the end-of-block delimiter is word
Using Block Transfers 719 The returned values are converted from the floating-point format used in the motion controllers to 32-bit 2s complement integers before being sent to the PLC.
720 Using the RIO Adapter Option RIO Adapter Block Transfer Read 32-bit Integer Format Maximum Item Values Number of Decimal Digits Dec Hex Maximum Item Value 0 1 2 3 4 5 0 1 2 3 4 5 ±2,147,483,647.0 ±214,748,364.7 ±21,474,836.47 ±2,147,483.647 ±214,748.364 7 ±21,474.836 47 6 7 8 9 10 6 7 8 9 A ±2,147.483 647 ±214.748 364 7 ±21.474 836 47 ±2.147 483 647 ±0.214 748 364 7 11 12 13 14 15 B C D E F ±0.021 474 836 47 ±0.002 147 483 647 ±0.000 214 748 364 7 ±0.000 021 474 836 47 ±0.
Using Block Transfers 721 16-bit Integer Format RIO Adapter Block Transfer Write 16-bit Integer Data File Format Word Description 0 1 2 Data Type First Data Item Number and Format of Items: 1dnn 3 4 nn + 2 First Data Item Value Second Data Item Value Last Data Item nn + 3 Value End-of-Block Delimiter (000D hex) When received by the motion controller, each integer is converted to a floating-point value by dividing the received integer values by the following: 10 (Number of Decimal Digits) This me
722 Using the RIO Adapter Option RIO Adapter Block Transfer Write 16-bit Integer Numeric Format Number of Decimal Digits: 0 1 2 3 4 5 Multiply PLC Values by: Maximum Representable Value in Motion Controller: 1 10 100 1,000 10,000 100,000 6 7 8 9 10 1,000,000 10,000,000 100,000,000 1,000,000,000 10,000,000,000 11 12 13 14 15 100,000,000,000 1,000,000,000,000 10,000,000,000,000 100,000,000,000,000 1,000,000,000,000,000 ±32,767.0 ±3,276.7 ±327.67 ±32.767 ±3.2767 ±0.327 67 ±0.032 767 ±0.003 276 7 ±0.
Using Block Transfers 723 If the PLC is getting data from the motion controller, no item values need be specified in the BTW data file and thus the end-of-block delimiter is word 3 (nn = 0). The returned data is stored in the integer (N) data file specified in the BTR. After completing the BTR, this file contains the returned values, as shown below.
724 Using the RIO Adapter Option For example, if two decimal digits are specified and the value of the item is 3.1415926, the value 314 (3.1415926 x 102 = 314.159 (truncated to 314 = 013A hex)) is stored in the returned value file. The PLC must then divide this value by 100 (102), with a result of 3.14—the original value accurate to two decimal places. With 16-bit integer numeric format, the range of values that can be represented is -32,768 to +32,767.
Using Block Transfers 725 32-bit Signed BCD Format RIO Adapter Block Transfer Write 32-bit Signed Data File Format Word Description 0 1 2 Data Type First Data Item Number and Format of Items: 2dnn 3 4 First Data Item Value MSW First Data Item Value LSW 5 6 Second Data Item Value MSW Second Data Item Value LSW 2nn+1 2nn+2 Last Data Item Value MSW Last Data Item Value LSW 2nn+3 End-of-Block Delimiter (000D hex) When received by the motion controller, the two words representing each value are con
726 Using the RIO Adapter Option RIO Adapter Block Transfer Write 32bit Signed BCD Numeric Format Number of Decimal Digits: Multiply PLC Values by: Maximum Representable Value in Motion Controller: 0 1 2 3 4 5 1 10 100 1,000 10,000 100,000 ±79,999,999.0 ±7,999,999.9 ±799,999.99 ±79,999.999 ±7,999.999 9 ±799.999 99 6 7 8 9 10 1,000,000 10,000,000 100,000,000 1,000,000,000 10,000,000,000 ±79.999 999 ±7.999 999 9 ±0.799 999 99 ±0.079 999 999 ±0.
Using Block Transfers 727 Up to 30 sequential user variables, or cam table points, can be transferred in any one block transfer using 32-bit Signed BCD numeric format, because each block transfer is limited to a maximum of 64 words, as shown by the following formula: Words 30 Items × 2 ---------------- + 3 Header Words + End-of-Block Word Item = 64 Words If the PLC is getting data from the motion controller, no data values need be specified in the BTW data file and thus the end-of-block delimiter is word
728 Using the RIO Adapter Option The returned values are converted from the floating-point format used in the motion controllers to 8-digit BCD values before being sent to the PLC.
Using Block Transfers 729 RIO Adapter Block Transfer Read 32-bit Signed BCD Format Maximum Item Values Number of Decimal Digits Dec. Hex. Maximum Item Value 0 1 2 3 4 5 0 1 2 3 4 5 ±79,999,999.0 ±7,999,999.9 ±799,999.99 ±79,999.999 ±7,999.999 9 ±799.999 99 6 7 8 9 10 6 7 8 9 A 11 12 13 14 15 B C D E F ±79.999 999 ±7.999 999 9 ±0.799 999 99 ±0.079 999 999 ±0.007 999 999 9 ±0.000 799 999 99 ±0.000 079 999 999 ±0.000 007 999 999 9 ±0.000 000 799 999 99 ±0.
730 Using the RIO Adapter Option If the PLC is sending data to the motion controller, the remainder of the BTW data file (words 3 through 2nn+2, where nn is the number of items to be sent) contains the values of the specified items, and the last word (word 2nn+3) is the end-of-block delimiter, as shown in the following table.
Using Block Transfers 731 When received by the motion controller, the two integers representing each value are concatenated into the original 32-bit floating-point value. Unlike the preceding fixed-point (integer) formats, 32-bit floating-point format does not require specification of the number of decimal digits in the value. Thus, the second most significant digit of Word 2 in the BTW data file (digit d) should be set to 0 as shown above.
732 Using the RIO Adapter Option RIO Adapter Block Transfer Read 32-bit Floating-Point Returned Values Data File Format Word Description 2nn End-of-Block Delimiter (000D Hex) The returned values are stored in word pairs 0, 1 through 2nn – 2, 2nn – 1 (where nn is the number of items read) as 16-bit integers. The most significant word of the returned value is stored in the lower numbered word of the data file, and the least significant word of the returned value is stored in the higher numbered word.
Using Block Transfers 733 If the PLC is sending data to the motion controller, the remainder of the BTW data file (words 3 through 2nn+2, where nn is the number of items to be sent) contains the values of the specified items, and the last word (word 2nn+3) is the end-of-block delimiter, as shown below.
734 Using the RIO Adapter Option RIO Adapter Block Transfer Read Word-Swapped 32-bit Integer Returned Values Data File Format Word Description 2nn-2 2nn-1 Last Data Item Value Least Significant Word Last Data Item Value Most Significant Word 2nn End-of-Block Delimiter (000D Hex) The returned values are stored in word pairs 0, 1 through 2nn – 2, 2nn – 1 (where nn is the number of items read) in 2s complement format.
Using Block Transfers 735 RIO Adapter Block Transfer Write Word-Swapped 32-bit Signed BCD Data File Format Word Description 3 4 First Data Item Value Least Significant Word First Data Item Value Most Significant Word 5 6 Second Data Item Value Least Significant Word Second Data Item Value Most Significant Word 2nn+1 2nn+2 Last Data Item Value Least Significant Word Last Data Item Value Most Significant Word 2nn+3 End-of-Block Delimiter (000D hex) If the PLC is getting data from the motion contro
736 Using the RIO Adapter Option The returned values are stored in word pairs 0, 1 through 2nn – 2, 2nn – 1 (where nn is the number of items read) in signed BCD format. The least significant word of the returned value is stored in the lower numbered word of the data file and the most significant word in the higher numbered word. Since each 32-bit value is stored as two 16-bit words, 2nn + 1 words in the data file are used.
Using Block Transfers 737 RIO Adapter Block Transfer Write Word-Swapped 32-bit Floating-Point Data File Format Word Description 0 1 2 Data Type First Data Item Number and Format of Items: 70nn 3 4 First Data Item Value Least Significant Word First Data Item Value Most Significant Word 5 6 Second Data Item Value Least Significant Word Second Data Item Value Most Significant Word 2nn+1 2nn+2 Last Data Item Value Least Significant Word Last Data Item Value Most Significant Word 2nn+3 End-of-Block
738 Using the RIO Adapter Option RIO Adapter Block Transfer Read Word-Swapped 32-bit Floating-Point Returned Values Data File Format Word Description 0 1 First Data Item Value Least Significant Word First Data Item Value Most Significant Word 2 3 Second Data Item Value Least Significant Word Second Data Item Value Most Significant Word … …+1 Next Data Item Value Least Significant Word Next Data Item Value Most Significant Word 2nn-2 2nn-1 Last Data Item Value Least Significant Word Last Data Item
Using Block Transfers 739 Tag Explorer Tag Window The variable number is the Address listed in the column at the far right. For example, the BCD data file shown below (in hexadecimal format) sends the values 1, 2, 3, 4, and 5 to user variables 1 through 5 (respectively) in the motion controller, when specified in a BTW. Word 0 specifies that this block transfer is sending (7Bxx) user variables (xx00). Word 1 specifies the first item as user variable 1 (0001).
740 Using the RIO Adapter Option Sending or Getting Data Parameter Values Individual data parameter values for any of the motion controller axes can be sent to or taken from the motion controller using a block transfer. To send or get multiple data parameter values, multiple block transfers (one for each value) must be used. The parameter number of the data parameter to be transferred must be put in word 1 of the BTW data file for the transfer.
Using Block Transfers 741 For example, the integer data file shown below (in hexadecimal format) gets the Maximum Negative Travel value (data parameter 12) for axis 1 from the motion controller when specified in a BTW as shown in Getting Data from the Motion Controller in this chapter. Word 0 specifies that this block transfer is getting (7Dxx) data parameters for axis 1 (xx11). Word 1 specifies the first item as data parameter 12 (12 decimal = 000C hex).
742 Using the RIO Adapter Option Data Table Report Address F16:0 F16:0 F16:0 F16:0 F16:0 F16:0 F16:0 PLC-5/30 0 -511.4872 0.0 0.0 0.0 0.0 0.0 0.0 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2 0.0 0.0 0.0 0.0 0.0 0.0 3 0.0 0.0 0.0 0.0 0.0 0.0 4 0.0 0.0 0.0 0.0 0.0 0.0 Sending or Getting Data Bit Values Individual data bit values for any of the motion controller axes can be sent to or taken from the motion controller using a block transfer.
Using Block Transfers 743 data bit 5 (0005). Word 2 specifies 16-bit integer format (1xxx), zero decimal digits (x0xx), and that one value is to be sent (xx01). Word 3 is the value to be sent and word 4 is the end-of-block delimiter (000D).
744 Using the RIO Adapter Option 1. Open the GML Commander diagram. 2. Double-click on the Configure Cam block used to execute the appropriate profile. The Configure Cam dialog box opens, displaying the starting and ending points of that profile in the cam tables. Put the number of sequential cam table values to be transferred in the low byte of word 2 of the BTW data file for the transfer.
Using Block Transfers 745 Note: If you are using the Build Table Block to construct Master and Slave Cam Tables, the Build Table function is limited to a total of 4000 Master and 4000 Slave cam points. The start point for any individual cam profile is the cam table point number (0 – 1999 or 0 – 12999, depending on iCODE version) of the first point in the appropriate profile. Likewise, the end point is the cam table point number of the last point in that profile.
746 Using the RIO Adapter Option Getting System Variable Values Individual system variable values for any of the motion controller axes can be taken from the motion controller using a block transfer. The system variable to be transferred is specified as a value in word 1 of the BTW data file for the transfer as shown in the following table.
Using Block Transfers 747 RIO Adapter Block Transfer Write System Variable Numbers (Word 1) System Variable Variable Number (Hex) Identical to GML Commander System Variable Axis 1 Soft Registration Position 0012 Soft_Reg_Pos_Axis1 Axis 3 Soft Registration Position 0013 Soft_Reg_Pos_Axis2 Axis 0 Soft Registration Position 0014 Soft_Reg_Pos_Axis3 Imaginary Axis Soft Reg. Position 0015 Soft_Reg_Pos_Imag Virtual Axis 0 Soft Reg. Position 0016 Soft_Reg_Pos_Virtual0 Virtual Axis 1 Soft Reg.
748 Using the RIO Adapter Option Except for the fault and status codes, the system variable values returned by the BTR are identical to those for the corresponding GML Commander variables shown in the previous table. See the System Variables chapter for detailed information on the units and format of the returned values for these system variables.
Using Block Transfers 749 See Getting Data from the Motion Controller in this chapter for more information on the format of returned values. Fault and Status Codes When getting the fault code for an axis, always specify 1001 hex (for 16bit integer numeric format, 0 decimal digits, and 1 item) in word 2 of the BTW data file for the transfer.
750 Using the RIO Adapter Option RIO Adapter Block Transfer Read Fault Code Returned Value Bits Bit Is Identical to Variable Runtime Display 8 (Runtime_fault > 0) ------- 7 6 5 4 AxisLink_failed AxisLink_timeout Encoder_loss_fault* Encoder_noise_fault ------------ENC FLT ENC FLT 3 2 1 0 Software_overtravel_fault Hardware_overtravel_fault Position_error_fault Drive_fault SFT LIM HRD LIM ERR FLT DRV FLT *Only available in 1394 GMC/GMC Turbo and Compact with V3.X firmware.
Using Block Transfers 751 RIO Adapter Block Transfer Read Status Code Returned Value Bits Bit Hex. Oct Is Identical to Variable . . .
752 Using the RIO Adapter Option Publication GMLC-5.
Chapter 35 Configuring ControlNet (CNET) Enabling the CNET Interface in GML Commander To enable the CNET interface in GML Commander: 1. Select Configure from the menu bar. The Configure menu displays. 2. Select Control Options. The Configure Control Options dialog box appears. Publication GMLC-5.
754 Configuring ControlNet (CNET) 3. Make entries in the following fields: Field Description Control Type iCODE Version Interfaces Select IMC S Class 1394/1394 Turbo. Select version 3.9 (or later). Select CNET. (The CNET tab displays.) 4. After you complete all other Control Options selections, press OK. Publication GMLC-5.
Defining Inputs and Outputs 755 Defining Inputs and Outputs After you have enabled the CNET interface (see Enabling the CNET Interface in GML Commander), you need to define: • MAC ID • Input bits • Input floats (floating point variables) • Input group bits • Output bits • Output floats (floating point variables) • Output group bits Defining the I/O Configuration To define the I/O Configuration: 1. From the menu bar, select Configure. The Configure menu appears. 2. Select Control Options.
756 Configuring ControlNet (CNET) 4. In the I/O Configuration area, make entries in the following fields: Field Description MAC ID Enter a number form 1 to 99 Input Bits1 Select the number of input bits you need: 8 (from 0 to 7) 24 (from 0 to 23) 40 (from 0 to 39) Input Floats1 Select the number of input floats you need: 0 to 14 (or 15. See note 1, below.) Output Bits1 Select the number of output bits you need: 8 (from 0 to 7) 24 (from 0 to 23) 40 (from 0 to 39) Publication GMLC-5.
Defining Inputs and Outputs 757 Field Description Output Floats1 Select the number of output floats you need: 0 to 14 (or 15. See note 1, below.) 1 = There are 32 words of I/O available in each CNET I/O file. Each float consists of two 16 bit words. I/O floating point addressing starts at the word following the last discrete I/O. If you: You can define: Select eight or 24 discrete I/O points up to 15 floats. Configure all 40 I/O points up to 14 floats. 5. Select OK. 6. Define your input bits.
758 Configuring ControlNet (CNET) 2. In the Tag Window, single-click the right mouse button. A variable short-cut menu appears. 3. Select New. The CNET Input Bit dialog box appears. 4. Make entries in the following fields: Field Description Name Type the name of the CNET Input Bit. Address Type the address, or number, of the bit (from 0 to 39). Note: The available address range depends upon the number of Input Bits you specified in the CNET page of the Configure Control Options dialog box.
Defining Inputs and Outputs 759 1. In the Tag Explorer, select Input Float. 2. In the Tag Window, single-click the right mouse button. A variable short-cut menu appears. 3. Select New. The CNET Input Float dialog box appears. 4. Make entries in the following fields: Field Description Address Type the address, or number, of the input float.
760 Configuring ControlNet (CNET) Defining Input Group Bits After you have selected the number of input bits required for your application, you can define those bits, either individually or collectively (or both). To define collections, or groups, of input bits: 1. In the Tag Explorer, select Input Group Bit. 2. In the Tag Window, single-click the right mouse button. A variable short-cut menu appears. 3. Select New. The CNET Input Group Bit dialog box appears. 4.
Defining Inputs and Outputs 761 Field Description Total Signals in Group Type the number of consecutive bits in the group. Note: This number must include all bits in the sequence—bits whose signals you use, as well as bits in the sequence whose signals you do not use. Use Bit Mask Select this if you wish to exclude (mask) one or more signals in the group, then type a binary value representing the bits whose signals are to be read.
762 Configuring ControlNet (CNET) 3. Select New. The CNET variable Local dialog box appears. 4. Make entries in the following fields: Field Description Name Type the new variable’s name.
Defining Inputs and Outputs 763 Field Description Element Type the particular element number for the selected File Type. (The available range of available element numbers varies, depending upon the file Type.) Sub-element If you selected Binary as the File Type, select a specific sub-element, or bit from 0 to 15. Multiple Variables Select this to define more than one variable, then enter the number of variables to be defined.
764 Configuring ControlNet (CNET) 3. Select New. The CNET Output Bit dialog box appears. 4. Make entries in the following fields: Field Description Name Type the name of the CNET Output Bit. Address Type the address, or number, of the bit (from 0 to 39). Note: The available address range depends on the number of Output Bits you specified in the CNET page of the Configure Control Options dialog box. See Defining the I/O Configuration. 5. Select OK.
Defining Inputs and Outputs 765 2. In the Tag Window, single-click the right mouse button. A variable short-cut menu appears. 3. Select New. The CNET Output Float dialog box appears. 4. Make entries in the following fields: Field Description Address Type the address, or number, of the output float. Note: The available address range depends upon the number of Output Floats (from 0 to 14 or 15) you specified in the CNET page of the Configure Control Options dialog box.
766 Configuring ControlNet (CNET) Defining Output Group Bits After you have selected the number of output bits required for your application, you can define those bits, either individually or collectively (or both). To define collections, or groups, of input bits: 1. In the Tag Explorer, select Output Group Bit. 2. In the Tag Window, single-click the right mouse button. A variable short-cut menu appears. 3. Select New. The CNET Output Group Bit dialog box appears. 4.
Defining Inputs and Outputs 767 Field Description Total Signals in Group Type the number of consecutive bits in the group. Note: This number must include all bits in the sequence—bits you will write to, as well as bits in the sequence you will not write to. Use Bit Mask To exclude (mask) one or more signals in the group, type a binary value representing the bits whose signals you will write to. See Bit Masks in the Expression Builder chapter of this manual for more information on bit masks. 5.
768 Configuring ControlNet (CNET) Deleting CNET Bits, Floats, and Variables The CNET bits, floats, and variables can be deleted if they are no longer needed. To delete a CNET bit, float, or variable: 1. In the Tag Explorer, under CNET, select the type of bit, float, or variable to delete. 2. In the Tag Window, place the cursor on the specific bit, float, or variable you want to delete. 3. Click the right mouse button. A pop-up menu appears. 4. Select Delete.
Chapter 36 1394 GMC Turbo SLC Interface You can connect the 1394 GMC Turbo to an SLC rack, containing a 5/03 or 5/04 processor, using a 1746-C7 (flat 6 inch) or 1746-C9 (round 36 inch) SLC local rack extension cable. This connection provides direct backplane communications between the SLC and the 1394. Note: The SLC 5/03 must be running firmware version OS301 or later. If the SLC interface is enabled, the RIO adapter is not operational.
770 1394 GMC Turbo SLC Interface Rack Configurations The SLC views the 1394 Turbo as a four-slot rack, with one intelligent module installed in the first slot. The 1394 GMC Turbo reserves the remaining empty slots, which cannot be used. SLC racks are available with 4, 7, 10, and 13 slots. The SLC can only address a maximum of 30 slots and support up to three racks. The largest logic configuration containing one 1394 GMC Turbo is two 13-slot racks. The 1394 GMC Turbo appears in slot 26.
Selecting the 1394 in Your SLC Software 771 Selecting the 1394 in Your SLC Software Before you begin to program the 1394 to communicate with your SLC, you must first select the 1394 as an intelligent module in your SLC programming software. To select the 1394 as an intelligent module: 1. Select Other from the list of intelligent modules. 2. Type 13617 (the ID code of the 1394) in the ID Code field. Publication GMLC-5.
772 1394 GMC Turbo SLC Interface Important: The size of the discrete I/O files and the M0 and M1 files impacts both the SLC program scan time and the 1394 GMC Turbo CPU utilization. To optimize your scan time and CPU utilization, be sure to define the size of your discrete I/O and your M0 and M1 files in your SLC program. Enabling the SLC Interface in GML Commander To enable the SLC interface in GML Commander: 1. Select Configure from the menu bar. The Configure menu displays. 2. Select Control Options.
Understanding Discrete Data Transfers 773 3. Make entries in the following fields: Field Description Control Type iCODE Version Interfaces Select IMC S Class 1394/1394 Turbo. Select version 3.5 (or later). Select SLC. (The SLC tab appears.) Note: See Defining the I/O Configuration and Enabling M File Transfers for instructions on completing the SLC page. 4. After you complete all other Control Options selections, press OK.
774 1394 GMC Turbo SLC Interface 2. Determine the number of elements to send (0 - 40 user-defined bits, 0 - 15 floating-point variables). In the following figure, eight userdefined bits and two floating-point variables are being transferred. 3. For optimum scan time, define the discrete file size. 4. Define the eight user bits. In the following figure, one of the user bits (O:4.0/8) is named Start (bit 0) in GML Commander. 5. Define the two floating-point variables. 6.
Understanding Discrete Data Transfers 775 When the SLC finishes its program scan, it updates its outputs. If the GML Commander program is to recognize this new data, the 1394 GMC Turbo must update its inputs. The SLC update rate depends on the size of the user's program. The update rate for the 1394 GMC Turbo depends on the I/O file update rate (see Defining the I/O Configuration) and the servo update rate (see Enabling M File Transfers). Also, see the SLC 500 Reference Manual (Publication 1747-6.
776 1394 GMC Turbo SLC Interface 2. Determine the number of elements to send (0 - 40 user-defined bits, 0 - 15 floating-point variables). In the following figure, we are transferring 24 user-defined bits and 2 floating-point variables. 3. For optimum scan time, define the discrete file size. 4. Define the eight user bits. In the following figure, one of the user bits (O:4.0/8) is defined as Start (bit 0) in GML Commander. 5. Define the two floating-point variables.
Understanding Discrete Data Transfers 777 The rate at which the GML Commander program updates its outputs depends on the I/O file update rate (see Defining the I/O Configuration) and the servo update rate (see Enabling M File Transfers). In order for the SLC to access this new data, it must update its inputs. The SLC accesses this new data during the next input scan. The rate at which the SLC program updates its inputs depends on the size of the user's program.
778 1394 GMC Turbo SLC Interface Table 1: 1394 GMC Turbo Input Data from the SLC (minimum configuration, one 16-bit word) Word Bit Description Definition 0/0 Run program When this bit changes from 0 to 1, the GML Commander application program executes from the beginning. If the application program is already running or paused, the change has no effect. The SLC stop bit described below has priority over this bit. The application program cannot access this bit.
Understanding Discrete Data Transfers 779 Table 2: 1394 GMC Turbo Input Data from the SLC (maximum configuration, three 16-bit words) Word Bit Description Definition 0/0 Run program When this bit changes from 0 to 1, the GML Commander application program executes from the beginning. If the application program is already running or paused, the change has no effect. The SLC stop bit described below has priority over this bit. The application program cannot access this bit.
780 1394 GMC Turbo SLC Interface Table 3: 1394 GMC Turbo Output Data from the SLC (minimum configuration, one 16-bit word) Word Bit Description Definition 0/0 Program running This bit is set to 1 by the 1394 GMC Turbo while the GML Commander application program is running. This bit cannot be accessed directly by the GML Commander program. 0/1 Global fault The 1394 GMC Turbo sets this bit to 1 if a fault has occurred. This bit cannot be accessed directly by the GML Commander application program.
Understanding Discrete Data Transfers 781 Table 4: 1394 GMC Turbo Output Data from the SLC (maximum configuration, three 16-bit words) Word Bit Description Definition 0/0 Program running This bit is set to 1 by the 1394 GMC Turbo while the GML Commander application program is running. This bit cannot be accessed directly by the application program. 0/1 Global fault The 1394 GMC Turbo sets this bit to 1 if a fault has occurred.
782 1394 GMC Turbo SLC Interface Defining Inputs and Outputs After you have enabled the SLC interface (see Enabling the SLC Interface in GML Commander), you need to define: • I/O configuration • Input bits • Input floats (floating point variables) • Input group bits • Output bits • Output floats (floating point variables) • Output group bits Defining the I/O Configuration To define the I/O Configuration: 1. From the menu bar, select Configure. The Configure menu appears. 2.
Defining Inputs and Outputs 783 4. In the I/O Configuration area, make entries in the following fields: Field Description Update Rate I/O image file updates to and from the SLC are executed from the servo interrupt routine, and are independent of the SLC I/O scan. The higher the setting, the more CPU utilization is impacted. Select one of the I/O update rates: Slow Updates the complete I/O image file every four servo loops. Medium Updates the complete I/O image file every two servo loops.
784 1394 GMC Turbo SLC Interface Field Description Input Floats1 Select the number of input floats you need: 0 to 14 (or 15. See note 1, below.) Output Bits1 Select the number of output bits you need: 8 (from 0 to 7) 24 (from 0 to 23) 40 (from 0 to 39) Output Floats1 Select the number of output floats you need: 0 to 14 (or 15. See note 1, below.) 1 = There are 32 words of I/O available in each SLC I/O file. Each float consists of two 16 bit words.
Defining Inputs and Outputs 785 Tag Window Tag Explorer 2. In the Tag Window, single-click the right mouse button. A variable short-cut menu appears. 3. Select New. The SLC Input Bit dialog box appears. 4. Make entries in the following fields: Field Description Name Type the name of the SLC Input Bit. Publication GMLC-5.
786 1394 GMC Turbo SLC Interface Field Description Address Type the address, or number, of the bit (from 0 to 39). Note: The available address range depends upon the number of Input Bits you specified in the SLC page of the Configure Control Options dialog box. See Defining the I/O Configuration. 5. Select OK. The dialog box closes, and the new input appears in the Tag Window.
Defining Inputs and Outputs 787 4. Make entries in the following fields: Field Description Address Type the address, or number, of the input float. Note: The available address range depends upon the number of Input Floats (from 0 to 14 or 15) you specified in the SLC page of the Configure Control Options dialog box. See Defining the I/O Configuration. List Linked Variables Select a user variable to be linked to the specified input float.
788 1394 GMC Turbo SLC Interface 4. Make entries to the following fields: Field Description Name Type the name of the SLC Input Bit Group. Address Type the address, or number, of the first bit in the group. Total Signals in Group Type the number of consecutive bits in the group. Note: This number must include all bits in the sequence—bits whose signals you use, as well as bits in the sequence whose signals you do not use.
Defining Inputs and Outputs 789 5. Select OK. The name of the new SLC Input Bit Group appears in the Tag Window. Defining Output Bits After you have selected the number of input bits required for your application, you can define those bits, either individually or collectively (or both). To define individual input bits: 1. In the Tag Explorer, select Output Bit. 2. In the Tag Window, single-click the right mouse button. A variable short-cut menu appears. 3. Select New.
790 1394 GMC Turbo SLC Interface Field Description Address Type the address, or number, of the bit (from 0 to 39). Note: The available address range depends on the number of Output Bits you specified in the SLC page of the Configure Control Options dialog box. See Defining the I/O Configuration. 5. Select OK. The dialog box closes, and the new input appears in the Tag Window. Defining Output Floats Output floats can pass user variables and a select list of system variables.
Defining Inputs and Outputs 791 4. Make entries in the following fields: Field Description Address Type the address, or number, of the output float. Note: The available address range depends upon the number of Output Floats (from 0 to 14 or 15) you specified in the SLC page of the Configure Control Options dialog box. See Defining the I/O Configuration, above. List Select the user or axis system variable that is the source of the floating point value.
792 1394 GMC Turbo SLC Interface Defining Output Group Bits After you have selected the number of output bits required for your application, you can define those bits, either individually or collectively (or both). To define collections, or groups, of input bits: 1. In the Tag Explorer, select Output Group Bit. 2. In the Tag Window, single-click the right mouse button. A variable short-cut menu appears. 3. Select New. The SLC Output Group Bit dialog box appears. 4.
Understanding M Files 793 Field Description Total Signals in Group Type the number of consecutive bits in the group. Note: This number must include all bits in the sequence—bits you will write to, as well as bits in the sequence you will not write to. Use Bit Mask To exclude (mask) one or more signals in the group, type a binary value representing the bits whose signals you will write to. See Bit Masks in the Expression Builder chapter of this manual for more information on bit masks. 5. Select OK.
794 1394 GMC Turbo SLC Interface If an M file contains both integers and floating points, the floating point elements are located in front of the integer elements. Use the formula below to determine the proportions of your combination: (number of floating points x 2) + (number of integers) ≤ 512 For example: If your M file contains 100 floating-point elements, the maximum number of integer elements available is 312. M files can be accessed using indirect variables.
Understanding M Files 795 Manual Mode When manual mode is enabled, the 1394 GMC Turbo ignores the automatic SLC update notifications and waits for the program to set a system bit. This decreases the number of updates, and therefore minimizes the impact on your CPU utilization. Manual mode is ideal for applications with large M files containing elements that need to be updated simultaneously.
796 1394 GMC Turbo SLC Interface • After the 1394 GMC Turbo completes the update, and the M0 Update Request bit has been reset, the 1394 system software resets the system bit variable SLC_M0_Update_Acknowledge. • The GML Commander program waits for the M0_Update_Acknowledge bit to reset and the update is complete. Figure 6: Typical Ladder Logic Diagram for M0 File Transfers Publication GMLC-5.
Understanding M Files 797 Figure 7: Typical GML Commander Program for M0 File Transfers Updating M1 Files using Manual Mode When M1 files are updated using manual mode: • The GML Commander program updates the M1 variables, and then issues the system bit variable SLC_M1_Update_Request. • Once the SLC program sees the request, it issues the M1 Update Acknowledge bit when ready. • Once both bits are issued, the 1394 GMC Turbo system software begins the update.
798 1394 GMC Turbo SLC Interface Figure 8: Typical Ladder Logic Diagram for M1 File Transfers Publication GMLC-5.
Understanding M Files 799 Figure 9: Typical GML Commander Program for M1 File Transfers Enabling M File Transfers To enable M file transfers in GML Commander: 1. From the menu bar, select Configure. The Configure menu appears. 2. Select Control Options. The Configure Control Options dialog box appears. 3. Select the SLC tab. The SLC page appears. Note: If the SLC tab doesn’t appear, on the General page of the Control Options dialog box, select IMC S Class 1394/1394 Turbo in the Control Type field, 3.
800 1394 GMC Turbo SLC Interface 4. Complete SLC M File Configuration portion of the dialog box, by making the following entries: Publication GMLC-5.2 - November 1999 Field Description Enable Transfers Select this checkbox to enable transfers. Transfer Mode Select a transfer mode. Refer to the Transfer mode section for more information. M0 Floats Type the number of floats you need in the M0 file. M0 Integers Type the number of integers you need in the M0 file.
Understanding M Files 801 Note: The number of M0 and M1 words specified above should match the number of words set in the SPIO section of your SLC 500 program software. 5. Select OK. 6. Define your M0 Floats. See Defining M0 Floats. Defining M0 and M1 Floats and Integers The procedures for defining M0 Floats, M0 Integers, M1 Floats and M1 Integers are virtually identical. In each case, you create a variable—or an array of variables— using the same dialog box (except for the dialog box’s name).
802 1394 GMC Turbo SLC Interface 4. Make entries to the following fields: Field Description Name Type the name of the float or integer. Address Type the address, or number, of the float or integer. Note: If you also select Multiple Variables, the address you type is the address of the first variable in the array. Multiple Variable(s) Select this checkbox to create a variable array. Then, type in the number of variables to include in the variable array. 5. Select OK.
Fault Handling 803 Fault Handling Refer to the FAULT.GML file on the installation disk for examples of fault routines. Interrupts The Interrupt SLC instruction block allows the 1394 to initiate a ladder interrupt routine in the SLC. You can use this command as an action in an Input Event Action statement, or include it directly in the GML Commander program. SLC inputs have also been added to the Input Event Action block, which means you now can generate an event (interrupt) using SLC inputs.
804 1394 GMC Turbo SLC Interface Equipment Configuration The equipment for this example consists of: • A four-slot rack with an SLC 5/03 processor. • An SLC output module located in slot one. • A 1394 GMC Turbo located in slot four. Task To set an output in the SLC based on the position of Axis 0, that is controlled by the 1394 GMC Turbo. Solution Send the axis position to the SLC. Once the SLC receives the Axis 0 position, it evaluates that position and then sets an output.
Programmable Limit Switch Example 805 Figure 10: GML Commander Program for a Limit Switch SLC Program In your SLC program: • Determine which slot the 1394 resides in. • Move the data from the input file to the floating-point file. • Use the floating-point file in a comparison to determine the state of the output bit (1 or 0). Publication GMLC-5.
806 1394 GMC Turbo SLC Interface Figure 11: SLC Ladder Logic Diagram for a Programmable Limit Switch Publication GMLC-5.
Chapter 37 Initializing Your Motion Controller There are two types of initialization for your motion controllers: • Hardware initialization. • Software initialization. Although both actions initialize or reset certain aspects of the motion controller, their use and effect is very different.
808 Initializing Your Motion Controller 3. Press and release the RESET button on the system module. (Do not release the INIT for at least 10 seconds or until the System OK LED glows steadily.) 4. Release the INIT button. 5. Press and release the RESET button again. 6. Close the cover. Compact To hardware initialize a Compact motion controller (IMC-S/23x models), do the following: 1. Unlock the controller’s memory by turning the front-panel keyswitch to the unlocked position. 2. Remove the key. 3.
Initializing the Hardware 809 3. Press and release the front panel RESET button. 4. Remove the temporary INIT jumper. 5. Press and release the front panel RESET button again. Basic To hardware initialize a Basic motion controller (IMC-S/20x models), do the following: 1. Unlock the controller’s memory by installing a memory unlock jumper between TB2-2 and TB2-4. 2. With power applied, install a temporary INIT jumper between TB2-1 to TB2-4. 3. Press and release the front panel RESET button. 4.
810 Initializing Your Motion Controller • The controller is set to not automatically run program on power-up (usually entered in the General page of the Configure Control Options dialog box). • Multidrop operation (usually set in the General page of the Configure Control Options dialog box) is disabled. • Remote I/O, AxisLink, and DH-485 communication (usually set in the General page of the Configure Control Options dialog box) are disabled. • Status 0 LED glows a continuous, uninterrupted red.
Initializing the Software 811 To upload the complete application program from the motion controller, including the setup values: 1. From the menu bar, select Diagram. The Diagram menu appears. 2. Select Upload Options. The Upload Options dialog box appears. 3. In the Select Upload Option field, select All combo box. 4. Select Upload. The Upload Options dialog box closes. 5. From the menu bar, select File. The File menu appears. 6. Select Save As. The Save As dialog box appears. 7.
812 Initializing Your Motion Controller To initialize the software in the motion controller, use the iCODE .I (period followed by “I”) command. Download this command to the controller in one of the following ways: • Enter it directly using the Terminal Window. After downloading this command, be sure to press and release the controller’s RESET button to complete the download of the default parameters. Default Data Parameters When the iCODE .
Initializing the Software 813 • The runtime display (usually set in the Configure Auto Display block) is configured to display the actual position and status of axes 0 and 1. • The value of all user variables is set to zero. • The value of all cam table points is set to zero. • The application program is cleared. • The application menu password (usually entered in the General page of the Configure Control Options dialog box) is reset to APP.
814 Initializing Your Motion Controller Publication GMLC-5.
Chapter 38 Axis Locked and Axis Done Conditions To move an axis, input new command position parameters into a selected motion block, then execute the block (or run the program). In the case of a Move Axis block, for instance, the command position is ramped up at the acceleration rate, incremented at the velocity, and decelerated at the deceleration rate specified in the block.
816 Axis Locked and Axis Done Conditions Command For example, the figure below shows what happens when a trapezoidal Move Axis block is executed. The situation is similar for a Jog Axis or Time-Lock Cam block. Actual Time Time Axis Moving Move_status Axis Unlocked Lock_status Move Done Axis Locked . When the move is executed, the command position changes according to the parameters of the Move Axis block, resulting in the command velocity profile shown above.
Moves, Jogs, and Time-Lock Cams 817 When the move is done and the position error is less than the position lock tolerance, Axis_status = 0 (Locked) and Lock_status = 1 (Locked). Another way to look at this is that the move done condition is the trailing edge of the Move_status variable, and the axis locked condition is the trailing edge of the Lock_status variable. The distinction between the axis done condition and the axis locked condition is lost if a large position lock tolerance is specified.
818 Axis Locked and Axis Done Conditions To pause program execution until the move is done and the axis is locked, follow the Move Axis block immediately with a Wait for Axis command in the On Axis block with Axis Locked selected from the Status menu, as shown below. For the most precise control in pausing program flow at the end of a move, jog, or time-lock cam, follow the motion block with an If Expression command in the On Expression block as shown below. Publication GMLC-5.
Moves, Jogs, and Time-Lock Cams with Gearing, Position-Lock Cams, or Interpolated Motion 819 Connect the 0 (false) node of the On Expression block back to its input to form a wait for position function and enter an expression that logically combines the conditions for which you want to wait. For example, the axis locked status condition does not check whether the velocity of the axis is zero.
820 Axis Locked and Axis Done Conditions Conversely, in continuous process applications where gearing or positionlock cams are active, moves, jogs, and time-lock cams are used to adjust synchronization between moving axes. In these applications it is most important to know whether the axis is in position (locked) at all times regardless of what motions are being commanded.
Interpolated Motion X Axis Velocity Segment N 821 Segment N+1 Y Axis Velocity Time Time Interpolator Interpolating Interp_status . Merge Pending Merge_status Interpolate Axes Block with Merge… Selected Executed Merging Done Interpolation Done The dotted line in the motion profiles shows where Segment N would have ended if it had not been merged into Segment N+1 and the corresponding Interpolation Done point.
822 Axis Locked and Axis Done Conditions When the interpolated move is done, Interp0_status or Interp1_status = 0 (false) depending on the specified interpolator. Another way to look at this is that the interpolation done condition is the trailing edge of the appropriate Interp_status variable, as shown in the previous figure.
Interpolated Motion 823 Thus, it is similar to a Wait for Axis command in the On Axis block with the Status Interpolation Done selected from the Status menu except for the fault check (shown below). The technique discussed earlier, for waiting until the motion is done and the axes are locked or are at zero speed, can also be used with interpolated motion. Publication GMLC-5.
824 Axis Locked and Axis Done Conditions Publication GMLC-5.
Chapter 39 Merging Different Motion Types Merge From Jog, CAM, or Gear When merging a slave axis from actual-position gearing, or camming to a move or jog by selecting Merge from Jog, CAM or Gear and At Current Speed, in a Move Axis or Jog Axis block in GML Commander, as shown below, the speed of the move or jog is not always exactly the same as the previous gearing speed.
826 Merging Different Motion Types If the speed of the axis lies somewhere between multiples of 15 RPM, the measured actual velocity varies from update to update such that it averages out to the correct speed. For example, 2,000 RPM is between 1,995 (15 x 133) and 2,010 (15 x 134) RPM.
827 Count 1 Revolution Seconds 1 ----------------------------- × ------------------------------- × 60 -------------------- = ± 0.15 RPM 0.1 Seconds 4000 Counts Minute Thus, at 2,000 RPM, merging from gearing to a move at a programmed speed of Average_Velocity for the slave axis results in a perfectly smooth transition.
828 Merging Different Motion Types Publication GMLC-5.
Chapter 40 Going Online You can build and edit your diagram, create variables, and test program syntax without being online with your controller, but you must go online to test the logic of your program. Also, certain Axis Use options are only available when you are online. This chapter contains step-by-step procedures for going online.
830 Going Online The online toolbar provides the same functionality of the Diagram menu options with the exception of the Select Direct Command, which you cannot select from a menu. As the name suggests, you use this field to select and open a direct command dialog box. Online button Publication GMLC-5.2 - November 1999 Diagram menu command Description Kill Control Kills any motion and stops program execution. The CPU relay is opened and the system OK light is turned off.
Using the Online Toolbar Online button Diagram menu command 831 Description Clear All Breakpoints Clears all breakpoints from the currently selected diagram Online Connection Toggles the communication with the motion controller on or off Diagram Download Translates and downloads the diagram to the motion controller Upload Options Allows upload of program scripts, variables, cam points, or all Debug Mode Toggles the debug mode to normal (English text, diagram trace) or terminal (iCODE text, tra
832 Going Online Accessing Your Controller You can access your controller either by pressing the Online Connection button on the Online Toolbar or by selecting Online Connection from the Diagram menu. First you must turn on the Controller. When communication with your motion controller is enabled, the command/ response links with the controller appear in the Terminal Window. Translating a Diagram to a Program and Downloading A diagram must be downloaded to the controller before it can be used.
Translating a Diagram to a Program and Downloading 833 • Select Go to run the program. • Select Single Step, Auto Step, or Trace to monitor the program. • Set breakpoints in the program. Note: If you want to change your program’s axis/drive setup data, this information is not automatically downloaded to the controller unless Download Axis/Drive Data with the Diagram is selected in the Configure Control Options dialog box. See the Downloading Axis and Drive Setup Data section.
834 Going Online 2. Select Download Axis/Drive Data in the Diagram in the Application Options area. A checkmark appears in the box. 3. Select OK. Running a Program GML Commander provides you with several ways that you can start and stop a program that has been downloaded to the controller: • Start a program • Pause a program • Resume a paused program • Stop a program • Stop a program and kill motion • Run program on power-up Starting a Program To start a program: 1.
Running a Program 835 The Terminal Window below shows an example of a program that ran successfully: Important: If you select Go while in Trace mode, Trace mode is aborted but the program continues. Pausing a Program To pause an executing program, select Pause from the Diagram menu. The program pauses. Important: Continue program execution by selecting the Resume, Go, or Trace command. Resume the Execution of a Paused Program To resume execution of a paused program, select Resume from the Diagram menu.
836 Going Online Stopping a Program To stop a program, select Stop Program from the Diagram menu. The program stops, motion stops and program execution is aborted. Important: To begin again, the program must be restarted from the beginning. Stop a Program and Kill Motion The Kill Control command performs several functions. To stop the program, open the enabled watchdog and drive enable relays, disable feedback, and zero the commanded servo output for all axes: 1. From the menu bar, select Diagram.
Monitoring Program Flow 837 4. Select OK. 5. Download the diagram.
838 Going Online Select How to View Information You use the Debug Mode command to toggle between normal or terminal mode view. When stepping, auto stepping, or tracing, the flow of the program execution appears graphically in the Diagram Window or textually in the Terminal Window. You cannot view program flow in both windows at the same time. To select normal or terminal mode: 1. From the menu bar, select Diagram. The Diagram menu appears. 2. Select Debug Mode. The view mode changes.
Monitoring Program Flow 839 1. If your diagram has not been downloaded, from the Diagram menu, select Download Diagram. The program is sent to the controller. 2. Select Trace. The program runs at full speed and periodically highlights blocks in the Diagram Window as they are executed. Important: In Normal mode, the Diagram in the workspace must match the program resident in the controller. Terminating Trace Mode To terminate trace mode: Select: Without aborting the program Go while it is tracing.
840 Going Online Setting a Breakpoint Use the Breakpoint option to set or clear breakpoints. You can set and clear breakpoints from the Diagram menu only after the diagram is downloaded. GML Commander supports up to 10 breakpoints. When a block has a breakpoint set, its validation checkmark is highlighted in a black square. When a breakpoint is reached, the block with the breakpoint is highlighted. Note: Every time you make a functional change to a diagram, you need to download the diagram again.
Monitoring Variable, I/O, and General Watch Status 841 7. Select Insert/Remove Breakpoint. A black validation square appears over the checkmark. The breakpoint is set. 8. Click the left mouse button somewhere in the open area of the Diagram Window. The normal color of the block reappears and the check mark is shown against the backdrop of a black square. Clear Breakpoints To clear breakpoints: 1. From the menu bar, select Diagram. The Diagram menu appears. 2. Select Clear All Breakpoints.
842 Going Online Sending Commands Directly to the Motion Controller The Direct Command function allows you to issue commands directly to the motion controller, without having to redesign your diagram and download it to the controller. Important: You can only select the Select Direct Command field from the online toolbar. Refer to the Using the Online Toolbar section for more information.
Sending Commands Directly to the Motion Controller 843 Note: For information about each direct command, see Function Blocks in the GML Commander Reference Manual (publication GMLC-5.2). 3. Configure the dialog box with appropriate information. 4. If you select: The following occurs: Execute The block’s dialog box closes. The Reexecute Direct Cmd command on the Diagram menu and its corresponding button on the online toolbar are reenabled.
844 Going Online 5. When the direct command’s dialog box closes, you can do one of the following: • From the Diagram menu, select Execute to redisplay the direct command’s dialog box to change your previous settings and execute the function direct command again. • From the Diagram menu, select Reexecute to execute the last direct command again. Upload Options Use the Upload Options function to transfer a script file from the controller to GML Commander. This file can then be stored for later use.
Upload Options 845 2. Select Upload Options. An Upload Options dialog box similar to the following appears: 3. Make an entry in the following field: Field Description Select Upload Option Select one of the following: Setups Upload the controller setup portion of the script only. Variables Upload the user variables of the script only. Publication GMLC-5.
846 Going Online Field Description Cam Points Upload the cam points of the script only. Program Upload the executable portion of the program only. All Upload the script. 4. Make entries in the following fields in the Variable Range to Upload area: Field Description Lower Variable Address Type the address of the lowest variable that you want to upload. Upper Variable Address Type the address of the highest variable that you want to upload. 5.
Upload Options 847 Important: Uploading can be done only if the program is not executing. If your program is currently running in the controller and you want to abort the program upload, an inquiry box allows you to confirm this action. If you select yes, the program currently running in the controller stops to allow the uploading process to occur. The program in the controller appears. Publication GMLC-5.
848 Going Online See the On-Line Help for more detailed information about Uploading Options. Publication GMLC-5.
Chapter 41 CPU Utilization Two of the most valuable features of the controllers are the CPU_utilization variable, and the CPU_utilization_peak variable. The CPU_utilization variable shows how much of the motion controller’s CPU (Central Processing Unit, or microprocessor) capacity is being used to generate and control motion, and thus how much is left for program execution and external communication (RIO, SLC, DH-485, AxisLink I/ O Read Remote, and Serial Ports.).
850 CPU Utilization These variable values are shown as a normalized percent (between 0 and 1). For example, the CPU Utilization value shown in the example, above, indicates that nearly 25% of the CPU capacity is currently being used (thus, 75% of CPU capacity is available), and peak CPU utilization has been only about 26%. Understanding CPU Utilization To understand the effect of the CPU Utilization on program execution and communication speed, you need to know how the motion controller works.
Understanding CPU Utilization 851 Normally this is not a problem, but as CPU utilization exceeds 80 – 90% of capacity, program execution can grind to a virtual halt and external communications can fail. Until this point is reached, however, adding axes and motion has very little effect upon program execution and external communications, as shown in the following graph. Program Execution Time (S) 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0.4 0.5 0.6 0.7 0.8 0.
852 CPU Utilization Effects of Excessive CPU Utilization If CPU Utilization in your application exceeds the thresholds set forth above, program execution speed slows drastically, and external communications can fail. Also, when the CPU_utilization variable value reaches 90%, the motion controller (using firmware version 3.
Decreasing the Servo Update Rate 853 Decreasing the Servo Update Rate To reduce the CPU utilization rate, and avoid the effects of excess CPU utilization described in the previous section, do one of the following: • Decrease the servo update rate. • Eliminate features that directly add to CPU utilization. To decrease the servo update rate, execute a Control Settings block in the Online Toolbar, as follows: 1. In the Online Toolbar’s Select Direct Command window, select Control Setting.
854 CPU Utilization Field Description Value Select Working. Tag Explorer Select Data Parameters. Tag Window Select Servo Update Rate. State • • Select Set To. Type the rate in Hz. 3. Select OK. Example The Control Setting block parameters, shown above, set the servo update rate to 800 Hz, resulting in 1.25 ms between clock ticks. The change takes effect immediately, and you can then examine the new CPU Utilization value as explained earlier.
Chapter 42 Memory Organization There are four separate memory areas in the motion controller, each with a different function. These four memory areas are shown in the following diagram. Firmware The Firmware, stored in EPROMs, is downloaded to working memory (dynamic RAM) whenever you apply power to the controller, or press the RESET button. This allows the firmware to execute much faster than if the EPROMs were accessed directly.
856 Memory Organization Application Memory The Application Memory is battery-backed (as shown by the battery symbol ) static RAM, that can be locked (as shown by the lock symbol ) via the keyswitch on the 1394 GMC, Compact (IMC-S/23x), or Integrated (IMC-S/21x) units, or by removing the memory unlock jumper on the Basic (IMC-S/20x) unit. This non-volatile memory stores the application program and the power-up setup parameter values.
How Commander Uses the Motion Controller’s Memory 857 How the Motion Controller Uses Memory When the setup menus in the motion controller are used to edit the setup parameters, the question “Load Setups from App Module?” is asked. Answering “YES” copies the power-up setup parameter values from the application memory into working memory. While in the setup menu, it is the working parameter values that change, not the power-up values.
858 Memory Organization When you download a Commander diagram or script to a motion controller, the application program (generated from the Commander diagram) is stored in both the application and the working memory, erasing whatever program was previously stored there. Also, the initial value of all user variables, initialized in the User Variables definition, is stored directly in data memory. Finally, certain setup parameters are stored directly in application and working memory.
Appendix A Data Parameters and Data Bits Data Parameters are variables that are used to configure the controller options. Data Bits are Boolean values (0,1) which further define the configuration values for the controller by disabling or enabling controller options. Displaying Data Parameters To display Data Parameters in the Tag Window: 1. In the Tag Explorer, under Data Parameters, select either an Axis or General Parameters (i.e., non-axis-specific data parameters).
860 Data Parameters and Data Bits The following tables are listed by the data parameter or data bit description displayed in Commander when a Control options Block is selected. They are arranged alphabetically. Some data parameters and bits are dependent on whether Read, Show, or Adjust is selected in the Type field of the Control Options screen.
Data Parameters Table 861 Data Parameters Parameter Parameter Number Units Value Format Default Accel. Units Decimal Digits D51 0 ≤ D51 ≤ D50 2.0 0 Accel. Units Total Digits (Field Length) D50 1 ≤ D50 ≤ 15 2.0 4 Analog Test 0 Axis 1394 D101 0 = Axis 0 1 = Axis 1 2 = Axis 2 3 = Axis 3 1.0 0 Analog Test 0 Mode 1394 D99 0 = Generic 1 = Velocity 2 = Torque 1.0 1 = velocity Analog Test 1 Axis 1394 D102 0 = Axis 0 1 = Axis 1 2 = Axis 2 3 = Axis 3 1.
862 Data Parameters and Data Bits Data Parameters Parameter Parameter Number Units Value Format Default Backlash Compensation Mode D46 0 = Disabled 1 = Unidir. App. 2 = Load Rev. 1.0 0 (Disabled) Backlash Offset D14 Position Units D29.D30 0 Channel A Baud Rate* D32 0 = 300 Baud 1 = 1200 Baud 2 = 2400 Baud 3 = 4800 Baud 4 = 9600 Baud 5 = 19,200 Baud 6 = 38,400 Baud 7 = 56k Baud 8 = 115.3k Baud 9 = 128k Baud 1.
Data Parameters Table 863 Data Parameters Parameter Parameter Number Value Format Converter Card D114 0 = AEC 1 = TEC 2 = REC 3 = REC - 4096@10 4 = REC - 4096@12 5 = REC - 4096@14 6 = REC - 4096@16 1.0 4 (0 for the 1394) Current Negative Limit 1394 D75 % IRated 3.n 300 Current Positive Limit 1394 D74 % IRated 3.n 300 Current Preload 1394 D77 % IRated 3.n 0 Current Rate Limit 1394 D76 % IRated / mSec 4.n 100 DB Compensation (±) D4 Volts 5.
864 Data Parameters and Data Bits Data Parameters Parameter Parameter Number Units Value Format Default DH-485 Node Address* D106 1≤ D106 ≤ 31 2.0 31 DH-485 Token Hold Factor* D108 1 ≤ D108 ≤ 4 1.0 4 Drive Fault Action D44 Same as D40 1.0 0 (Kill Drive) Droop 1394 D69 RPM 3.n 0 DSP Phase Compensation 1394 D65 0 ≤ D65 ≤ 250 degrees 3.12 151 Dual Loop Axis D22 Axis Number 1.0 0 (Axis 0) Encoder Filter Bandwidth D130 0 ≤ D130 ≤ 1000 Hz 8.
Data Parameters Table 865 Data Parameters Parameter Parameter Number Units Value Format Default Home Return Speed D18 Position Units / Sec. D48.D49 0 IGain (Integral Gain) D1 Specific to each controller type 7.5 0 K Constant (Conversion Constant) D9 Counts/Position Unit 15.12 4000 (Counts/ Position Unit) (8192 for the 1394) Lead Lag Degrees 1394 D81 Degrees 2.n 0 Lead Lag Frequency 1394 D82 Hz 3.n 0 Low Pass Bandwidth 1394 D80 Hz 4.
866 Data Parameters and Data Bits Data Parameters Parameter Parameter Number Value Format Default Motor ID 1394 D90 0 = Custom 1 = B410G 2 = B420E 3 = B430E 4 = B515E 5 = B520E 6 = B530E 7 = B410J 8 = B420H 9 = B430G 10 = B515G 11 = B520F 12 = B310H 13 = B330H 14 = B420G 15 = B440G 16 = B460F 17 = B630F 18 = B660E 19 = B690E 20 = B840E 21 = B860C 22 = B720E 23 = B730E 24 = B740C 25 = B220H 26 = B360Z 27 = B660F 28 = B740E 1.0 0 Motor ID End RPM 1394 D95 RPM 4.
Data Parameters Table 867 Data Parameters Parameter Parameter Number Units Value Format Default Motor Rated Speed 1394 D92 RPM 4.n 0 Motor Resolver Offset 1394 D97 Revs 0.2 0 Motor RPM 100% 1394 D104 RPM 0 Motor RPM 300% 1394 D105 RPM 0 MV Turns Range D115 1 ≤ D115 ≤ 256 3.0 256 Negative Travel Limit D12 Position Units D29.D30 -100 NFF Gain 1394 D68 % of Velocity Cmd 3.n 0 Operator Interface Channel* D38 1 = Serial Port A 2 = Serial Port B 1.
868 Data Parameters and Data Bits Data Parameters Parameter Parameter Number Resolver Loss Action 1394 D98 0 = KILL_DRIVE 1 = STOP_MOTION 2 = STATUS_ONLY Resolver Poles 1394 D112 2 ≤ D112 ≤ 12 even only RIO Adapter Rack Address* D55 0 ≤ D55 ≤ 31 2.0 0 RIO Adapter Rack Size* D56 0=¼ 1=½ 2=¾ 3 = Full 1.0 0 (¼) RIO Adapter Starting Group* D59 0=0 1=2 2=4 3=6 1.0 0 RIO Baud Rate D58 0 = 57.6k 1 = 115.2 2 = 230.4 1.0 0 (57.6k) RIO Channel* D57 0=A 1=B 1.
Data Parameters Table 869 Data Parameters Parameter Parameter Number Units Value Format Default Shunt Resistor Power 1394 D133 100 - 22000 Watts 5.0 300 Shunt Resistor Short Time Constant 1394 D134 0.25 - 2.55 Seconds 2.2 0.25 Shunt Resistor Value 1394 D132 4- 255 Ohms 3.0 4 Shunt STC Weighting Factor 1394 D136 1 - 100% 3.n 5 SLC I/O Update Rate D117 0 = Slow 1 = Medium 2 = Fast 1.0 0 (Slow) SLC Number of Input Bits D118 0 = 8 (0 - 7) 1 = 24 (0 - 23) 2 = 40 (0 - 39) 1.
870 Data Parameters and Data Bits Data Parameters Parameter Parameter Number Value Format Default TCam End Point D26 + Integer < 2000 13000 (V 3.0 and later) 4.0 0 TCam Start Point D25 + Integer < D26 4.0 0 Transducer Cnts per Mtr Rev 1394 D103 Counts / Rev 5.n 4000 (8192 for the 1394) Unwind Constant D13 Counts 8.0 4000 (Counts) (8192 for the 1394) Unwind Fraction Denominator D139 1 to 1 billion (Integer Only) 10.
Data Bits Table 871 Data Bits Table The following table lists the Data Bits alphabetically by their descriptive name as displayed in the scroll-down display of the Control Settings window. The Data Bit number follows the description. The Disabled and Enabled columns show the value set when either 0 or 1 is selected. The final column shows the Default values that are set when the iCODE .I command (Initialize Control) is executed to initialize the software.
872 Data Parameters and Data Bits Data Bits Description Bit # Disabled (0) Enabled (1) Default Drive Fault Contacts B18 Normally Open Normally Closed 0 (1 for the 1394) Dual Loop Control B14 No Yes 0 Encoder Filter Enable B27 No Yes 0 Encoder Loss Checking B25 No Yes 0 Encoder Polarity B10 Normal Inverted 0 (1 for the 1394) External Velocity Loop B8 Torque Velocity 0 (1 for the 1394) Half Duplex* B31 Full Half 0 Hardware Overtravel Checking B4 No Yes 0 Hardware
Data Bits Table 873 Data Bits Description Bit # Disabled (0) Enabled (1) Default Resolver Loss Checking 1394 B54 Yes No 0 RIO Enabled* B44 No Yes 0 RIO Plug Installed* B46 No Yes 0 RIO Scanner Mode* B45 Adapter Scanner 0 Rotary Axis B9 Linear Rotary 0 Rotary PCams B38 No Yes 0 Rotary TCams B42 Linear Rotary 0 Servo Output Polarity B11 Normal Inverted 0 Shunt Resistor Parameters Enable 1394 B62 No Yes 0 SLC Interface Enabled B56 No Yes 0 SLC M File Ena
874 Data Parameters and Data Bits Publication GMLC-5.
Appendix B Understanding Differences Between GML 3.x and GML Commander Function Blocks The following tables shows—in the left column—GML version 3.X function block (or blocks), and—in the right column—the corresponding GML Commander function block. These blocks are grouped according to the GML Commander palette, or toolbar, on which the GML Commander function blocks appear. Main Palette Blocks GML version 3.x block(s) GML Commander block Publication GMLC-5.
876 Understanding Differences Between GML 3.x and GML Commander Function Blocks GML version 3.x block(s) Publication GMLC-5.
Main Palette Blocks GML version 3.x block(s) 877 GML Commander block Publication GMLC-5.
878 Understanding Differences Between GML 3.x and GML Commander Function Blocks GML version 3.x block(s) Publication GMLC-5.
Main Palette Blocks GML version 3.x block(s) 879 GML Commander block Publication GMLC-5.
880 Understanding Differences Between GML 3.x and GML Commander Function Blocks GML version 3.x block(s) Publication GMLC-5.
Advanced Palette Blocks GML version 3.x block(s) 881 GML Commander block Advanced Palette Blocks GML version 3.x block(s) GML Commander block Publication GMLC-5.
882 Understanding Differences Between GML 3.x and GML Commander Function Blocks GML version 3.x block(s) Publication GMLC-5.
Advanced Palette Blocks GML version 3.x block(s) 883 GML Commander block Publication GMLC-5.
884 Understanding Differences Between GML 3.x and GML Commander Function Blocks CAM Palette Blocks GML version 3.x block(s) Publication GMLC-5.
DH-485 Palette Blocks 885 DH-485 Palette Blocks GML version 3.x block(s) GML Commander block RIO Palette Blocks GML version 3.x block(s) GML Commander block Publication GMLC-5.
886 Understanding Differences Between GML 3.x and GML Commander Function Blocks GML version 3.x block(s) Publication GMLC-5.
SLC Palette Blocks 887 SLC Palette Blocks GML version 3.x block(s) GML Commander block RS-232/422 and Multidrop Palette Blocks GML version 3.x block(s) GML Commander block Publication GMLC-5.
888 Understanding Differences Between GML 3.x and GML Commander Function Blocks GML version 3.x block(s) Publication GMLC-5.
Appendix C ASCII Reference The following tables are provided as a reference for GML Commander blocks that require ASCII code or characters. The character codes, code values, and descriptions are defined by the American National Standards Institute (ANSI) as the American Standard Code for Information Interchange (ASCII). For more information, see ANSI Standard X3.41977.
890 ASCII Reference ASCII Keyboard Decimal Hex Description DC2 DC3 DC4 NAK SYN ETB CTRL-r CTRL-s CTRL-t CTRL-u CTRL-v CTRL-w 18 19 20 21 22 23 12 13 14 15 16 17 Block CAN EM SUB ESC FS GS RS US DEL CTRL-x CTRL-y CTRL-z CTRL-[ CTRL-\ CTRL-] CTRL-^ CTRL-_ 24 25 26 27 28 29 30 31 127 18 19 1A 1B 1C 1D 1E 1F 7F (XON) Device control 2 Device control 3 (XOFF) Device control 4 Negative acknowledge Synchronous idle End of transmission Cancel End of medium Substitute Escape File separator Group separa
ASCII Printing Characters 891 ASCII Printing Characters Char. Space ! “ # $ % & ’ ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Dec. 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 Hex 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F Char. @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ Dec.
892 ASCII Reference Publication GMLC-5.
Index 893 INDEX - Subtraction 464 Symbols ! Boolean NOT 469 ! Not equal to 471 & Bitwise AND 467 && Boolean AND 469 ( ) Parentheses 461 * Multiplication 464 + Addition 463 / Division 464 // Integer quotient 465 < Less than 472 <= Less than or equal to 473 = Equal to 471 > Greater than 472 >= Greater than or equal to 472 @ Integer remainder 465 [ ] Brackets 462 ^ Exponentiation" 465 | Bitwise OR 468 || Boolean OR 469 ~ Bitwise NOT 467 Numerics 1394 GMC and 1394 turbo system module 807 1394 GMC turbo SLC in
894 Index control codes 889 printing characters 891 audience for this manual 2 Auto mode 794 Auto RIO Update block 371 auto-correction (Configure Cam) 254 absolute ratioed auto-correction 263 auto-correction speed 267 master axis 266 no-correction zone 269 registering axis 266 relative auto-correction 259 relative ratioed auto-correction 264 Auto-Correction (Configure Cam) block Phase shift and incremental auto correction 255 Auto-Correction block 255 auto-correction speed 267 Average velocity 485 axes se
Index Virtual Axis Control 360 AxisLink cable, coinnecting the 657 AxisLink configuration nodes 502 AxisLink failed 513 AxisLink fault code 525 Error accessing controller 529 Failing 528 Offline 528 Timeout accessing data 528 Timeout accessing output 529 AxisLink general fault 510, 524 AxisLink group input 623 AxisLink group output 633 AxisLink I/O 656 AxisLink I/O, using 667 AxisLink iinputs, defining 669 AxisLink in GML commander, enabling 657 AxisLink input 617 AxisLink inputs 668 Configuring AxisLink i
896 Index Accessing from Edit menu 146 Aligning 143 color codes 23 copy to Clip Board 141 GML 3.x comparison to GML Commander 875 GML Commander comparison to GML 3.
Index Module menu 166 Command failed 551 Command position 478 Command velocity 486 Configure Auto Display block 425 configuring runtime display fields 425 Configure Cam block 247 cam start and end points 248 configuring pending position lock Cams 250 configuring position lock Cams 250 configuring time lock Cams 249 Configure Control Options dialog box 31 Axes tab 35 Flex I/O tab 39 General tab 32 Interface tab 37 Configure Control Options dialog box, See Configure menu 22 control options 31, 45 Configure M
898 Index Defining Units 64 Acceleration & Deceleration Display Format 65 Position Display Format 64 Position Units 64 Velocity Display Format 64 General page 62 Physical Axis 62 Axis Type 63 Drive Interface Module Axis 63 Position Mode 63 Tune Servo 101 Verifying Hookups 93 Configuring AxisLink inputs 668 Configuring Control Options 29 Configuring pending position lock Cams 250 Configuring position lock Cams 250 configuring runtime display fields 425 Configuring the AxisLink Interface 54 Configuring the
Index excessive effects 852 reduce CPU utilization 853 understanding 850 CPU utilization overrun fault 507 CPU utilization peak 500 creating script 175 Current task 499 cursor functions 137 D Data bits 859 Displaying Data Bits 859 Data bits table 871 Data bits, default 812 Data Highway (DH-485) option configuring 56 Data parameters 859 Displaying Data Parameters 859 Data parameters table 860 Data parameters, default 812 data type 362 Deceleration distance 483 Deceleration status 573 Dedicated discrete inpu
900 Index System Smart Power Bus Voltage 1394 600 System Smart Power Motor Power Percent Used 1394 601 System Smart Power PIC Software Version 1394 601 System Smart Power Regenerative Power Percent Used 1394 601 System Smart Power Shunt Power Percent Used 1394 601 Diagram making changes 141 diagram copying to create a new one 30 create new 149 create new with existing 150 defining configuration 29 display information about its content 153 in relation to blocks 23 overview 149 selecting a complete 141 sett
Index Key Input Control 420 On Key Press 421 Print to Display 410 Refresh Display 419 Toggle Choice 416 Distance to go 483 documentation Allen-Bradley 4 Documentation option Module menu 170 Download Servo Update Rate 35 Drive fault / motor thermal 1394 514 Drive hard fault 1394 554 DSP feedback fault 1394 552 dynamics, for servo axis adjusting values 117 E Edit menu 22 Align Blocks option 143 Select All option 141 Space Blocks option 144 Swap Blocks option 142 Edit Value block 414 prompts 415 range limitin
902 Index Failed getting inputs 545 Failed sending BTR 546 Failed sending outputs 545 Failing 528 Fault and status codes 749 Fault handling module, AxisLink 675 Fault Variables 503 Bad Arc (Circular Interpolation) 538 Illegal Command While In Overtravel 541 Illegal Direct Command 540 Fault variables Axis bus loss fault 1394 557 Axis drive over temp fault 1394 559 Axis fault 512 Axis it fault 1394 560 Axis module hard fault 1394 554 Axis motor over temp fault 1394 558 Axis power fault 1394 556 AxisLink fai
Index Setup failure 544 Runtime fault 529 SLC fault code 553 Software overtravel fault 519 System bus over voltage fault 1394 561 System control power fault 1394 564 System ground fault 1394 566 System module hard fault 1394 555 System over temp fault 1394 563 System phase loss fault 1394 565 System Smart Power I Limit Fault 1394 567 System Smart Power Pre-Charge Fault 1394 567 System Smart Power Shunt Timeout Fault 1394 568 System under voltage fault 1394 562 Faults, handling 672 Feedback block 178 Feedba
904 Index General Watch function adding variables and I/O 454 defining 454 Get Firmware 630 getting cam table values, See sending or getting cam table values getting data parameter values, See sending or getting data parameter values getting the next key 421 getting the previous key 421 Global Fault SLC interface fault 508 Global fault 505 Application program memory fault 511 Axis global faults 511 AxisLink general fault 510 AxisLink virtual axis fault 510 CNET Fault 506 CPU utilization overrun fault 507
Index H handling faults in GML Commander 335 Hardware initialization 807 Hardware initialization, effect of 809 Hardware overtravel fault 517 Helical interpolation 235 help types of online help 3 where to find 2 Help menu 22 Home Axis block 195 Configured homing 196 Passive homing 196 Synchronized homing 197 Wait for completion 197 Homing status 575 Homing virtual axes 664 I I/O and Event blocks 289 If Axis Fault 326 Input 297 On Axis 300 On Timeout 325 On Watch 322 Output 291 Output CAM 291 Repeat Loop 32
906 Index Initializing the IMC S class 807 Input 612 Input bits,defining 757, 784 Input block 297 require off to on transition 298 input block require on to off transition 298 Input floats, defining 758, 786 Input group bits,defining 760, 787 Inputs and outputs, defining 755, 782 Insufficient Time (Linear Interpolation) 537 Integer value 649 Integrated IMC S class 808 Interface tab of Configure Control Options dialog box 37 Interfaces AxisLink 34 DH-485 34 Multidrop 34 RIO 33 SLC 33 Intermediate arc circu
Index || Boolean OR 469 ~ Bitwise NOT 467 M M file transfers, enabling 799 M files, types of 794 M files, understanding 793 M0 and M1 floats and integers, defining 801 M0 files, updating, using manual mode 795 M1 files, updating, using manual mode 797 main menu 21 Main Toolbar 22 manual as part of manual set 3 content overview 6 conventions 10 help 2 purpose 2 who should use 2 Manual mode 795 Marker distance 482 Master Cam position 635 Master Cam time 636 master reference position 278 Mathematical function
908 Index encapsulating 162 recursive duplicate modules 163 using Diagram Explorer 160 using main palette 159 creation methods 159 definition 159 displaying information 170 documenting 170 separating, See modules, unencapsulating unencapsulating 165 viewing methods 165 using Diagram Explorer 167 using Expand 166 using module block 167 Module Documentation dialog box 171 Module menu 22 Collapse option 166 Documentation option 170 Encapsulate option 163 Expand option 166 Module Type 41 modules combining, Se
Index RIO scanner output 627 RIO scanner variable 611 Slave Cam position 636 SLC bit group input 622 SLC bit group output 632 SLC bit input 617 SLC bit output 627 Task status 611 Motion controller variables Flex I/O analog output 629 Motion controller, getting data from the 705 Motion controller, sending data to the 702 Motion Flex I/O analog input 618 Motion Group input Optional masks 620 Motion Settings block 179 Setting the maximum acceleration 181 Setting the maximum deceleration 182 Setting the maximu
910 Index moving block 139 Multidrop 34, 435 Multidrop option configuring 58 multiple variables 392 Multitasking blocks 341 multitasking operation 342 On Task 347 Task Control 342 multitasking operation 342 N Naming a Block 25 Naming a Module 25 Native Code block 432 Natural logarithm 651 new diagram selecting settings 30 New Module block 159, 161, 432 no-correction zone 269 Numeric keypad 460 O Offline 528 On Axis block 300 if axis and multitasking 300 status 301 wait for axis and multitasking 300 On CNE
Index Opposite direction gearing 214 optional configurations 44 Optional masks 620 Optional Novice Mode 4 Other default conditions 812 Output 625 Output bits, defining 763, 789 Output block 291 Output Cam block 291 enable output cams actuation delay 295 camming to actual position 293 camming to command position 293 camming to the imaginary axis 293 Output floats, defining 764, 790 Output limit status 583 outputs, defining, See defining inputs and outputs Override profile 207, 210 P palette 23 palette compa
912 Index selecting the display 411 suppress auto CR/LF 411 Printing 26 Printing a Diagram 27 product support, local sales and order 9 service agreements 9 technical training 9 telephone number 10 warranty 9 Profile 221 Program Control blocks 329 End Program 332 Restart Program 329 program script working with, See script program script, See script Program status 588 Programmable limit switch example 803 GML commander program 804 SLC program 805 purpose of this manual 2 R Radius arc circular interpolation
Index Restart Program block 329 restart type 330 when restart type 330 restart type 330 resume task 346 Reversing the gearing direction 214 RIO 33 16-bit integer format 721 32-bit floating point format 729 32-bit integer format 715 32-bit signed BCD format 725 addressing 683 application program runtime fault 701 axis fault 700 axis locked 699 block transfers 682, 702 cam table values 743 configuring the adapter 686 connecting the cable 685 constructing the PLC data file 708 creating I/O values 450 data bit
914 Index RIO input 615 RIO output 626 RIO scanner group input 622 RIO scanner group output 631 RIO scanner input 616 RIO scanner output 627 RIO scanner variable 611 RIO status 588 RIO status conditions 368 RIO, See Remote I/O Rotary negative moves 206 Rotary positive moves 206 Rotary shortest path moves 204 Round 646 Round down 648 Round up 647 Run Program On Power-Up 34 Runtime Display Port 38 Runtime Display Refresh Rate 38 Runtime fault 529 runtime faults 334 S Same direction gearing 214 scaling posit
Index Setup failure 544 Show Axis Position block 350 Show Axis Status block 350 Show CNET Status block 385 Show DH-485 Status block 388 Show DH485 Status block show status 388 show where is 388 show firmware ID 355 Show Input Status block 352 show memory status 356 Show Program Status block 354 show firmware ID 355 show memory status 356 Show RIO Status block 366 Show SLC Status block 397 show status 388 show where is 388 Sine 644 Slave Cam position 636 Slaving to actual position 212, 213 slaving to actual
916 Index defining SLC I/O 52 SLC software, selecting the 1394 in your 771 SLC status 590 SLC to the 1394 GMC turbo, transferring files from the 773 SLC, transferring files from the 1394 GMC turbo to the 775 smart power data parameter settings 43 settings 42 Soft registration position 480 Software initialization 810 Software overtravel fault 519 Space Blocks option Edit menu 144 specifying the remote element directly 391 specifying the remote element indirectly 390 specifying the serial port 437 Splitting
Index Stop Motion block 285 Stopping all motion 287 stop other task 346 Stopping all motion 287 Stopping gearing smoothly 285 stopping the PCAM smoothly 284 Strobed position 478 support On the Web 10 technical product assistance 10 suppress auto CR/LF 411 swap blocks 142 Swap Blocks option Edit menu 142 Synchronized homing 197 Synchronizing gearing on multiple axes 217 Synchronizing moves 208 synchronizing position-lock cams on multiple axes 280 synchronizing time lock cams on multiple axes 272 System bus
918 Index Timers 499 title bar 21 To Congifure an Axis With the Axis Use Screens 61 Toggle Choice block 416 editing the choices 418 entering choices 418 prompts 417 Tools 21 Title Bar 21 Tools menu 22 transfer mechanisms 47 Translate to Script option Diagram menu 174 Translating a Diagram to Script 173 translating diagram to script 173 successful 174 unsuccessful 175 Tune Servo 101 tuning 1394 101 Compact 104 Integrated/Basic 106 Type of module 41 U Understanding System Variables 439 Unencapsulating the M
Index wait for position event 322 wait for registration 323 wait for RIO block transfer 369 wait for RIO status 367 wait for SLC status type 384, 398 wait for task 348 wait for timeout 326 waiting or checking for a specific key 423 waiting or checking for any key 422 waiting or checking for the next key 422 Watch Control block 312 enable dedicated and configured input event/action 320 Watch position 484 Watch position status 582 when end or fault type 333 when restart type 330 919 Window menu 22 windows
920 Index Publication GMLC- 5.
Back Cover Publication GMLC-5.2 - November 1999 1 Supersedes Publication GMLC-5.2 - March 1999 PN GMLC-5.2-M © 1999 Rockwell International Corporation. Printed in the U.S.A.