PCI-8253/56

DSP-based

3/6-Axis Analog

Motion Control Card

User’s Manual

Manual Rev. 2.02

Revision Date: January 5, 2009

Part No: 50-15057-1010

![The image displays a black circle containing the universal recycling symbol. The symbol consists of three white arrows arranged in a triangular loop, pointing clockwise. Each arrow is stylized with black horizontal stripes on its tail to create a three-dimensional, folded ribbon appearance.](.pci-8253-8256-user-manual/47608bbf8a45e0ebf214dba45f110a53c4d2c9d2c87987ea046c47c58abffac8.jpg)
Recycled Paper

Copyright 2009 ADLINK TECHNOLOGY INC.

All Rights Reserved.

The information in this document is subject to change without prior notice in order to improve reliability, design, and function and does not represent a commitment on the part of the manufacturer.

In no event will the manufacturer be liable for direct, indirect, special, incidental, or consequential damages arising out of the use or inability to use the product or documentation, even if advised of the possibility of such damages.

This document contains proprietary information protected by copyright. All rights are reserved. No part of this manual may be reproduced by any mechanical, electronic, or other means in any form without prior written permission of the manufacturer.

# Trademarks

NuDAQ, NuIPC, DAQBench are registered trademarks of ADLINK TECHNOLOGY INC.

Product names mentioned herein are used for identification purposes only and may be trademarks and/or registered trademarks of their respective companies.

# Getting Service from ADLINK

Customer Satisfaction is top priority for ADLINK Technology Inc. Please contact us should you require any service or assistance.

# ADLINK TECHNOLOGY INC.

Web Site: http://www.adlinktech.com

Sales & Service: Service@adlinktech.com

TEL: +886-2-82265877

FAX: +886-2-82265717

Address: 9F, No. 166, Jian Yi Road, Chungho City,

Taipei, 235 Taiwan

Please email or FAX this completed service form for prompt and satisfactory service.

<table><tr><td colspan="2">Company Information</td></tr><tr><td>Company/Organization</td><td></td></tr><tr><td>Contact Person</td><td></td></tr><tr><td>E-mail Address</td><td></td></tr><tr><td>Address</td><td></td></tr><tr><td>Country</td><td></td></tr><tr><td>TEL</td><td>FAX:</td></tr><tr><td>Web Site</td><td></td></tr><tr><td colspan="2">Product Information</td></tr><tr><td>Product Model</td><td></td></tr><tr><td>Environment</td><td>OS:M/B: CPU:Chipset: BIOS:</td></tr></table>

Please give a detailed description of the problem(s):

# Table of Contents

# List of Tables ........ iv

# List of Figures ......... v

# 1 Introduction ..........

1.1 Features... 5
1.2 Specifications...... 7
1.3 Supported Software ... 11

Programming Library . 11

MotionCreatorPro 2TM . 11

1.4 Compatible Terminal Boards .. 11

# 2 Installation ....... 1 3

2.1 Package Contents 13
2.2 PCI-8253/6 Outline Drawing ..... 1 4
2.3 PCI-8253/6 Hardware Installation.. 1 6

Hardware Configuration . . 16
PCI Slot Selection . 16
Installation Procedures .. 16
Troubleshooting .. 17

2.4 Software Driver Installation ... 1 8
2.5 SP1/SP2 Pin Assignments: Main Connector ... 1 9
2.6 (CB) SW1 Switch Setting for Card Index .. . 21
2.7 Daughter Board Switch (DB) SW1. 22
2.8 CN1 Pulsar Connector... 23
2.9 CN2/CN3 DSP Sychronous Signal Connector ........... 2 3

# 3 Signal Connections....... . 25

3.1 Analog Command Output Signals: AOUT 2 6

Single-ended Type Signal: AOUT+ .. 26
Differential Type Signals: AOUT+ / AOUT- . 27

3.2 Analog Input Signals: AIN.. 28
3.3 Trigger Pulse Output Signals: TRG+, TRG- . 2 9
3.4 Encoder Feedback Signals: EA, EB and EZ. 3 1
3.5 Origin Signal: ORG .. 34
3.6 End-Limit Signals: PEL and MEL. 36
3.7 Zero Speed Signal: ZSP . 38
3.8 Alarm Signal: ALM ... 39

3.9 Servo ON Signal: SVON... . 40
3.10 General-purpose Digital Output Signals: EDO............. . 41
3.11 General-purpose Digital Input Signals: EDI . 4 2

# 4 Operation Theory ......... 43

4.1 Classifications of Motion Controller.... 43

Analog Type Motion Control Interface .. 43
Pulse Type Motion Control Interface .. 44
Network Type Motion Control Interface .. 44
Software Real-time Motion Control Kernel ... 45
ADLINK Softmotion DSP ... 45
ASIC Motion Control Kernel ... 46
Comparison Table Of All Motion Control Types ........... 46
PCI-8253/6’s Motion Controller Type .. 46

4.2 Single Motion ... 48

Single Axis Velocity Motion ... 48
Single Axis P-to-P Motion ... 50
Linear Interpolation ... 52
Circular Interpolation ... 60
Speed Override . .. 62
Position Override ... 65

4.3 Home Move... 68
4.4 Jogging ..... 74
4.5 Point Table.. 80

Point Table Construction ... 80
Point index . .. 83
Point table execution ... 84

4.6 Motion Status and Related IO Monitoring.... 95

Position Control and Feedback .. 96
Velocity Feedback .. 97
Motion I/O Status .. 97
Motion Status .. 100

4.7 Driver Management .. . 101

Servo On . .. 101

4.8 Data Sampling ..... . 102
4.9 Interrupt Control .. 110
4.10 E-Gear .. 113
4.11 DSP-based Closed-loop Control.. 115

Closed-loop Control .. 115

PID Filter Plus Feed Forward Gain .. 116

Gantry Mode . .. 135

Closed-loop Gantry Mode . . 136

# 4.12 Position Compared and Trigger pulse ouput . 137

Architecture . . 137

Encoder Channels . 137

Index Input (EZ) . 139

Trigger Pulse Width . 140

Linear Function . 140

FIFO Function . 141

PWM & Mapping function .. 142

Position Comparison . . 142

Position Latch . 143

Timer Function . 143

# 5 MotionCreatorPro 2........ . 145

5.1 Execute MotionCreatorPro 2 .... . 145

5.2 About MotionCreatorPro 2 .. . 145

5.3 MotionCreatorPro 2 Forms ...... 146

Main Menu . 146

Parameter Management . 151

Single Movement . 152

Home Return . 154

Interpolation . 155

General I/O Status . . 156

Position Compare and Trigger Functions . 157

# List of Tables

Table 1-1: Specifications . 7

Table 1-2: Environmental Conditions 10

Table 2-1: SP1 Pin Assignment 19

Table 2-2: SP2 Pin Assignment 20

Table 2-3: SW1 Switch Settings ..... . 21

Table 2-4: CN1 Pin Assignment . 23

Table 2-5: CN2/CN3 DSP Sychronous Signal Connector ....... 23

Table 4-1: Axis Parameter Settings for ORG Home Moves ..... 68

Table 4-2: Axis Parameter Settings for EZ Home Moves ........ 72

Table 4-3: POINT\_DATA Structure 81

Table 4-4: Motion IO Status Bit Definition ... 9 9

Table 4-5: Motion status definition table 100

Table 4-6: Sampling Parameters Definition Table ......... 103

Table 4-7: Sampling Source Definition Table 104

Table 4-8: Interrupt Factor Table 111

# List of Figures

Figure 1-1: Block Diagram of the PCI-8253/6 .. 2

Figure 1-2: Flowchart for Developing an Application .... 4

Figure 2-1: PCB Layout of the PCI-8253 . 1 4

Figure 2-2: PCB Layout of the PCI-8256 . 15

# 1 Introduction

The PCI-8253/6 is a DSP-based 3/6-axis analog type motion control card with PCI interface. This motion control card leverages ADLINK softmotion that offers comprehensive motion trajectory functions.

ADLINK softmotion enables simplified utilization of complex motion manipulation which involves jogging, point-to-point positioning, multiple axes synchronized motion, contouring, etc. ADLINK offers motion kernel customization service to met your specially requirement.

Comprehensive Features – The PCI-8253/6 offers many features including faster encoder speeds, high speed position comparison and trigger pulse outputs, adjustable PID plus feedforward gain and axis parameter on-the-fly, non-volatile program and data memory, and vast dedicated onboard I/O. Through use of 32-bit high-speed dual port RAM, the PCI-8253/6 allows for highspeed servo control up to 20 million encoder counts per second. The servo also provides update rates as low as 50 µs per axis.

This motion controller also provides the programmable acceleration and deceleration to eliminate jerk and smooth velocity profile. For each axes, individual unlimited point tables with 32 depth buffers can realize seamless continuous movements. These tables are also able to combine linear and arc segment.

Closed-loop Control with PID plus Feed Forward Gain – The PCI-8253/6 uses closed-loop control architecture to ensure precise positioning and to control the position at anytime to minimize position errors. PID plus feed-forward gain tuning in a closed-loop system is very important on performance. The feed forward feature is a predictive type of control. To drive the error to zero fast enough to maintain precise motion and make the computing and react quickly, the feed forward control loop is pulsed with closedloop PID. In a typical feedback control system with an inner velocity and an outer position-control loop, velocity, and acceleration, feed forward is added after the position loop to the velocity loop. Predictive control depends on earlier conditions, thus the signal has to bypass the position loop. In other words, the setpoint is compared to the next step in the process rather than the output.

Figure 1-1 shows the functional block diagram of the PCI-8253/6 card. It contains a DSP as a main chip. Around the DSP is motion interface, a FPGA and some necessary devices for DSP such as SDRAM and DPRAM.
![This block diagram depicts a system architecture with data flowing primarily from left to right.\n\n**Blocks and Connections:**\n\n1.  **PCI Bus & PCI Bridge:** On the far left, a vertical double-headed arrow labeled **PCI Bus** connects to a block labeled **PCI Bridge**.\n2.  **Central Processing Cluster:** The **PCI Bridge** connects bidirectionally to three vertically stacked blocks:\n    *   **DPRAM**\n    *   **DSP**\n    *   **Aux I/O**\n3.  **Memory & Logic Cluster:** To the right of the central cluster, there are three corresponding blocks connected bidirectionally to the blocks on their left:\n    *   **SDRAM** (connected to **DPRAM**)\n    *   **FPGA** (connected to **DSP**)\n    *   **Flash ROM** (connected to **Aux I/O**)\n4.  **Isolation & Peripherals:** The **FPGA** block connects to a vertical shaded bar labeled **Isolation**. From this bar, single-headed arrows point to five blocks on the far right:\n    *   **A/D**\n    *   **D/A**\n    *   **Trigger Output**\n    *   **Encoder** (with adjacent vertical text labels: **EA**, **EB**, **EZ**)\n    *   **I/O** (with adjacent vertical text labels: **PEL**, **MEL**, **ORG**, **DIO**)\n5.  **External Interfaces:** On the far right edge, there are two dashed boxes labeled **SCSI 68**, which appear disconnected from the main system flow.](.pci-8253-8256-user-manual/7f8bcd5944a1655b57f5ce4cdc485afc88975c245c7184403e71947a5c711e31.jpg)

Figure 1-1: Block Diagram of the PCI-8253/6

MotionCreatorPro 2 is a Windows-based application development software package included with the PCI-8253/6. MotionCreatorPro 2 is useful for debugging a motion control system during the design phase of a project. An on-screen display lists all installed axes information and I/O signal status of the PCI-8253/6. By using this utility, you can easy tune the axis parameter servo gain (PID plus feed forward gain) reducing the effort required for gain tuning. In addition, the sampling windows display more accurate motion data analysis while integrating the axis parameters and PID gain on-the-fly changes. This utility thus enables the PCI-8253/6 to provide precise positioning control with less effort.

![ACLRINK\nPC-8392\nCard ID 8\nMotion\nHSL BusNo 8\nPC-8758\nCard ID 1\nMotion\nAuto18 ServiceOs\nAuto18 ServiceOs\nAuto18 Alarm\nAuto28 Alarm\nAuto21 Alarm\n\nACLRINK\nPC-8392\nCard ID 8\nMotion\nHSL BusNo 8\nPC-8758\nCard ID 1\nMotion\nAuto18 ServiceOs\nAuto18 ServiceOs\nAuto18 Alarm\nAuto28 Alarm\nAuto21 Alarm\n\nACLRINK\nPC-8392\nCard ID 8\nMotion\nHSL BusNo 8\nPC-8758\nCard id 1\nMotion\nAuto18 ServiceOs\nAuto18 ServiceOs\nAuto18 Alarm\nAuto28 Alarm\nAuto21 Alarm\n\nACLRINK\nPC-8392\nCard ID 8\nMotion\nHSL BusNo 8\nPC-8758\nCard id 1\nMotion\nAuto18 ServiceOs\nAuto18 ServiceOs\nAuto18 Alarm\nAuto28 Alarm\nAuto21 Alarm\n\nACLINK\nPC-8392\nCard ID 8\nMotion\nHSL BusNo 8\nPC-8758\nCard id 1\nMotion\nAuto18 ServiceOs\nAuto18 ServiceOs\nAuto18 Alarm\nAuto28 Alarm\nAuto21 Alarm\n\nACLRINK\nPC-8392\nCard ID 8\nMotion\nHSL BusNo 8\nPC-8758\nCard id 2\nMotion\nAuto18 ServiceOs\nAuto18 ServiceOs\nAuto18 Alarm\nAuto28 Alarm\nAuto21 Alarm\n\nACLRINK\nPC-8392\nCard ID 8\nMotion\nHSL BusNo 8\nPC-8758\nCard id 1\nMotion\nAuto18 ServiceOs\nAuto18 ServiceOs\nAuto18 Alarm\nAuto28 Alarm\nAuto21 Alarm\n\nACLRINK (PC-8392) Cells (6)\nACLRINK (PC-8392) Cells (6)\nACLRINK (PC-8392) Cells (6)\nACLRINK (PC-8392) Cells (6)\nACLRINK (PC-8392) Cells (6)\nACLRINK (PC-8392) Cells (6)\nACLRINK (PC-8392) Cells (6)\nACLRINK (PC-8390) Cells (6)\nACLRINK (PC-8390) Cells (6)\nACLRINK (PC-8390) Cells (6)\nACLRINK (PC-8390) Cells (6)\nACLRINK (PC-8390) Cells (6)\nACLRINK (PC-8390) Cells (6)\nACLRINK (PC-8390) Cells (6)\nACLRINK (PFS) Cells (6)\nACLRINK (PFS) Cells (6)\n\nACLRINK (PFS) Cells (6)\nACLRINK (PFS) Cells (6)\n\nACLRINK (PFS) Cells (6)\n\nACLRINK (PFS) Cells (6)\n\nACLRINK (PFS) Cells (6)\n\nACLRINK (PFS) Cells (6)\n\nACLRINK (PFS) Cells (6)\n\nACLRINK (PFS) Cells (6)\n\nACLRINK (PFS) Cells (6)\n\nACLRINK (PFS) Cells (6)\n\nACLRINK (PFS) Cells (6)\n\nA. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand A. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand B. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand C. Higand D. Higand D. Higand D. Higand D. Higand D. Higand D. Higand D. Higand D. Higand D. Higand D. Higand D. Higand D. Higand D. Higand D. Higand D. Higand D. Higand D. Higand E. Higand E. Higand E. Higand E. Higand E. Higand E. Higand E. Higand E. Higand E. Higand E. Higand E. Higand E. Higand E. Higand E. Higand E. Higand E. Higand E. Higand F. Higand F. Higand F. Higand F. Higand F. Higand F. Higand F. Higand F. Higand F. Higand F. Higand F. Higand F. Higand F. Higand F. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G. Higand G.\nUnit: PPS PFS Val 50 ns 40 ns 30 ns 20 ns 10 ns 50 ns 40 ns 30 ns 20 ns 10 ns 50 ns 40 ns 30 ns 20 ns 10 ns 50 ns 40 ns 30 ns 20 ns 10 ns 50 ns 40 ns 30 ns 20 ns 10 ns 50 ns 40 ns 30 ns 20 ns 10 nns 50 nns 40 nns 30 nns 20 nns 10 nns 50 nns 40 nns 30 nns 20 nns 10 nns 50 nns 40 nns 30 nns 20 nns 10 nns 50 nns 40 nns 30 nns 20 nns 10 nns 50 nns 40 nns 30 nns 20 nrs 50 nns 40 nns 30 nns 20 nrs 10 nns 50 nns 40 nns 30 nns 20 nrs 10 nns 50 nns 40 nns 30 nns 20 nrs 10 nns 50 nns 40 nns 30 nns 20 nrs 10 nns 50 nns 40 nns 30 nns 20 nrs 10 nrs 50 nns 40 nns 30 nns 20 nrs 10 nns 50 nns 40 nns 30 nns 20 nrs 10 nns 50 nns 40 nns 30 nns 20 nrs 10 nns 50 nns 40 nns 30 nns 20 nrs 9nns NPN Vel Stop Sampling\n\nColor Channel ( ) Sampling Setting ( ) Resource Value ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Color ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Colors ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Codes ( ) Line Values ( )\nLine Color Field Data Source: PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC -B392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-8392, PC-83(nl)](.pci-8253-8256-user-manual/cf7b208f2f47bface078b7d5ea17c3c381aa5de341746e791b0135635fd3ffbc.jpg)

Windows Programming Libraries are also provided for C++ compiler, Visual Basic and many other popular languages. Sample programs are provided to illustrate the operations of the functions.

Figure 1-2 illustrates a flow chart of the recommended process in using this manual in developing an application. Refer to the related chapters for details of each step.
![The flowchart describes a process with the following labeled blocks and connections:\n\n**Blocks:**\n*   **Top Block:** 'Hardware Installation Jumper Setting Wiring' (Note: Text is on three lines). To its right is the text 'Chapter 2 & 3'.\n*   **Second Block:** 'Using MotionCreatorPro 2 to Configure a System'. To its right is the text 'Chapter 5'.\n*   **Third Block:** 'Using MotionCreatorPro 2 to Verify Operations'. To its right is the text 'Chapter 4 & 5'.\n*   **Fourth Block:** 'Using the Function Libraries to Develop Applications'.\n*   **Decision Diamond:** 'System is OK?'.\n*   **Terminator Oval:** 'END'.\n\n**Connections:**\n1.  An arrow points downward from the 'Hardware Installation...' block to the 'Using MotionCreatorPro 2 to Configure a System' block.\n2.  An arrow points downward from the 'Using MotionCreatorPro 2 to Configure a System' block to the 'Using MotionCreatorPro 2 to Verify Operations' block.\n3.  An arrow points downward from the 'Using MotionCreatorPro 2 to Verify Operations' block to the 'Using the Function Libraries to Develop Applications' block.\n4.  An arrow points downward from the 'Using the Function Libraries to Develop Applications' block to the 'System is OK?' diamond.\n5.  From the 'System is OK?' diamond, an arrow labeled 'Yes' points downward to the 'END' oval.\n6.  From the left side of the 'System is OK?' diamond, a feedback loop arrow goes upward and splits into two arrows pointing to the left sides of the 'Using MotionCreatorPro 2 to Configure a System' block and the 'Using the Function Libraries to Develop Applications' block.](.pci-8253-8256-user-manual/299df36d1f9be0e040e7ed303a0ce500a5a687d3d36545ed907adb1a49eaff69.jpg)

Figure 1-2: Flowchart for Developing an Application

# 1.1 Features

The following list summarizes the main features of the PCI-8253/6 motion control system.

 32-bit PCI bus, Rev. 2.2, 33 MHz
 On-board 250 MHz DSP
3/6 axes of ±10 volts analog command for controlling servo motors by differential command signals
 Maximum servo update rate is less than 300 µs for 6 axes
Built-in PID with feed-forward gain closed loop control algorithm - reducing the following error and make fast response time
 Available with 3/6 encoders – providing up to 6 axes of closed-loop control, support EA/EB and index interface
 Encoder feedback frequency up to 20 MHz
 Digital filter for encoder input to reduce noise disturbance
 1/2 channel up to 1 MHz high speed trigger pulse output for PCI-8253/PCI-8256
 Programmable trigger pulse width from 0.3 us to 300 ms
 A/D inputs (3/6 channel, 14 bit, ±10V)
Manual pulse generator interface; 1x, 10x, 100x, 1000x amplification
 4-bit board ID for multiple board indexing
 One dedicated emergency input pin
 On-board 512kb flash ROM for motion kernel and non-volatile data – PID parameters
 ADLINK softmotion provides comprehensive trajectory control functions and application functions
 Programmable interrupt source control to host PC
 Dedicated motion I/O for per axis
 High speed position latch function via ORG and Index signals
 General purpose I/O: 4DI/4DO for PCI-8253 and 8DI/8DO for PCI-8256
 Watch dog timer for safety control

 Support for up to 16 cards in one system
 Includes MotionCreatorPro 2TM suite of graphical installation, PID tuning, and data sampling for diagnostic programs
 Supports Windows® 2000/XP/Vista

# 1.2 Specifications

<table><tr><td></td><td>Item</td><td>Description</td></tr><tr><td rowspan="5">System</td><td>Bus Type for PCI board</td><td>PCI Rev. 2.2, 33MHz</td></tr><tr><td>Bus width for PCI</td><td>32-bit</td></tr><tr><td>Bus Voltage</td><td>3.3V, 5V</td></tr><tr><td>Memory usage</td><td>2M x 32 bit</td></tr><tr><td>IRQ on PCI board</td><td>Assigned by PCI controller</td></tr><tr><td rowspan="6">General Specifications</td><td>Operating temperature</td><td>0°C to 55°C</td></tr><tr><td>Storage temperature</td><td>-20°C to 80°C</td></tr><tr><td>Humidity</td><td>5 to 95%, non-condensing</td></tr><tr><td rowspan="3">Power Consumption</td><td>+3.3V @ 0.8 A typical</td></tr><tr><td>+5V @ 0.8 A typical</td></tr><tr><td>+/-12V @ 0.5 A typical</td></tr><tr><td rowspan="3">DSP</td><td>Type</td><td>TI TMS320C6711D</td></tr><tr><td>Clock</td><td>250 MHz</td></tr><tr><td>DSP performance</td><td>1500 MFLOPS</td></tr><tr><td rowspan="2">Board Interface</td><td rowspan="2">Major Connector</td><td>One SCSI VHDCI 68 P for PCI-8253</td></tr><tr><td>Two SCSI VHDCI 68 P for PCI-8256</td></tr><tr><td rowspan="14">Servo Control</td><td>Maximum available axes</td><td>3/6 Axes for PCI-8253/6</td></tr><tr><td>Analog Output command</td><td>±10 volts, resolution: 16 bit</td></tr><tr><td>Analog Output signal type</td><td>Differential / Single-end</td></tr><tr><td rowspan="2">Maximum Servo update rate</td><td>150 μs PID-FF for PCI-8253</td></tr><tr><td>300 μs PID-FF for PCI-8256</td></tr><tr><td>PID (Kp, Ki and Kd) gains</td><td>0 to 32,767</td></tr><tr><td>Feed forward (Aff, Vff) gains</td><td>0 to 32,767</td></tr><tr><td>Velocity feedback (Kv) gain</td><td>0 to 32,767</td></tr><tr><td>Position range</td><td>32 bit</td></tr><tr><td>Velocity range</td><td>32 bit</td></tr><tr><td>Acceleration / Deceleration range</td><td>32 bit</td></tr><tr><td>Encoder Input frequency</td><td>20 MHz @ 4x AB</td></tr><tr><td>Encoder Input Interface</td><td>±12 volts, TTL compatible</td></tr><tr><td>Encoder Filter</td><td>Yes</td></tr></table>

Table 1-1: Specifications

<table><tr><td></td><td>Item</td><td>Description</td></tr><tr><td rowspan="8">Dedicated I/O</td><td rowspan="2">Motion I/O</td><td>Plus / Minus End Limit for each axis</td></tr><tr><td>Zero-position for each axis</td></tr><tr><td rowspan="5">Driver I/O (per axis)</td><td>Servo ON</td></tr><tr><td>In-Position</td></tr><tr><td>Zero-speed</td></tr><tr><td>Alarm</td></tr><tr><td>Error counter clear</td></tr><tr><td>Others</td><td>Pulser Input (A/B/Index phase)</td></tr><tr><td rowspan="7">Analog Input</td><td>Number of inputs</td><td>Up to 6, multiplexed, single-ended</td></tr><tr><td>Input coupling</td><td>DC</td></tr><tr><td>Voltage range (programmable)</td><td>±10 V</td></tr><tr><td>Bandwidth</td><td>100 kHz</td></tr><tr><td>Resolution</td><td>14 bits, no missing codes</td></tr><tr><td>All ranges</td><td>±1 mV for ±10 V input</td></tr><tr><td>Maximum working voltage</td><td>±15 V</td></tr><tr><td rowspan="9">Analog outputs</td><td>Number of outputs</td><td>Up to 6, differential</td></tr><tr><td>Output coupling</td><td>DC</td></tr><tr><td>Voltage range</td><td>±5 V, ±10 V(Gain programmable)</td></tr><tr><td>Output current</td><td>±50 mA (Typ.)</td></tr><tr><td>Resolution</td><td>16 bits, no missing codes</td></tr><tr><td>Monotonicity</td><td>Guaranteed</td></tr><tr><td>Absolute accuracy</td><td>±1.5LSB</td></tr><tr><td>Protection</td><td>Short-circuit to ground</td></tr><tr><td>Settling Time</td><td>15 μs , full-scale step</td></tr><tr><td rowspan="2">General purposed I/O</td><td rowspan="2"></td><td>4 isolated DI/4 DO for PCI-8253</td></tr><tr><td>8 isolated DI/8 DO for PCI-8256</td></tr></table>

Table 1-1: Specifications

<table><tr><td></td><td>Item</td><td>Description</td></tr><tr><td rowspan="15">Motion Functions</td><td>Motion velocity profile</td><td>Trapezoidal &amp; S-Curve</td></tr><tr><td rowspan="5">Single motion</td><td>Jog move</td></tr><tr><td>Point to Point motion</td></tr><tr><td>Position / Speed Override</td></tr><tr><td>Linear interpolation: up to 4 axes</td></tr><tr><td>2-axis Circular interpolation</td></tr><tr><td>Home move</td><td>1 home mode</td></tr><tr><td rowspan="5">Point table motion</td><td>Start / End motion list</td></tr><tr><td>Add linear trajectory</td></tr><tr><td>Add arc trajectory: 2 axes</td></tr><tr><td>Add Dwell</td></tr><tr><td>Start/Sop command</td></tr><tr><td rowspan="2">Motion status monitor</td><td>Motion IO status read/configure</td></tr><tr><td>Motion status</td></tr><tr><td>Synchronous Move</td><td>3 / 6 Axes for PCI-8253/PCI-8256</td></tr><tr><td rowspan="4">Application Functions</td><td>Gantry function</td><td></td></tr><tr><td>E-Gear function</td><td></td></tr><tr><td>Data sampling</td><td></td></tr><tr><td>System error check</td><td>Watchdog timer</td></tr><tr><td rowspan="2">Interrupt</td><td rowspan="2">During operation stop During alarms, etc.</td><td>Possible to select conditions where interrupt occurs</td></tr><tr><td>Yes</td></tr><tr><td rowspan="9">Trigger Function</td><td>Type</td><td>Differential</td></tr><tr><td>Number of outputs</td><td>Up to 4 (2 faster channels / 2 slower channels, supports encoders 0 and 3)</td></tr><tr><td>Output low voltage</td><td>0.5 V (Max.)</td></tr><tr><td>Output high voltage</td><td>2.5 V (Min.)</td></tr><tr><td>Polarity</td><td>Programmable, active-high or active-low</td></tr><tr><td>Trigger output frequency</td><td>Faster: 1MHzSlower: 25KHz</td></tr><tr><td>Min pulse width</td><td>200 ns (programmable pulse width)</td></tr><tr><td>Support compared method</td><td>FIFO and Linear function</td></tr><tr><td>Buffer size</td><td>15 points per trigger channel</td></tr></table>

Table 1-1: Specifications

Environmental Conditions

<table><tr><td>Item</td><td>Specification</td></tr><tr><td>Ambient TemperatureOperation</td><td>0 to 55°C</td></tr><tr><td>Ambient TemperatureStorage</td><td>-20 to 75°C</td></tr><tr><td>Ambient Humidity Operation</td><td>10 to 90% RH, avoid condensation</td></tr><tr><td>Ambient Humidity Storage</td><td>10 to 90% RH, avoid condensation</td></tr><tr><td>Noise resistance</td><td>Noise voltage 1500 V.P.P, noise frequency 25 to 60 Hz using noise simulator</td></tr><tr><td>Cooling method</td><td>Self-cooling</td></tr></table>

Table 1-2: Environmental Conditions

# 1.3 Supported Software

# 1.3.1 Programming Library

Windows 2000/XP/Vista DLLs are provided for PCI-8253/6 users programming their own applications. These function libraries are shipped with the board.

# 1.3.2 MotionCreatorPro ${ \pmb { 2 } } ^ { \mathsf { T M } }$

This Windows-based utility is used to setup cards, motors, and systems. It can also aid in debugging hardware and software problems. It allows users to set I/O logic parameters to be loaded in their own program. This product is also bundled with the card.

Refer to Chapter 5 for more details.

# 1.4 Compatible Terminal Boards

ADLINK provides the DIN-825-J3A for Mitsubishi J3A servo driver I/O, such as alarm signals, zero-speed signals, analog monitor singals, and general purpose digital input signals. ADLINK also provides a general-purpose terminal board for wiring: the DIN-68S.

# 2 Installation

This chapter describes how to install the PCI-8253/6. Please follow these steps below:

 Check what you have (section 2.1)
 Check the PCB (section 2.2)
 Install the hardware (section 2.3)
 Install the software driver (section 2.4)
Understand the I/O signal connections (chapter 3) and their operation (chapter 4)
 Understand the connector pin assignments (the remaining sections) and wiring the connections

# 2.1 Package Contents

In addition to this User’s Guide, the package also includes the following items:

 PCI-8253/6: DSP-based 3/6-Axis Analog Motion Control Card
 ADLINK All-in-one Compact Disc

The terminal board is an optional accessory. This would not be included in PCI-8253/6 package.

If any of these items are missing or damaged, contact the dealer from whom you purchased the product. Save the shipping materials and carton for future shipment or storage.

# 2.2 PCI-8253/6 Outline Drawing

![SP1\n(DB) SW1\n(CB) SW1\nCN1\nCN3/CN2](.pci-8253-8256-user-manual/b5ea3a65b90ff1c053a5dd34ce67dfa08444737fa100b339ae36d6ebf3dcf1da.jpg)

Figure 2-1: PCB Layout of the PCI-8253

SP1: Main signal connector (SCSI VHDCI 68 Pin)

CN2/CN3: DSP synchronous signal connector (4-pin)

CN1: Pulsar signal connector (4-pin)

(CB) SW1: DIP switch for card index selection (0-15)

(DB) SW1: DIP switch for differential/single-ended type of analog output signal selection

![126.35\n100.33\n186.84\n185.00\nCN1\nCN3/CN2\n(DB) SW1\nSP2\n(CB) SW1\nDAUGHTER BOARD\nCARRIER BOARD](.pci-8253-8256-user-manual/a6006c9eff2e36ed35aed1dfeb1aeafb95ea04376c94f6949557de37ff10d8ef.jpg)

Figure 2-2: PCB Layout of the PCI-8256

SP1/SP2: Main signal connector (SCSI VHDCI 68-pin)

CN2/CN3: DSP synchronous signal connector (4-pin)

CN1: Pulsar signal connector (4-pin)

(CB) SW1: DIP switch for card index selection (0-15)

(DB) SW1: DIP switch for differential/single-ended type of analog output signal selection

# 2.3 PCI-8253/6 Hardware Installation

# 2.3.1 Hardware Configuration

The PCI-8253/6 is fully Plug and Play compliant. Therefore, memory allocation (I/O port locations) and the IRQ channel are assigned by the system BIOS. The address assignment is done on a board-by-board basis for all PCI cards in the system.

# 2.3.2 PCI Slot Selection

Your computer system may have both PCI and ISA slots. Do not force the PCI card into a PC/AT slot. The PCI-8253/6 can be used in any PCI slot.

# 2.3.3 Installation Procedures

1. Read through this manual and setup the jumper according to your application
2. Turn off your computer. Turn off all accessories (printer, modem, monitor, etc.) connected to computer. Remove the cover from your computer.
3. Select a 32-bit PCI expansion slot. PCI slots are shorter than ISA or EISA slots and are usually white or ivory.
4. Before handling the PCI-8253/6, discharge any static buildup on your body by touching the metal case of the computer. Hold the edge of the card and do not touch the components.
5. Position the board into the PCI slot you have selected.
6. Secure the card in place at the rear panel of the system unit using screws removed from the slot.

# 2.3.4 Troubleshooting

If your system doesn’t boot or if you experience erratic operation with your PCI board in place, it’s most likely caused by an interrupt conflict (possibly an incorrect ISA setup). Once determined that the problem is more than a simple oversight, the general solution, is to consult the BIOS documentation that comes with your system.

Check the control panel of the Windows system if the card is listed by the system. If not, check the PCI settings in the BIOS or use another PCI slot.

# 2.4 Software Driver Installation

# PCI-8253/6:

1. Autorun the ADLINK All-In-One CD. Choose Driver Installation -> Motion Control -> PCI-8253/6
2. Follow the procedures of the installer.
3. After setup installation is completed, restart windows.

Suggestion: Please download the latest software from ADLINK website if necessary.

# 2.5 SP1/SP2 Pin Assignments: Main Connector SP1

<table><tr><td>No.</td><td>Name</td><td>I/O</td><td>Function of Axis</td><td>No.</td><td>Name</td><td>I/O</td><td>Function of Axis</td></tr><tr><td>1</td><td>AOUT1+</td><td>O</td><td>Analog output (+),(1)</td><td>35</td><td>AOUT1-</td><td>O</td><td>Analog output (-),(1)</td></tr><tr><td>2</td><td>AOUT2+</td><td>O</td><td>Analog output (+),(2)</td><td>36</td><td>AOUT2-</td><td>O</td><td>Analog output (-),(2)</td></tr><tr><td>3</td><td>AOUT3+</td><td>O</td><td>Analog output (+),(3)</td><td>37</td><td>AOUT3-</td><td>O</td><td>Analog output (-),(3)</td></tr><tr><td>4</td><td>AGND</td><td>SG</td><td>Analog ground</td><td>38</td><td>AGND</td><td>SG</td><td>Analog ground</td></tr><tr><td>5</td><td>AIN1</td><td>I</td><td>Analog input, (1)</td><td>39</td><td>AGND</td><td>SG</td><td>Analog ground</td></tr><tr><td>6</td><td>AIN2</td><td>I</td><td>Analog input, (2)</td><td>40</td><td>Rsv.</td><td>-</td><td>Reserved</td></tr><tr><td>7</td><td>AIN3</td><td>I</td><td>Analog input, (3)</td><td>41</td><td>Rsv.</td><td>-</td><td>Reserved</td></tr><tr><td>8</td><td>EA1+</td><td>I</td><td>Encoder A-phase (+),(1)</td><td>42</td><td>EA1-</td><td>I</td><td>Encoder A-phase (-),(1)</td></tr><tr><td>9</td><td>EB1+</td><td>I</td><td>Encoder B-phase (+),(1)</td><td>43</td><td>EB1-</td><td>I</td><td>Encoder B-phase (-),(1)</td></tr><tr><td>10</td><td>EZ1+</td><td>I</td><td>Encoder Z-phase (+),(1)</td><td>44</td><td>EZ1-</td><td>I</td><td>Encoder Z-phase (-),(1)</td></tr><tr><td>11</td><td>ALM1</td><td>I</td><td>Servo alarm,(1)</td><td>45</td><td>ORG1</td><td>I</td><td>Zero-Position, (1)</td></tr><tr><td>12</td><td>SVON1</td><td>O</td><td>Servo-ON, (1)</td><td>46</td><td>PEL1</td><td>I</td><td>Positive limit, (1)</td></tr><tr><td>13</td><td>ZSP1</td><td>I</td><td>ZeroSpeed 1</td><td>47</td><td>MEL1</td><td>I</td><td>Negative limit, (1)</td></tr><tr><td>14</td><td>TRG1</td><td>O</td><td>Trigger Output, (+)(1)</td><td>48</td><td>TRG1-</td><td>O</td><td>Trigger Output, (-)(1)</td></tr><tr><td>15</td><td>TRG2+</td><td>O</td><td>Trigger Output, (+)(2)</td><td>49</td><td>TRG2-</td><td>O</td><td>Trigger Output, (-)(2)</td></tr><tr><td>16</td><td>EA2+</td><td>I</td><td>Encoder A-phase (+),(2)</td><td>50</td><td>EA2-</td><td>I</td><td>Encoder A-phase (-),(2)</td></tr><tr><td>17</td><td>EB2+</td><td>I</td><td>Encoder B-phase (+),(2)</td><td>51</td><td>EB2-</td><td>I</td><td>Encoder B-phase (-),(2)</td></tr><tr><td>18</td><td>EZ2+</td><td>I</td><td>Encoder Z-phase (+),(2)</td><td>52</td><td>EZ2-</td><td>I</td><td>Encoder Z-phase (-),(2)</td></tr><tr><td>19</td><td>DOCOM</td><td>-</td><td>Digital output common</td><td>53</td><td>DICOM</td><td>-</td><td>Digital input common</td></tr><tr><td>20</td><td>ALM2</td><td>I</td><td>Servo alarm, (2)</td><td>54</td><td>ORG2</td><td>I</td><td>Zero-Position, (2)</td></tr><tr><td>21</td><td>SVON2</td><td>O</td><td>Servo-ON, (2)</td><td>55</td><td>PEL2</td><td>I</td><td>Positive limit, (2)</td></tr><tr><td>22</td><td>ZSP2</td><td>I</td><td>ZeroSpeed 2</td><td>56</td><td>MEL2</td><td>I</td><td>Negative limit, (2)</td></tr><tr><td>23</td><td>EA3+</td><td>I</td><td>Encoder A-phase (+),(3)</td><td>57</td><td>EA3-</td><td>I</td><td>Encoder A-phase (-),(3)</td></tr><tr><td>24</td><td>EB3+</td><td>I</td><td>Encoder B-phase (+),(3)</td><td>58</td><td>EB3-</td><td>I</td><td>Encoder B-phase (-),(3)</td></tr><tr><td>25</td><td>EZ3+</td><td>I</td><td>Encoder Z-phase (+),(3)</td><td>59</td><td>EZ3-</td><td>I</td><td>Encoder Z-phase (-),(3)</td></tr><tr><td>26</td><td>ALM3</td><td>I</td><td>Servo alarm,(3)</td><td>60</td><td>ORG3</td><td>I</td><td>Zero-Position, (3)</td></tr><tr><td>27</td><td>SVON3</td><td>O</td><td>Servo-ON, (3)</td><td>61</td><td>PEL3</td><td>I</td><td>Positive limit, (3)</td></tr><tr><td>28</td><td>ZSP3</td><td>I</td><td>ZeroSpeed 3</td><td>62</td><td>MEL3</td><td>I</td><td>Negative limit, (3)</td></tr><tr><td>29</td><td>DOCOM</td><td>-</td><td>Digital output common</td><td>63</td><td>IEMG</td><td>I</td><td>Emergency Stop</td></tr><tr><td>30</td><td>DOCOM</td><td>-</td><td>Digital output common</td><td>64</td><td>DICOM</td><td>-</td><td>Digital input common</td></tr><tr><td>31</td><td>EDO1</td><td>O</td><td>Digital Output, (1)</td><td>65</td><td>EDI1</td><td>I</td><td>Digital Input, (1)</td></tr><tr><td>32</td><td>EDO2</td><td>O</td><td>Digital Output, (2)</td><td>66</td><td>EDI2</td><td>I</td><td>Digital Input, (2)</td></tr><tr><td>33</td><td>EDO3</td><td>O</td><td>Digital Output, (3)</td><td>67</td><td>EDI3</td><td>I</td><td>Digital Input, (3)</td></tr><tr><td>34</td><td>EDO4</td><td>O</td><td>Digital Output, (4)</td><td>68</td><td>EDI4</td><td>I</td><td>Digital Input, (4)</td></tr></table>

Table 2-1: SP1 Pin Assignment

SP2

<table><tr><td>No.</td><td>Name</td><td>I/O</td><td>Function of Axis</td><td>No.</td><td>Name</td><td>I/O</td><td>Function of Axis</td></tr><tr><td>1</td><td>AOUT4+</td><td>O</td><td>Analog output (+),(4)</td><td>35</td><td>AOUT4-</td><td>O</td><td>Analog output (-),(4)</td></tr><tr><td>2</td><td>AOUT5+</td><td>O</td><td>Analog output (+),(5)</td><td>36</td><td>AOUT5-</td><td>O</td><td>Analog output (-),(5)</td></tr><tr><td>3</td><td>AOUT6+</td><td>O</td><td>Analog output (+),(6)</td><td>37</td><td>AOUT6-</td><td>O</td><td>Analog output (-),(6)</td></tr><tr><td>4</td><td>AGND</td><td>SG</td><td>Analog ground</td><td>38</td><td>AGND</td><td>SG</td><td>Analog ground</td></tr><tr><td>5</td><td>AIN4</td><td>I</td><td>Analog input, (4)</td><td>39</td><td>AGND</td><td>SG</td><td>Analog ground</td></tr><tr><td>6</td><td>AIN5</td><td>I</td><td>Analog input, (5)</td><td>40</td><td>Rsv.</td><td>-</td><td>Reserved</td></tr><tr><td>7</td><td>AIN6</td><td>I</td><td>Analog input, (6)</td><td>41</td><td>Rsv.</td><td>-</td><td>Reserved</td></tr><tr><td>8</td><td>EA4+</td><td>I</td><td>Encoder A-phase (+),(4)</td><td>42</td><td>EA4-</td><td>I</td><td>Encoder A-phase (-),(4)</td></tr><tr><td>9</td><td>EB4+</td><td>I</td><td>Encoder B-phase (+),(4)</td><td>43</td><td>EB4-</td><td>I</td><td>Encoder B-phase (-),(4)</td></tr><tr><td>10</td><td>EZ4+</td><td>I</td><td>Encoder Z-phase (+),(4)</td><td>44</td><td>EZ4-</td><td>I</td><td>Encoder Z-phase (-),(4)</td></tr><tr><td>11</td><td>ALM4</td><td>I</td><td>Servo alarm, (4)</td><td>45</td><td>ORG4</td><td>I</td><td>Zero-Position, (4)</td></tr><tr><td>12</td><td>SVON4</td><td>O</td><td>Servo-ON, (4)</td><td>46</td><td>PEL4</td><td>I</td><td>Positive limit, (4)</td></tr><tr><td>13</td><td>ZSP4</td><td>I</td><td>ZeroSpeed 4</td><td>47</td><td>MEL4</td><td>I</td><td>Negative limit, (4)</td></tr><tr><td>14</td><td>TRG3+ / OUT2+</td><td>O</td><td>Trigger Output, (+)(3) / Pulse Output, (+)(2)</td><td>48</td><td>TRG3- / OUT2-</td><td>O</td><td>Trigger Output, (-)(3) / Pulse Output, (-)(2)</td></tr><tr><td>15</td><td>TRG4+ / DIR2+</td><td>O</td><td>Trigger Output, (+)(4) / Pulse DIR., (+)(2)</td><td>49</td><td>TRG4- / DIR2-</td><td>O</td><td>Trigger Output, (-)(4) / Pulse DIR., (-)(2)</td></tr><tr><td>16</td><td>EA5+</td><td>I</td><td>Encoder A-phase (+),(5)</td><td>50</td><td>EA5-</td><td>I</td><td>Encoder A-phase (-),(5)</td></tr><tr><td>17</td><td>EB5+</td><td>I</td><td>Encoder B-phase (+),(5)</td><td>51</td><td>EB5-</td><td>I</td><td>Encoder B-phase (-),(5)</td></tr><tr><td>18</td><td>EZ5+</td><td>I</td><td>Encoder Z-phase (+),(5)</td><td>52</td><td>EZ5</td><td>I</td><td>Encoder Z-phase (-),(5)</td></tr><tr><td>19</td><td>DOCOM</td><td>-</td><td>Digital output common</td><td>53</td><td>DICOM</td><td>-</td><td>Digital input common</td></tr><tr><td>20</td><td>ALM5</td><td>I</td><td>Servo alarm,(5)</td><td>54</td><td>ORG5</td><td>I</td><td>Zero-Position, (5)</td></tr><tr><td>21</td><td>SVON5</td><td>O</td><td>Servo-ON, (5)</td><td>55</td><td>PEL5</td><td>I</td><td>Positive limit, (5)</td></tr><tr><td>22</td><td>ZSP5</td><td>I</td><td>ZeroSpeed 5</td><td>56</td><td>MEL5</td><td>I</td><td>Negative limit, (5)</td></tr><tr><td>23</td><td>EA6+</td><td>I</td><td>Encoder A-phase (+),(6)</td><td>57</td><td>EA6-</td><td>I</td><td>Encoder A-phase (-),(6)</td></tr><tr><td>24</td><td>EB6+</td><td>I</td><td>Encoder B-phase (+),(6)</td><td>58</td><td>EB6-</td><td>I</td><td>Encoder B-phase (-),(6)</td></tr><tr><td>25</td><td>EZ6+</td><td>I</td><td>Encoder Z-phase (+),(6)</td><td>59</td><td>EZ6-</td><td>I</td><td>Encoder Z-phase (-),(6)</td></tr><tr><td>26</td><td>ALM6</td><td>I</td><td>Servo alarm,(6)</td><td>60</td><td>ORG6</td><td>I</td><td>Zero-Position, (6)</td></tr><tr><td>27</td><td>SVON6</td><td>O</td><td>Servo-ON, (6)</td><td>61</td><td>PEL6</td><td>I</td><td>Positive limit, (6)</td></tr><tr><td>28</td><td>ZSP6</td><td>I</td><td>ZeroSpeed 6</td><td>62</td><td>MEL6</td><td>I</td><td>Negative limit, (6)</td></tr><tr><td>29</td><td>DOCOM</td><td>-</td><td>Digital output common</td><td>63</td><td>Rsv.</td><td>-</td><td>Reserved</td></tr><tr><td>30</td><td>DOCOM</td><td>-</td><td>Digital output common</td><td>64</td><td>DICOM</td><td>-</td><td>Digital input common</td></tr><tr><td>31</td><td>EDO5</td><td>O</td><td>Digital Output, (5)</td><td>65</td><td>EDI5</td><td>I</td><td>Digital Input, (5)</td></tr><tr><td>32</td><td>EDO6</td><td>O</td><td>Digital Output, (6)</td><td>66</td><td>EDI6</td><td>I</td><td>Digital Input, (6)</td></tr><tr><td>33</td><td>EDO7</td><td>O</td><td>Digital Output, (7)</td><td>67</td><td>EDI7</td><td>I</td><td>Digital Input, (7)</td></tr><tr><td>34</td><td>EDO8</td><td>O</td><td>Digital Output, (8)</td><td>68</td><td>EDI8</td><td>I</td><td>Digital Input, (8)</td></tr></table>

Table 2-2: SP2 Pin Assignment

# 2.6 (CB) SW1 Switch Setting for Card Index

The (CB) SW1 switch is used to set the card index. For example, if you turn 0 to ON and others are OFF. It means the card index as 0. The value is from 0 to 15. Refer to the following table for details.

![ON\n1 2 3 4](.pci-8253-8256-user-manual/d9b91e66aa341d9fdb2eab6da74867484ea820c76adc55cd827fa61258b5e428.jpg)

<table><tr><td>Card ID</td><td>Switch Setting (ON=0)</td></tr><tr><td>0</td><td>1111</td></tr><tr><td>1</td><td>1110</td></tr><tr><td>2</td><td>1101</td></tr><tr><td>3</td><td>1100</td></tr><tr><td>4</td><td>1011</td></tr><tr><td>5</td><td>1010</td></tr><tr><td>6</td><td>1001</td></tr><tr><td>7</td><td>1000</td></tr><tr><td>8</td><td>0111</td></tr><tr><td>9</td><td>0110</td></tr><tr><td>10</td><td>0101</td></tr><tr><td>11</td><td>0100</td></tr><tr><td>12</td><td>0011</td></tr><tr><td>13</td><td>0010</td></tr><tr><td>14</td><td>0001</td></tr><tr><td>15</td><td>0000</td></tr></table>

Table 2-3: SW1 Switch Settings

# 2.7 Daughter Board Switch (DB) SW1

(DB) SW1 is defined to select differential or single end function for “analog output”.

(DB) SW1 Switch Diagram
![Differential signal\nON\nSingle-ended signal\n1 2 3 4 5 6](.pci-8253-8256-user-manual/61aaa94ce6751450b1e8b8a10447b1e834619471720462233f912be8fa77dfd2.jpg)

# 2.8 CN1 Pulsar Connector

The CN1 connector is used to connect to a manual pluse generator.

CN1 Pin Assignment

<table><tr><td>Pin No</td><td>Signal Name</td></tr><tr><td>1</td><td>PDICOM</td></tr><tr><td>2</td><td>IPA</td></tr><tr><td>3</td><td>IPB</td></tr><tr><td>4</td><td>PDICOM</td></tr></table>

Table 2-4: CN1 Pin Assignment

# 2.9 CN2/CN3 DSP Sychronous Signal Connector CN2/CN3 Pin Assignment

<table><tr><td>Pin No</td><td>Signal Name</td></tr><tr><td>1</td><td>SYN_PWR</td></tr><tr><td>2</td><td>STP</td></tr><tr><td>3</td><td>STA</td></tr><tr><td>4</td><td>DGND</td></tr></table>

Table 2-5: CN2/CN3 DSP Sychronous Signal Connector

# 3 Signal Connections

Signal connections of all I/O’s are described in this chapter. Refer to the contents of this chapter before wiring any cable between the PCI-8253/6 and any motor driver.

This chapter contains the following sections:

Section 3.1 Analog Command Output Signals: AOUT

Section 3.2 Analog Input Signals: AIN

Section 3.3 Trigger Pulse Output Signals: TRG+, TRG-

Section 3.4 Encoder Feedback Signals: EA, EB and EZ

Section 3.5 Origin Signal: ORG

Section 3.6 End-Limit Signals: PEL and MEL

Section 3.7 Zero Speed Signal: ZSP

Section 3.8 Alarm Signal: ALM

Section 3.9 Servo ON Signal: SVON

Section 3.10 General-purpose Digital Output Signals: EDO

Section 3.11 General-purpose Digital Input Signals: EDI

# 3.1 Analog Command Output Signals: AOUT

# 3.1.1 Single-ended Type Signal: AOUT+

There are 3/6 axes analog output signals on the PCI-8253/6. For each axis, the OUT+ signal is used to drive the voltage command and indicate the direction. The AOUT+ signals can also decide motor forward/backward direction by plus/minus voltage out. The Analog Output can drive between +10V to -10V and its resolution guarantees to ±1 mV. The following table shows all pulse output signals on SP1 and SP2.

<table><tr><td>SP1 Pin No.</td><td>Signal Name</td><td>Description</td><td>Axis #</td></tr><tr><td>1</td><td>AOUT1+</td><td>Analog Out Signal</td><td>1</td></tr><tr><td>2</td><td>AOUT2+</td><td>Analog Out Signal</td><td>2</td></tr><tr><td>3</td><td>AOUT3+</td><td>Analog Out Signal</td><td>3</td></tr></table>

<table><tr><td>SP2 Pin No.</td><td>Signal Name</td><td>Description</td><td>Axis #</td></tr><tr><td>1</td><td>AOUT4+</td><td>Analog Out Signal</td><td>4</td></tr><tr><td>2</td><td>AOUT5+</td><td>Analog Out Signal</td><td>5</td></tr><tr><td>3</td><td>AOUT6+</td><td>Analog Out Signal</td><td>6</td></tr></table>

The following wiring diagram is for Analog out signals of axis.

![The diagram illustrates a circuit block involving a D/A Converter and an operational amplifier (triangle symbol).\n\n**Labeled Blocks and Text:**\n*   **Ref In**\n*   **D/A Converter** (rectangular box)\n*   **SP1/SP2** (red text)\n*   **(Outside the PCI-8253/6)** (black text)\n*   **+** and **-** inputs on the triangle\n*   **To D/A Output**\n*   **AGND**\n*   **Ground symbol** (inverted triangle)\n\n**Connections:**\n*   **Ref In** connects to the top input of the **D/A Converter**.\n*   A feedback loop connects the output of the triangle (op-amp) back to the top input of the **D/A Converter**.\n*   The bottom-left of the **D/A Converter** connects to a bottom horizontal line.\n*   This bottom horizontal line connects to the negative (**-**) input of the triangle, a ground symbol, and the bottom terminal of a vertical bar.\n*   The output of the triangle connects to the top terminal of the vertical bar.\n*   The top terminal of the vertical bar has an arrow pointing to **To D/A Output**.\n*   The bottom terminal of the vertical bar has an arrow pointing to **AGND**.\n*   A box in the top right corner labeled **SP1/SP2** and **(Outside the PCI-8253/6)** is positioned near the vertical bar.](.pci-8253-8256-user-manual/a6900192e215028c7a82f6f3f856d909bbb8256637f8b42298d21dda4449fbc0.jpg)

# 3.1.2 Differential Type Signals: AOUT+ / AOUT-

There are 3/6 axes differential analog output signals on the PCI-8253/6. For each axis, the AOUT signal is used to drive the voltage command and indicate the direction. The AOUT signals can also decide motor forward/backward direction by plus/minus voltage output. The analog output can drive between +10V to -10V and its resolution guarantees to 1mV. The following table shows all analog output signals in differential type on SP1 and SP2.

<table><tr><td>SP1 Pin No.</td><td>Signal Name</td><td>Description</td><td>Axis #</td></tr><tr><td>1</td><td>AOUT1+</td><td>Analog Out Signal +</td><td>1</td></tr><tr><td>35</td><td>AOUT1-</td><td>Analog Out Signal -</td><td>1</td></tr><tr><td>2</td><td>AOUT2+</td><td>Analog Out Signal +</td><td>2</td></tr><tr><td>36</td><td>AOUT2-</td><td>Analog Out Signal -</td><td>2</td></tr><tr><td>3</td><td>AOUT3+</td><td>Analog Out Signal +</td><td>3</td></tr><tr><td>37</td><td>AOUT3-</td><td>Analog Out Signal -</td><td>3</td></tr></table>

<table><tr><td>SP2 Pin No.</td><td>Signal Name</td><td>Description</td><td>Axis #</td></tr><tr><td>1</td><td>AOUT4+</td><td>Analog Out Signal +</td><td>4</td></tr><tr><td>35</td><td>AOUT4-</td><td>Analog Out Signal -</td><td>4</td></tr><tr><td>2</td><td>AOUT5+</td><td>Analog Out Signal +</td><td>5</td></tr><tr><td>36</td><td>AOUT5-</td><td>Analog Out Signal -</td><td>5</td></tr><tr><td>3</td><td>AOUT6+</td><td>Analog Out Signal +</td><td>6</td></tr><tr><td>37</td><td>AOUT6-</td><td>Analog Out Signal -</td><td>6</td></tr></table>

The following wiring diagram is for analog out signals of the axis.

![Ref\nIn\nD/A\nConverter\nGND\nSP1/SP2\nAOUT+\nAOUT-](.pci-8253-8256-user-manual/bb7032194ff103f8e2be805d412d1a1477b47dd2af7aa5dd2cca1496f0bf6f5a.jpg)

# 3.2 Analog Input Signals: AIN

There are 3/6 axes analog Output signals on the PCI-8253/6. For each axis, an AIN signal is used to receive the feedback voltage direction. The Analog Input can indicate the voltage level between +10V to -10V and its resolution guarantees 14 bits with no missing code. The following table shows all pulse output signals on SP1 and SP2.

<table><tr><td>SP1 Pin No.</td><td>Signal Name</td><td>Description</td></tr><tr><td>1</td><td>AIN1</td><td>Analog Input Signal</td></tr><tr><td>2</td><td>AIN2</td><td>Analog Input Signal</td></tr><tr><td>3</td><td>AIN3</td><td>Analog Input Signal</td></tr></table>

<table><tr><td>SP2 Pin No.</td><td>Signal Name</td><td>Description</td></tr><tr><td>1</td><td>AIN4</td><td>Analog Input Signal</td></tr><tr><td>2</td><td>AIN5</td><td>Analog Input Signal</td></tr><tr><td>3</td><td>AIN6</td><td>Analog Input Signal</td></tr></table>

The following wiring diagram is for Analog out signals of axis.

![SP1/SP2\n(Outside the PCI-8253/6)\nSignal\nSource\nV1 V2\nn = 0, 1\nAIN\nInstrumentation\nAmplifier\nAGND\nTo A/D\n- Converter](.pci-8253-8256-user-manual/7ba24bfae351334525fd1527f18b8329f7c58147439704b0b94c9ddc7d1a02a1.jpg)

# 3.3 Trigger Pulse Output Signals: TRG+, TRG-

There are 2/4 axes trigger output signals on the PCI-8253/6. For each axis, one pair of TRG differential signals are used to transmit the trigger singal with pulse train type. Each signal consists of a pair of differential signals. For example, TRG1 consists of TRG1+ and TRG1- signals. The following table shows all trigger output signals on SP1 and SP2.

<table><tr><td>SP1 Pin No.</td><td>Signal Name</td><td>Description</td><td>Axis #</td></tr><tr><td>14</td><td>TRG1+</td><td>Trigger signal (+)</td><td>1</td></tr><tr><td>48</td><td>TRG1-</td><td>Trigger signal (-)</td><td>1</td></tr><tr><td>15</td><td>TRG2+</td><td>Trigger signal (+)</td><td>2</td></tr><tr><td>49</td><td>TRG2-</td><td>Trigger signal (-)</td><td>2</td></tr></table>

<table><tr><td>SP2 Pin No.</td><td>Signal Name</td><td>Description</td><td>Axis #</td></tr><tr><td>14</td><td>TRG3+</td><td>Trigger signal (+)</td><td>3</td></tr><tr><td>48</td><td>TRG3-</td><td>Trigger signal (-)</td><td>3</td></tr><tr><td>15</td><td>TRG4+</td><td>Trigger signal (+)</td><td>4</td></tr><tr><td>49</td><td>TRG4-</td><td>Trigger signal (-)</td><td>4</td></tr></table>

The default setting of TRG+ and TRG- is set to differential line driver mode.

The following wiring diagram is for TRG+ and TRG- signals of the axis.

![SP1/SP2\n(Outside the PCI-8253/6)\n26LS31\nTRG\nTRG+\nTRG-\nGND](.pci-8253-8256-user-manual/b6d13ce08e76b6c80f3d77c6e78e12f4aa94af47563964695efb3fe51bd2b3de.jpg)

# Non-differential type wiring example:

Suggest Usage: See the following figure. Choose TRG+ to connect to driver’s TRG

![SP1/SP2\n(PCI-8253/6 Outside)\nInside Motion Card\nVDD\nTRG+\nTRG-\nEXGND\n+5V\n470 Ohm\nInside Motor Driver](.pci-8253-8256-user-manual/72396d9176d52834934e0bb0af8091527c4b48ae3c0611443738d9477b838474.jpg)

Warning: The sink current must not exceed 20mA or the 26LS31 will be damaged!

# 3.4 Encoder Feedback Signals: EA, EB and EZ

The encoder feedback signals include EA, EB, and EZ. Every axis has six pins for three differential pairs of phase-A (EA), phase-B (EB), and index (EZ) inputs. EA and EB are used for position counting, and EZ is used for zero position indexing. All relative signal names, pin numbers, and axis numbers are shown in the following tables:

SP1

<table><tr><td>SP1 Pin No</td><td>Signal Name</td><td>Axis #</td><td>SP1 Pin No</td><td>Signal Name</td><td>Axis #</td></tr><tr><td>7</td><td>EA1+</td><td>1</td><td>41</td><td>EA1-</td><td>1</td></tr><tr><td>8</td><td>EB1+</td><td>1</td><td>42</td><td>EB1-</td><td>1</td></tr><tr><td>16</td><td>EA2+</td><td>2</td><td>50</td><td>EA2-</td><td>2</td></tr><tr><td>17</td><td>EB2+</td><td>2</td><td>51</td><td>EB2-</td><td>2</td></tr><tr><td>23</td><td>EA3+</td><td>3</td><td>57</td><td>EA3-</td><td>3</td></tr><tr><td>24</td><td>EB3+</td><td>3</td><td>58</td><td>EB3-</td><td>3</td></tr></table>

<table><tr><td>SP1 Pin No</td><td>Signal Name</td><td>Axis #</td><td>SP1 Pin No</td><td>Signal Name</td><td>Axis #</td></tr><tr><td>9</td><td>EZ1+</td><td>1</td><td>43</td><td>EZ1-</td><td>1</td></tr><tr><td>18</td><td>EZ2+</td><td>2</td><td>52</td><td>EZ2-</td><td>2</td></tr><tr><td>25</td><td>EZ3+</td><td>3</td><td>59</td><td>EZ3-</td><td>3</td></tr></table>

SP2

<table><tr><td>SP2 Pin No</td><td>Signal Name</td><td>Axis #</td><td>SP2 Pin No</td><td>Signal Name</td><td>Axis #</td></tr><tr><td>7</td><td>EA4+</td><td>4</td><td>41</td><td>EA4-</td><td>4</td></tr><tr><td>8</td><td>EB4+</td><td>4</td><td>42</td><td>EB4-</td><td>4</td></tr><tr><td>16</td><td>EA5+</td><td>5</td><td>50</td><td>EA5-</td><td>5</td></tr><tr><td>17</td><td>EB5+</td><td>5</td><td>51</td><td>EB5-</td><td>5</td></tr><tr><td>23</td><td>EA6+</td><td>6</td><td>57</td><td>EA6-</td><td>6</td></tr><tr><td>24</td><td>EB6+</td><td>6</td><td>58</td><td>EB6-</td><td>6</td></tr></table>

<table><tr><td>SP2 Pin No</td><td>Signal Name</td><td>Axis #</td><td>SP2 Pin No</td><td>Signal Name</td><td>Axis #</td></tr><tr><td>9</td><td>EZ4+</td><td>4</td><td>43</td><td>EZ4-</td><td>4</td></tr><tr><td>18</td><td>EZ5+</td><td>5</td><td>52</td><td>EZ5-</td><td>5</td></tr><tr><td>25</td><td>EZ6+</td><td>6</td><td>59</td><td>EZ6-</td><td>6</td></tr></table>

The input circuit of the EA, EB, and EZ signals is shown as follows:

![Inside 8253/6\nEA, EB, EZ\nGND\nEZ+\nEB+\nEA+\nSP1/SP2\nEA-\nEB-\nEZ-](.pci-8253-8256-user-manual/0632490f68cc0021d9e2ffff402f1f84acae45d5e443db3462f6e32ddab0b869.jpg)

Please note that the voltage across each differential pair of encoder input signals (EA+, EA-), (EB+, EB-), and (EZ+, EZ-) have ±7V common mode range. Therefore, the output current must be observed when connecting to the encoder feedback or motor driver feedback as not to over drive the source. The differential signal pairs are converted to digital signals EA, EB, and EZ; then retrieve from the DSP side.

Below are examples of connecting the input signals with an external circuit. The input circuit can be connected to an encoder or motor driver if it is equipped with: (1) a differential line driver or (2) an open collector output.

# Connection to Line Driver Output

To drive the PCI-8253/6 encoder input, the driver output must provide at least 0.2V across the differential pairs. The case grounds of both sides must be tied together. The maximum frequency is 5Mhz or more depends on wiring distance and signal conditioning.

![The diagram is divided by a vertical dashed line into two sections: 'Inside 8253/56' on the left and 'External Encoder / Driver With line driver output' on the right.\n\n**Labeled Blocks and Connections:**\n\n*   **Top Line:** A horizontal line labeled 'EA+, EB+, EZ+' extends from the left section to the right. It passes through a pink dot on the vertical divider and connects to the flat input side of a triangular buffer symbol.\n*   **Middle Line:** A horizontal line labeled 'EA-, EB-, EZ-' extends from the left section to the right. It passes through a pink dot on the divider and connects to a small circle at the base of the triangular buffer's input side.\n*   **Bottom Line:** A horizontal line labeled 'EGND' extends from the left section to the right. It connects to the text 'GND' on the right side. There are downward arrows at both ends of this line.\n*   **Output:** The right-pointing apex of the triangular buffer connects to a line extending off-screen. Below this output line, the text reads 'A,B phase signals' and 'Index signal'.](.pci-8253-8256-user-manual/a762b790c199795a553e085b4f8d4e8cff1309dd27232bac21f9d30262716a2c.jpg)

For more operation information on the encoder feedback signals, refer to section 4.4.

# 3.5 Origin Signal: ORG

The origin signals (ORG1\~ORG6) are used as input signals for the origin of the mechanism. The following table lists signal names, pin numbers, and axis numbers:

<table><tr><td>SP1 Pin No</td><td>Signal Name</td><td>Axis #</td><td>SP2 Pin No</td><td>Signal Name</td><td>Axis #</td></tr><tr><td>45</td><td>ORG1</td><td>1</td><td>45</td><td>ORG4</td><td>4</td></tr><tr><td>54</td><td>ORG2</td><td>2</td><td>54</td><td>ORG5</td><td>5</td></tr><tr><td>60</td><td>ORG3</td><td>3</td><td>60</td><td>ORG6</td><td>6</td></tr></table>

The input circuit of the ORG signals are shown below. Usually, a limit switch is used to indicate the origin on one axis. The specifications of the limit switch should have contact capacity of +24V @ 6mA minimum. An internal filter circuit is used to filter out any high frequency spikes, which may cause errors in the operation

![Sink Type\nVCC\nInside 8253/6\nTo FPGA\n4.7K DICO\nE24V\n1V max.\nPS2805\nDGND\nOR\nSwitch\nEGND\nSP1/SP2](.pci-8253-8256-user-manual/7b22c46f6c74fb7d337528243fcd18b3fed5d7bc4d1059eb11b20580388f68b4.jpg)

![Source\nVCC\nInside 8253/6\nTo FPGA\nDGND\nPS2805\n4.7K DICO\n1V max.\nEGND\nSP1/SP2\nOR\nSwitch\nE24V](.pci-8253-8256-user-manual/88508a97b0c902e5f067277d823d472b38a92084958308e01c76481a756b88a7.jpg)

When the motion controller is operated in the home return mode, the ORG signal is used to inhibit the control output signals (OUT and DIR).

# 3.6 End-Limit Signals: PEL and MEL

There are two end-limit signals PEL and MEL for each axis. PEL indicates the end limit signal is in the plus direction and MEL indicates the end limit signal is in the minus direction. The signal names, pin numbers, and axis numbers are shown in the table below:

<table><tr><td>SP1 Pin No</td><td>Signal Name</td><td>Axis #</td><td>SP1 Pin No</td><td>Signal Name</td><td>Axis #</td></tr><tr><td>46</td><td>PEL1</td><td>1</td><td>47</td><td>MEL1</td><td>1</td></tr><tr><td>55</td><td>PEL2</td><td>2</td><td>56</td><td>MEL2</td><td>2</td></tr><tr><td>61</td><td>PEL3</td><td>3</td><td>62</td><td>MEL3</td><td>3</td></tr></table>

<table><tr><td>SP2 Pin No</td><td>Signal Name</td><td>Axis #</td><td>SP2 Pin No</td><td>Signal Name</td><td>Axis #</td></tr><tr><td>46</td><td>PEL4</td><td>4</td><td>47</td><td>MEL4</td><td>4</td></tr><tr><td>55</td><td>PEL5</td><td>5</td><td>56</td><td>MEL5</td><td>5</td></tr><tr><td>61</td><td>PEL6</td><td>6</td><td>62</td><td>MEL6</td><td>6</td></tr></table>

A circuit diagram is shown below. The external limit switch should have a contact capacity of +24V @ 6mA minimum. Either ‘A-type’ (normal open) contact or ‘B-type’ (normal closed) contact switches can be used.

![Sink Type\nVCC\nInside 8253/6\nTo FPGA\n4.7K DICO\nE24V\nDGND\nPS2805\n1V max.\nSP1/SP2\nPEL\nME\n← Switch\nEGND](.pci-8253-8256-user-manual/af7c0796d2c935a7b25bbe27376f31a1aa9808af5cfe74f077093a2c759498aa.jpg)

![Source Type\nVCC\nInside 8253/6\nTo FPGA\nDGND\nPS2805\n4.7K DICO\n1V max.\nEGND\nSP1/SP2\nPEL ME\nSwitch\nE24V](.pci-8253-8256-user-manual/a4665738553a62fbc4b66f25d9333d8b2c1b56728fd31c763a99e5ec5a0ea8ad.jpg)

# 3.7 Zero Speed Signal: ZSP

The zero speed signal ZSP from a servomotor driver indicates zero speed. It is used to set the input range of the zero speed signals. The signal names, pin numbers, and axis numbers are shown in the table below:

<table><tr><td>SP1 Pin No</td><td>Signal Name</td><td>Axis #</td><td>SP2 Pin No</td><td>Signal Name</td><td>Axis #</td></tr><tr><td>13</td><td>ZSP1</td><td>1</td><td>13</td><td>ZSP4</td><td>4</td></tr><tr><td>22</td><td>ZSP2</td><td>2</td><td>22</td><td>ZSP5</td><td>5</td></tr><tr><td>28</td><td>ZSP3</td><td>3</td><td>28</td><td>ZSP6</td><td>6</td></tr></table>

The input circuits of the INP signals are shown in the diagram below:

![Sink Type\nVCC\nInside 8253/6\nSp1/SP2\nE24V\nIo FPGA\n4.7K\n1V Max.\nZSP\n← Switch\nEGND\nDGND\nPS2805\nSource Type\nVCC\nInside 8253/6\nSp1/SP2\nEGND\nIo FPGA\n4.7K\n1V Max.\nZSP\n← Switch\nEGND\nDGND\nPS2805\nE24V](.pci-8253-8256-user-manual/889d29af5cdaf11b9abc327acb3d17d3e27da0824ee58da04845e009b9301727.jpg)

The in-position signal is usually generated by the servomotor driver and is ordinarily an open collector output signal. An external circuit must provide at least 6mA current sink capabilities to drive the ZSP signal.

# 3.8 Alarm Signal: ALM

The alarm signal ALM is used to indicate the alarm status from the servo driver. The signal names, pin numbers, and axis numbers are shown in the table below:

<table><tr><td>SP1 Pin No</td><td>Signal Name</td><td>Axis #</td><td>SP2 Pin No</td><td>Signal Name</td><td>Axis #</td></tr><tr><td>11</td><td>ALM1</td><td>1</td><td>11</td><td>ALM4</td><td>4</td></tr><tr><td>20</td><td>ALM2</td><td>2</td><td>20</td><td>ALM5</td><td>5</td></tr><tr><td>26</td><td>ALM3</td><td>3</td><td>26</td><td>ALM6</td><td>6</td></tr></table>

The input circuits of the ALM signals are shown in the diagram below:

![Sink Type\nTo FPGA\nVCC\nInside 8253/6\n4.7K\n1V Max.\nSP1/SP2\nE24V\nDGND\nPS2805\nALM\n← Switch\nEGND\nSource Type\nTo FPGA\nVCC\nInside 8253/6\n4.7K\n1V Max.\nSP1/SP2\nEGND\nDGND\nPS2805\nALM\n← Switch\nE24V](.pci-8253-8256-user-manual/2c2ee312e6ef06c0df9b6f6837e8e7c664c746e8ae3588aee2eef7038496a32f.jpg)

# 3.9 Servo ON Signal: SVON

The SVON signal can be used as a servomotor-on control or general purpose output signal. The signal names, pin numbers, and axis numbers are shown in the following table:

<table><tr><td>SP1 Pin No</td><td>Signal Name</td><td>Axis #</td><td>SP2 Pin No</td><td>Signal Name</td><td>Axis #</td></tr><tr><td>12</td><td>SVON1</td><td>1</td><td>12</td><td>SVON4</td><td>4</td></tr><tr><td>21</td><td>SVON2</td><td>2</td><td>21</td><td>SVON5</td><td>5</td></tr><tr><td>27</td><td>SVON3</td><td>3</td><td>27</td><td>SVON6</td><td>6</td></tr></table>

The output circuit for the SVON signal is shown below:

![VCC\nFrom FPGA\nPS2802\nInside 8253/6\n35V @ 50mA Maximum\nSP1/SP2\nSVON\nDOCOM](.pci-8253-8256-user-manual/36e72c6bb5f604cfb3629d22004385dad01b7cc051208c1e9971bbc823c68a4b.jpg)

# 3.10 General-purpose Digital Output Signals: EDO

The PCI-8253/6 provides 4/8 general-purpose output channels: EDO1 to EDO8. These general-purpose output channels are located on SP1 and SP2. The signal names, pin numbers, and axis numbers are shown below:

<table><tr><td>SP1 Pin No</td><td>Signal Name</td><td>SP2 Pin No</td><td>Signal Name</td></tr><tr><td>31</td><td>EDO1</td><td>31</td><td>EDO5</td></tr><tr><td>32</td><td>EDO2</td><td>32</td><td>EDO6</td></tr><tr><td>33</td><td>EDO3</td><td>33</td><td>EDO7</td></tr><tr><td>34</td><td>EDO4</td><td>34</td><td>EDO8</td></tr></table>

The EDO signal wiring diagram is shown below:

![VCC\nInside 8253/6\nSP1/SP2\nFrom FPGA\nPS2802\n35V @ 50mA Maximum\nEDO\nDOCOM](.pci-8253-8256-user-manual/bfc2fd104cf8f91dc1c477551df116d37f78085d4e69b0cffe4550f886941fba.jpg)

# 3.11 General-purpose Digital Input Signals: EDI

The PCI-8253/6 provides 4/8 general-purpose input channels: EDI1 to EDI8. These general-purpose input channels are located on SP1 and SP2. The signal names, pin numbers, and axis numbers are shown below:

<table><tr><td>SP1 Pin No</td><td>Signal Name</td><td>SP2 Pin No</td><td>Signal Name</td></tr><tr><td>65</td><td>EDI1</td><td>65</td><td>EDI5</td></tr><tr><td>66</td><td>EDI2</td><td>66</td><td>EDI6</td></tr><tr><td>67</td><td>EDI3</td><td>67</td><td>EDI7</td></tr><tr><td>68</td><td>EDI4</td><td>68</td><td>EDI8</td></tr></table>

The following wiring diagram is of the EDI signal:

![Sink Type\nVCC\nInside 8253/6\nTo FPGA\n4.7K\n1V Max.\nSP1/SP2\nE24V\nDGND\nPS2805\nEDI\n← Switch\nEGND\nSource Type\nVCC\nInside 8253/6\nTo FPGA\n4.7K\n1V Max.\nSP1/SP2\nEGND\nDGND\nPS2805\nEDI\n← Switch\nE24V](.pci-8253-8256-user-manual/57d7b2706a79027a1962005a711e6d7f8f9abb0fa3f8335496e03908a605fb49.jpg)

# 4 Operation Theory

This chapter describes the detail operation of the motion controller card. Contents of the following sections are as follows:

Section 4.1 Classifications of Motion Controller

Section 4.2 Single Motion

Section 4.3 Home Move

Section 4.4 Jogging

Section 4.5 Point Table

Section 4.6 Motion Status and Related IO Monitoring

Section 4.7 Driver Management

Section 4.8 Data Sampling

Section 4.9 Interrupt Control

Section 4.10 E-Gear

Section 4.11 DSP-based Closed-loop Control

Section 4.12 Position Compared and Trigger pulse ouput

# 4.1 Classifications of Motion Controller

When motor/stepper control first started, motion control was widely discussed instead of motor control. Motor control was separated into two layers: motor control and motion control. Motor control relates to PWM, power stage, closed loop, hall sensors, vector space, etc. Motion control relates to speed profile generating, trajectory following, multi-axes synchronization, and coordinating.

# 4.1.1 Analog Type Motion Control Interface

The interfaces between motion and motor control are changing rapidly. Early on, a voltage signal was used as a command to the motor controller. The amplitude of the signal shows how fast a motor is rotating and the time duration of the voltage change shows the speed of the motor acceleration. The voltage signal as a command to the motor driver is called “analog” motion controller. It is much easier to integrate into an analog circuit of motor controller; however noise is sometimes a big problem for this type of motion control. Also, to do positioning control of a motor, the analog motion controller must have a feedback signal with position information and use a closed loop control algorithm to make it possible. This increases the complexity of motion control and is not easy to use for a beginner.

# 4.1.2 Pulse Type Motion Control Interface

The second interface of motion and motor control is a pulse train type. As a digital world trend, pulse trains represent a new concept to motion control. The number of pulses illustrate how many steps a motor rotates, and the frequency of pulses illustrate how fast a motor runs. The time duration of frequency changes represent the acceleration rate of a motor. This interface makes a servo or stepper motor easier than an analog type for positioning applications, because it allows motion and motor control to be separated easier.

Each interface provides gains tuning. For analog position controllers, the control loops are built inside and gains are tuned from the controller. For pulse type position controllers, the control loops are built outside on the motor drivers and the gains are tuned on the drivers.

For operating more than one axis, motion control seems more important than motor control. In industrial applications, reliability is a very important factor. Motor driver vendors make good performance products and motion controller vendors make a powerful variety of motion software. Integrating the two products make this ideal.

# 4.1.3 Network Type Motion Control Interface

Recently, a new control interface was introduced--a network motion controller. In this new interface the command between motor driver and motion controller is neither an analog nor a pulse signal, it is a network packet containing position and motor information. This controller is more reliable than previous controllers because it is digitized and packetized. Because a motion controller must be real-time, the narrow must have real-time capacity at a cycle time below 1 mini-second. This means that non-commercial networks cannot do this job. A specific network is required, such as Mitsubishi SSCNET. The network may also be built with fiber optics to increase communication reliability.

# 4.1.4 Software Real-time Motion Control Kernel

For motion control kernel, there are three ways to accomplish it: DSP, ASIC, and software real-time.

A motion control system needs an absolute real-time control cycle. It order for the motor to run smoothly the calculation on the controller must provide a control data. The PC’s computing power is often used to do this. A feedback counter card can simply be used and a voltage output or pulse output card to make it. This method is low cost but required extensive software effort. A real-time software is used to ensure real-time performance. This method increases the complexity of the system, but is the most flexible for professional motion control designers. Most of these methods are on NC machines.

# 4.1.5 ADLINK Softmotion DSP

ADLINK softmotion was implemented inside a high performance DSP that solves real-time software problem on computer and offers variety application functions to benefit you to realize your design conveniently. A DSP is a micro-processer itself and all motion control calculations can be performed on it. There is no real-time software problem because DSP has its own OS to arrange all the procedures. There is no interruption from other inputs or context-switching problems as seen in a Windows-based computer. Although it has such a perfect performance on real-time requirements, its calculation speed is not as fast as PC’s CPU at this age. Besides, the software interfacing between DSP based controller’s vendors and users are not easy to use. Some controller vendors provide some kind of assembly languages for users to learn and some controller vendors provide only a handshake documents for users to use. Both ways are not easy to use. A DSP based controller providse a better way for machine makers to develop they applications over software kernels. More features of ADLINK softmotion are described in Section 4.1.8.

# 4.1.6 ASIC Motion Control Kernel

An ASIC motion control kernel falls between software kernel and DSP kernel in terms of difficulty. All motion functions are done via the ASIC elimination all real-time problems. The ASIC requires parameters to be preset for motion control. ASIC motion control separates all system integration problems into 4 parts: motor driver’s performance, ASIC outputting profile, vendor’s software parameters to the ASIC, and users’ command to vendor’s software. It makes motion controller co-operated more smoothly between devices.

# 4.1.7 Comparison Table Of All Motion Control Types

<table><tr><td></td><td>Analog</td><td>Pulses</td><td>Network</td></tr><tr><td>Price</td><td>**High</td><td>Low</td><td>**Normal</td></tr><tr><td>Signal Quality (refer to distance)</td><td>Good</td><td>Good</td><td>Best</td></tr><tr><td>Maintenance</td><td>Middle</td><td>Fair</td><td>Easy</td></tr></table>

\*\*DSP or software real-time OS is needed

# 4.1.8 PCI-8253/6’s Motion Controller Type

The PCI-8253/6 is a DSP based analog type motion controller. This card was made into five blocks: on-board DSP, ADLINK softmotion, FPGA for the interface, PCI card, and software motion library. The ADLINK softmotion easily utilizes for complex motion manipulation which involving jogging, point-to-point positioning, multiple axes synchronized motion, contouring, high-speed position comparison and so on. PCI-8253/6 also offers motion kernel customization service to met your requirement. Providing on faster encoder speeds, high speed position comparison, adjustable PID plus feed-forward closed-loop control algorithm and large size, 32- bit high-speed dual port ram usage, the PCI-8253/6 allows for high-speed servo control up to 20 million encoder counter per second and high-speed trigger pulse output up to 1 MHz. Other advantages of ADLINK softmotion technology is the servo update rates as low as 50 µs per axis.

The PCI-8253/6 also provides the programmable acceleration and deceleration to eliminate jerk and smooth velocity profile. For each axis, individual unlimited point table with 32 depth buffers can realize the seamless continuous move conveniently, which is also able to combine linear and arc segment.

The ADLINK softmotion has many kinds of choices for different application. It can be downloaded and updated on the PC side. Different DSP kernel has special motion functions. For standard package of PCI-8253/6, it has the most common motion control features inside. For others, please order the specific kernel as needed.

# 4.2 Single Motion

In this section, single motion functions are discussed. Single motion means the motion is commanded by one function call only. For example, APS\_relative\_move(), this function will allow an axis to move a certain distance with a specified speed and other motion parameter, such as accel/decel time and so on.

In this manual, in order to reduce and manage the programming of motion operation, therefore, user has to config whole motion type and parameter via function APS\_set\_axis\_param() in arrear of motion operation firstly.

Single motion functions can be categorized into the following types according to their functionality.

 Section 4.2.1: Single Axis Velocity Motion
 Section 4.2.2: Single Axis P-to-P Motion
 Section 4.2.3: Linear Interpolation
 Section 4.2.4: Circular Interpolation
 Section 4.2.5: Speed Override
 Section 4.2.6: Position Override

# 4.2.1 Single Axis Velocity Motion

Veloctiy mode means the motion command is continuously outputting until a stop command is issued. The motor will run without a target position or desired distance unless it was stopped by other reasons. The output command profile will accelerate from a starting velocity to a specified maximum velocity. It can be follow a linear or S-curve acceleration shape. The command output rate is kept at maximum velocity until another velocity command overrided or a stop command issued. The velocity could be overrided by a new speed setting.

In this section, the following functions are discussed.

```txt
APS_set_axis_param(Axis_ID, AXS_Param_No, AXS_Param)
APS_velocity_move(Axis_ID, Max_speed)
```

The single axis velocity motion function will allow the axis to accelerate from a starting velocity, ‘PRA\_VS’, to a specified constant velocity, ’Max\_speed’. The axis will continue to travel at this constant velocity until the velocity is changed by overwiriting the function APS\_velocity\_move() or stopped by the functions APS\_stop\_move(), APS\_emg\_stop().

Two kinds of acceleration method are available. By using T-curve speed pattrn, the acceleration is constant as shown in the in left diagram below. By using S-curve speed pattrn, the derivative of acceleration, the ‘jerk’, is a constant as Illustrated in the right diagram below. The speed profile of this kind of motion is shown as below:

![| Metric             | Value |\n| ------------------ | ----- |\n| Max speed          | 1     |\n| PRA Acc. Acceleration Rate | 1     |\n| PRA_VS: Start Velocity | 1     |\n| Acceleration       | 1     |\n| Jerk               | 1     |](.pci-8253-8256-user-manual/19da05f33b679e2d06ad907f5090fa28edc84b27f23ab964c87d886411f90088.jpg)

![| Time Segment         | Description              |\n| --------------------- | ------------------------ |\n| Start Velocity         | PRA_VS Start Velocity     |\n| Max speed             | PRA_ACC Acceleration Rate  |\n| Acceleration          | Jerk acceleration        |\n| APS_velocity_move() with S-curve pattern | Jerk acceleration        |](.pci-8253-8256-user-manual/3966c09ca3ea26e58a1ec5561b7e8747c876baa49f3c54a4c4d329087c7f22d7.jpg)

Note: Please refer to Section 6.12: Definition Tables to set the axis parameter.
PRA\_VS means start velocity, PRA\_VE means end velocity, and PRA\_ACC/DEC means acceleration or deceleration.

# 4.2.2 Single Axis P-to-P Motion

In this section, the following functions are discussed.

APS\_relative\_move(Axis\_ID, Distance, Max\_speed)

APS\_absolute\_move(Axis\_ID, Position, Max\_speed)

Single axis P-to-P motion functions will allow the axis to move a specified distance or move to a specified position. Above two functions are pretty straightforward. ‘Relative’ and ’absolute’ characterizes the function and provides information about the position method to achieve the target position. States like upside section, user is able to define the velocity profile pattern, start velocity, acceleration / deceleration rate before, which via using function APS\_set\_axis\_param().

If the velocity profile applied is ‘Trapezoidal’. That is the acceleration and deceleration is a constant (shown in left diagram).

If the velocity profile applied is ‘S-Curve’. This is a derivative of acceleration, ‘jerk’, and is a constant (shown in right diagram).

![| Time Segment         | Label             | Value |\n|----------------------|-------------------|-------|\n| Start Velocity        | PRA_VS            | 0     |\n| Max Vel              | Max Vel           | 1     |\n| End Velocity         | PRA_VE            | 0     |\n| ACC/DEC              | PRA_ACC/DEC       | 0     |\n| Acceleration          | 0                 | 1     |\n| Jerk                 | 0                 | 0     |](.pci-8253-8256-user-manual/f3d3ffc1289531cfc128dc96c2f66ac833eecf7fe8c05a307a571011f070c3aa.jpg)

![| Time Segment | Phase       | Value |\n| ------------ | ----------- | ----- |\n| Start        | StrVel      | Low   |\n| Peak         | MaxVel      | High  |\n| End          | PRA_VE     | Medium|\n| End          | End Velocity| Low   |\n| Mid          | Acceleration | High  |\n| Mid          | Deceleration | Low   |\n| End          | Jerk        | Low   |](.pci-8253-8256-user-manual/ad12564ddf20e799ff2f78bed9548fae9f815097b903232cfd3d697af69061df.jpg)

Note: Please refer to section 6.11 – “Definition table” to set the axis parameter.

PRA\_VS means start velocity, PRA\_VE means end velocity, and PRA\_ACC/DEC means acceleration or deceleration.

The distance moved during acceleration and deceleration can be calculated using the following formula. (For both trapezoidal and S-curve profiles)

$$
\text { Dist\_acc } = 0. 5 * (\text { StrVel } + \text { MaxVel }) * \text { Tacc }
$$

$$
\text { Dist\_dec } = 0. 5 * (\text { FinVel } + \text { MaxVel }) * \text { Tdec }
$$

In some cases, the distance moved may not be long enough. For example, the ‘Distance‘ in APS\_relative\_move() is too small or ‘Position’ in APS\_absolute\_move() is too close to the current position. These two function calls mentioned above automatically slows down the velocity. The change in the velocity profile is illustrated in the diagram below.

![| Point | Value |\n|---|---|\n| PRA_VS | 0 |\n| MaxVel | 1 |\n| PRA_ACC/DEC | 1 |\n| PRA_VE | 0 |](.pci-8253-8256-user-manual/919dc9fc7cc792327a83406e4079ea2d82e764d6a12242c97e66626a4df3cd68.jpg)

Case 1:
The distance is longer then acceleration and deceleration needed.

![| Point | Value |\n|---|---|\n| 1 | 0 |\n| 2 | 1 |\n| 3 | 0 |](.pci-8253-8256-user-manual/7546d075be39b599aadeba5819cb6cd9477deba4ba79b6199e9e72aff1837e25.jpg)

Case 2:
The distance is equal to acceleration and deceleration needed.

![A white outline of an arrow pointing to the right on a black background.](.pci-8253-8256-user-manual/c7a4c8792c600e114d2a519f03c67ae16d604e09093e25e28572f3c52e5749a1.jpg)

![| Point | X | Y |\n|---|---|---|\n| 1 | -3.5 | 0 |\n| 2 | 0 | 1 |\n| 3 | 3.5 | 0 |](.pci-8253-8256-user-manual/ced313d6f0b7b52e51b96cb4e859b07c2f0109f49e55d727bef92e5ad39bc710.jpg)

Case 3:
The distance is smaller than acceleration and deceleration needed.

Case 1 to Case 2: The constant velocity period is reduced while the PRA\_VS, PRA\_VE, Max. velocity and PRA\_ACC/DEC remain unchanged.

Case 2 to Case 3: The constant velocity period vanished, and, PRA\_VS, PRA\_VE, Max. velocity become smaller according to the ratio described below. While PRA\_ACC/DEC remains unchanged.

```ini
New_PRA_VS = K * Original_PRA_VS
New_Max speed= K * Original_Max speed
New_PRA_VE = K * Original_PRA_VE
```

Where K = Dist/(Distacc\_needed + Distdec\_needed)= Dist/ (Distjust\_case)

# 4.2.3 Linear Interpolation

“Interpolation between multi-axes” means these axes start simultaneously, and reach their ending points at the same time. Linear means the ratio of speed of every axis is a constant value. In this section, the following functions are described.

```txt
APS_absolute_linear_move (Dimension, Axis_ID_Array, Position Array, Max_Linear_speed)
APS_relative_linear_move (Dimension, Axis_ID_Array, Distance Array, Max_Linear_speed)
```

These two functions applied to any 2, any 3 or any 4 of the 16 axes in one card, so that these axes can “start simultaneously, and reach their ending points at the same time” and the ratio of speed between these axes is a constant value. Because the speed parameter is in vector direction within parameter table setting, this function will take the master axis’s acceleration and deceleration time constant to calculate. The master axis is the minor axis number that user perform an interpolation.

# 2 Axes Linear Interpolation

As in the diagram below, 2 axes linear interpolation means to move the XY (or any 2 of the 4 axis) position from P0 to P1. The 2 axes start and stop simultaneously, and the path is a straight line.

![| Point | X-Axis | Y-Axis |\n|-------|--------|--------|\n| P0    | X0     | Y0     |\n| P1    | X1     | Y1     |](.pci-8253-8256-user-manual/2dd2366b29fef7bd342e8bc66c1730cfa5cd61cb1eb0661854a0194e2d3d4220.jpg)

The speed ratio along X-axis and Y-axis is (ΔX: ΔY), respectively, and the vector speed is:

$$
\frac {\Delta P}{\Delta t} = \sqrt {\left(\frac {\Delta X}{\Delta t}\right) ^ {2} + \left(\frac {\Delta Y}{\Delta t}\right) ^ {2}}
$$

When calling the two-axes linear interpolation functions, it is the vector speed to define the start velocity (master axis), PRA\_VS, and maximum velocity, Max\_Linear\_speed, both trapezoidal and S-curve profile are available.

# Example:

```txt
//...Initialize card
I32 Dimension = 2;
I32 Master_Axis_ID = 1; //Master axis
I32 Axis_ID_Array[4] = {1, 2}; //Axis ID 1 is master axis.
I32 Position_Array [4] = {1000, 2000}; // (Unit: pulse)
```

This cause the two axes (axes 1 & 2) to perform a linear interpolation movement, in which:

$\Delta X = 1000$ pulse $\Delta Y = 2000$ pulse
I32 Max_Linear_Speed $= 1000$ ; // (Unit: pulse/second)

This way sets the maximum speed to 1000 pulse per second during performing 4-axes interpolation motion.

```c
I32 Ret;
APS_set_axis_param(Master_Axis_ID, PRA_CURVE, 0); // Set T-curve
APS_set_axis_param(Master_Axis_ID, PRA_ACC, 10000); // Set acceleration
APS_set_axis_param(Master_Axis_ID, PRA_DEC, 10000); // Set deceleration
```

This way sets the master axis acceleration and deceleration to 10000 pulses per square of second during performing 2-axes interpolation motion. Above program is also set master axis to perform the velocity profile with T-curve.

```txt
...
Ret = APS_absolute_linear_move ( Dimension,
    Axis_ID_Array, Position_Array,
    Max_Linear_Speed );
...
```

After whole parameter setting completed and then user is able to perform the linear interpolation function. If needs operating in relative mode, perform function APS\_relative\_linear\_move (). The change in the velocity profile is illustrated in the diagram below.

For example, according to preceding description that start vector speed linear interpolation will be equal to the start velocity of master axis, is 10 pulses per second and its end velocity is also equal to the end velocity of master axis, is 30 pulses per second. In this case, PCI-8253/6 inner, DSP will handle the velocity profile of first and second axis to match two axes interpolation motion requirement. Basically, PCI-8253/6 calculates the acceleration time-‘tacc’ and deceleration time-‘tdec’ and then generates the actual acceleration/deceleration rate for axis 1 and 2 which based on the mathematical model (ratio) as following.

$$
V t = \sqrt {(V x t) ^ {2} + (V y t) ^ {2}}
$$

In which $\mathsf { V } _ { \mathsf { t } }$ is vector speed of linear interpolation motion; $\mathsf { V } _ { \mathsf { X } \mathrm { t } }$ is speed along x direction (first axis); $\mathsf { V } _ { \mathsf { y t } }$ is speed along y direction (second axis).

![| Time Segment | Vt: Linear Velocity | Vxt: Axis 1 Velocity | Vyt: Axis 2 Velocity |\n| ------------ | ------------------- | -------------------- | -------------------- |\n| tacc         | 0                   | 0                    | 0                    |\n| idec         | 1000                | 1000                 | 1000                 |](.pci-8253-8256-user-manual/8201ce6c1f44028ec5866c1c9cb5955ce2f50f82734a989ef382b83b16f69231.jpg)

As illustration above, the x and y axis will be achieved the maximum speed at the same time that means the linear speed also achieves maximum linear speed in the meanwhile.

# 3 Axes Linear Interpolation

Any 3 of the 16 axes of a DSP-based board may perform 3 axes linear interpolation. As the figure below, 3 axes linear interpolation means to move the XYZ (if axes 0, 1, 2 are selected and assigned to be X, Y, Z respectively) position from P0 to P1 and start and stop simultaneously. The path is a straight line in space.

![P0(X0,Y0,Z0)\nP1(X1,Y1,Z1)\nΔY\nΔX\nΔZ\nX-Axis\nY-Axis\nZ-Axis](.pci-8253-8256-user-manual/e7cbea95129c976034f1c8bae47dc217f806a63eaaf1c29e04c40ea6fe1fc690.jpg)

The speed ratio along X-axis, Y-axis and Z-axis is ( X: Y: Z), respectively, and the vector speed is:

$$
\frac {\Delta P}{\Delta t} = \sqrt {(\frac {\Delta X}{\Delta t}) ^ {2} + (\frac {\Delta Y}{\Delta t}) ^ {2} + (\frac {\Delta Z}{\Delta t}) ^ {2}}
$$

When calling the 2 axes linear interpolation functions, it is the vector speed to define the start velocity (master axis), PRA\_VS, and maximum velocity, Max\_Linear\_speed, both trapezoidal and Scurve profile are available.

# Example:

```verilog
//...Initialize card
I32 Dimension = 4;
I32 Master_Axis_ID = 1; //Master axis
I32 Axis_ID_Array[4] = {1, 2, 3}; //Axis ID 1 is master axis.
I32 Position_Array [4] = {1000, 2000, 3000}; //
(Unit: pulse)
```

This cause the four axes (axes 1, 2 and 3) to perform a linear interpolation movement, in which:

$\Delta X = 1000$ pulse $\Delta Y = 2000$ pulse $\Delta Z = 3000$ pulse
I32 Max_Linear_Speed $= 1000$ ; // (Unit: pulse/second)

This way sets the maximum speed to 1000 pulse per second during performing 4-axes interpolation motion.

```c
I32 Ret;
APS_set_axis_param(Master_Axis_ID, PRA_CURVE, 0); // Set T-curve
APS_set_axis_param(Master_Axis_ID, PRA_ACC, 10000); // Set acceleration
APS_set_axis_param(Master_Axis_ID, PRA_DEC, 10000); // Set deceleration
```

This way sets the master axis acceleration and deceleration to 10000 pulses per square of second during performing 3-axes interpolation motion. Above program is also set master axis to perform the velocity profile with T-curve.

```txt
...
Ret = APS_absolute_linear_move (Dimension,
Axis_ID_Array, Position_Array,
Max_Linear_Speed);
...
```

After whole parameter setting completed and then user is able to perform the linear interpolation function in absolute mode. The change in the velocity profile is illustrated in the diagram below.

For example, according to preceding description that start vector speed linear interpolation will be equaled to start velocity of master axis, is 10 pulses per second and its end velocity is also equaled to end velocity of master axis, is 30 pulses per second. In this case, inside the PCI-8253/6, the DSP will handle the velocity profile of first and second axis to match two axes interpolation motion requirement. Basically, PCI-8253/6 calculates the acceleration time-‘tacc’ and deceleration time-‘tdec’ and then generates the actual acceleration/deceleration rate for axis 1 and 2 which based on the mathematical model (ratio) as following.

$$
V t = \sqrt {(V x t) ^ {2} + (V y t) ^ {2} + (V z t) ^ {2}}
$$

In which $\mathsf { V } _ { \mathsf { t } }$ is vector speed of linear interpolation motion; $\mathsf { V } _ { \mathsf { X } \mathsf { t } }$ is speed along x direction (first axis); $\mathsf { V } _ { \mathsf { y t } }$ is speed along y direction (second axis); $\mathsf { V } _ { z \mathrm { t } }$ is speed along y direction (third axis).

![| Velocity Direction | Time Segment | Peak Velocity |\n| ------------------ | ------------ | ------------- |\n| Vt: Linear         | tacc         | 1000          |\n| Vxt: Axis 1        | tacc         | 1000          |\n| Vyt: Axis 2        | tacc         | 1000          |\n| Vzt: Axis 3        | tacc         | 1000          |](.pci-8253-8256-user-manual/82115dfd944051af5c38ded6492714767f609ae8e9deec59d19cdbe2d3205168.jpg)

As illustration above, the x and y axis will be achieved the maximum speed at the same time that means the linear speed also achieves maximum linear speed in the meanwhile.

# 4 Axes Linear Interpolation

In 4 axes linear interpolation, the speed ratio along X-axis, Y-axis, Z-axis and U-axis Is (ΔX: ΔY: ΔZ: ΔU), respectively, and the vector speed is:

$$
\frac {\Delta P}{\Delta t} = \sqrt {\left(\frac {\Delta X}{\Delta t}\right) ^ {2} + \left(\frac {\Delta Y}{\Delta t}\right) ^ {2} + \left(\frac {\Delta Z}{\Delta t}\right) ^ {2} + \left(\frac {\Delta U}{\Delta t}\right) ^ {2}}
$$

Note: All axes must be of the same card.

# 4.2.4 Circular Interpolation

Any 2 of the 16 axes of a DSP-based analog board can perform circular interpolation. As the example below, the circular interpolation means XY (if axes 0, 1 are selected and assigned to be X, Y respectively) axes simultaneously start from initial point, (0,0) and stop at end point,(1800,600). The path between them is an arc, and the Max\_Arc\_Speed is the tangential speed

```txt
APS_absolute_arc_move (Dimension, Axis_ID_Array, Center_Pos_Array, Max_Arc_speed, Angle)
APS_relative_arc_move (Dimension, Axis_ID_Array, Center_Offset_Array, Max_Arc_speed, Angle)
```

# Example:

```c
//...Initial card
I32 Dimension = 2; //2 Dimension only
I32 Axis_ID_Array[2] = { 2, 4 };
    //Axis_ID 2 is the master axis
I32 Master_Axis_ID = 2;
    //Axis_ID 2 is the master axis
I32 Center_Pos_Array[2] = {1000, 0};
    //Set center of circle(Unit: pulse)
I32 Max_Arc_Speed = 1000; // pulse/sec
I32 Angle = -143; // clockwise 180 degree
I32 Ret; //Return code
```

To specify a circular interpolation path, the following parameters have to be defined clearly.

Center point: The coordinate of the center of arc (in absolute mode) or the offset distance to the center of arc (in relative mode)

Angle: The moving angle, either clockwise (-) or counter clockwise (+)

![(0,0)\n(1800,600)\nCenter\n(1000,0)\nX\nY](.pci-8253-8256-user-manual/177685fbb06a105f6ad328b1d62f54302a0853f0c5aae8c868ad74e68c24c2f8.jpg)

```c
//...
APS_set_axis_param(Master_Axis_ID, PRA_CURVE, 1); //Set S-curve
APS_set_axis_param(Master_Axis_ID, PRA_ACC, 100000); //Set acceleration
APS_set_axis_param(Master_Axis_ID, PRA_DEC, 100000); //Set deceleration
Ret = APS_absolute_arc_move(Dimension, Axis_ID_Array, Center_Pos_Array, Max_Arc_Speed, Angle); //Perform a circular interpolation
```

After whole parameter setting completed and then user is able to perform the circular interpolation function in absolute mode.

# 4.2.5 Speed Override

Speed override means that users can change command’s speed during the operation of motion. User is easy to modify the speed profile during motion operation by re-executing the function APS\_velocity\_move().This function can be applied on other motion in position or velocity mode. If the running motion is Scurve or bell curve, the speed override will be a pure s-curve. If the running motion is t-curve, the speed override will be a t-curve.

The function APS\_stop\_move() and APS\_emg\_stop() are used to stop a moving axis. If user wants to adjust the moving speed of an axis and just need to overwrite the velocity move function again. Function APS\_stop\_move() stops the specified ‘Axis’ with a deceleration rate and a “Trapezoidal” or “S-Curve” velocity profile during deceleration. See diagram below.

![| Time | Velocity | Acceleration | Jerk |\n|------|----------|--------------|------|\n| 0    | 0        | 0            | 0    |\n| 1    | 0        | 0            | 0    |\n| 2    | 0        | 0            | 0    |\n| 3    | 0        | 0            | 0    |\n| 4    | 0        | 0            | 0    |\n| 5    | 0        | 0            | 0    |\n| 6    | 0        | 0            | 0    |\n| 7    | 0        | 0            | 0    |\n| 8    | 0        | 0            | 0    |\n| 9    | 0        | 0            | 0    |\n| 10   | 0        | 0            | 0    |\n| 11   | 0        | 0            | 0    |\n| 12   | 0        | 0            | 0    |\n| 13   | 0        | 0            | 0    |\n| 14   | 0        | 0            | 0    |\n| 15   | 0        | 0            | 0    |\n| 16   | 0        | 0            | 0    |\n| 17   | 0        | 0            | 0    |\n| 18   | 0        | 0            | 0    |\n| 19   | 0        | 0            | 0    |\n| 20   | 0        | 0            | 0    |\n| 21   | 0        | 0            | 0    |\n| 22   | 0        | 0            | 0    |\n| 23   | 0        | 0            | 0    |\n| 24   | 0        | 0            | 0    |\n| 25   | 0        | 0            | 0    |\n| 26   | 0        | 0            | 0    |\n| 27   | 0        | 0            | 0    |\n| 28   | 0        | 0            | 0    |\n| 29   | 0        | 0            | 0    |\n| 30   | 0        | 0            | 0    |\n| 31   | 0        | 0            | 0    |\n| 32   | 0        | 0            | 0    |\n| 33   | 0        | 0            | 0    |\n| 34   | 0        | 0            | 0    |\n| 35   | 0        | 0            | 0    |\n| 36   | 0        | 0            | 0    |\n| 37   | 0        | 0            | 0    |\n| 38   | 0        | 0            | 0    |\n| 39   | 0        | 0            | 0    |\n| 40   | 0        | 0            | 0    |\n| Note: The rest of the time period is labeled as 'Time' but not explicitly shown in the chart. The rest of the time period is labeled as 'APS_stop_move()'. There is no additional data series or labels specified.](.pci-8253-8256-user-manual/fc452d588ec225705e0015ffa8732798349213534b9b8103fab17beeb932459b.jpg)

![| Metric          | Value |\n| --------------- | ----- |\n| Velocity        | 0     |\n| Acceleration    | 0     |\n| Jerk            | 0     |\n| Time            | 0     |](.pci-8253-8256-user-manual/e3018399129539c3326ff5ec537025a3b695f0da80adc51dac6accaea7521abc.jpg)

The function APS\_emg\_stop() stops the a specified ‘Axis’ immediately without deceleration. See diagram below.

![| Time | Velocity | Acceleration | Jerk |\n|------|----------|--------------|------|\n| 0    | 0        | 0            | 0    |\n| 1    | 0        | 0            | 0    |\n| 2    | 0        | 0            | 0    |\n| 3    | 0        | 0            | 0    |\n| 4    | 0        | 0            | 0    |\n| 5    | 0        | 0            | 0    |\n| 6    | 0        | 0            | 0    |\n| 7    | 0        | 0            | 0    |\n| 8    | 0        | 0            | 0    |\n| 9    | 0        | 0            | 0    |\n| 10   | 0        | 0            | 0    |\n| 11   | 0        | 0            | 0    |\n| 12   | 0        | 0            | 0    |\n| 13   | 0        | 0            | 0    |\n| 14   | 0        | 0            | 0    |\n| 15   | 0        | 0            | 0    |\n| 16   | 0        | 0            | 0    |\n| 17   | 0        | 0            | 0    |\n| 18   | 0        | 0            | 0    |\n| 19   | 0        | 0            | 0    |\n| 20   | 0        | 0            | 0    |\n| 21   | 0        | 0            | 0    |\n| 22   | 0        | 0            | 0    |\n| 23   | 0        | 0            | 0    |\n| 24   | 0        | 0            | 0    |\n| 25   | 0        | 0            | 0    |\n| 26   | 0        | 0            | 0    |\n| 27   | 0        | 0            | 0    |\n| 28   | 0        | 0            | 0    |\n| 29   | 0        | 0            | 0    |\n| 30   | 0        | 0            | 0    |\n| 31   | 0        | 0            | 0    |\n| 32   | 0        | 0            | 0    |\n| 33   | 0        | 0            | 0    |\n| 34   | 0        | 0            | 0    |\n| 35   | 0        | 0            | 0    |\n| 36   | 0        | 0            | 0    |\n| 37   | 0        | 0            | 0    |\n| 38   | 0        | 0            | 0    |\n| 39   | 0        | 0            | 0    |\n| 40   | 0        | 0            | 0    |\n| Note: The rest of the time axis is labeled as 'Time'. The rest of the time axis is labeled 'APS_emg_stop()'. There is no additional data series in this code. The values for 'Acceleration' and 'Jerk' are not explicitly provided in the image. There is only one data series in the chart.](.pci-8253-8256-user-manual/b148266f21aa9b5d64ecccdebdf3f226edfa334a9c72f7c01b27b140ce93cf71.jpg)

By re-perform the function APS\_velocity\_move(), user is able to changes the moving speed of a specified ‘Axis’ with specified acceleration rate, ’PRA\_ACC’, and a ‘Trapezoidal’ velocity profile during acceleration. If user needs different acceleration rate between original and newly parameter setting and then has to perform the function APS\_set\_axis\_param() to re-define the newly velocity profile with newly acceleration rate.

The newly parameter table is available to fill during previous motion traveling.

![| Time Segment         | Value Label             |\n|----------------------|------------------------|\n| Acceleration          | New PRA_ACC            |\n| Jerk                 | APS_set_axis_param(   )  |\n| New MaxVel           | Original MaxVel        |\n| Newly MaxVel         | (no label)             |](.pci-8253-8256-user-manual/9eba5422670f2a75ce2d137c3d551ba5e0d57059c2ac22c302ed4ce136aebb84.jpg)

![| Time Segment         | Label                  |\n| --------------------- | ---------------------- |\n| Start                 | APS_velocity_move()     |\n| End                   | Newly MaxVel           |\n| Peak                  | Original MaxVel        |\n| Peak                  | New PRA_ACC            |\n| End                   | Jerk                   |\n| End                   | APS_set_axis_param()  |](.pci-8253-8256-user-manual/5c0b5d31df59695bf683e7b4f914bd01197ffc695cb1ac9ea9ed43aff90c7099.jpg)

Use the same method to change the velocity during axis traveling with S-curve velocity profile.

Note: All change speed on the fly function calls can be applied any time when an axis is moving but cannot be overridden by other motion modes like Jog, home, manual pulse generation, contour motion and G-code program. The axis motion must be stopped before switching to those modes mentioned above.

# 4.2.6 Position Override

Position override means that when users issue a positioning command and want to change its target position during this operation. If the new target position is behind current position when override command is issued, the motor will slow down then reverse to new target position. If the new target position is far away from current position on the same direction, the motion will remain its speed and run to new target position. If the override timing is on the deceleration of current motion and the target position is far away from current position on the same direction, it will accelerate to original speed and run to new target position. The operation examples are shown as below. Notice that if the new target position’s relative pulses are smaller than original slow down pulses, this function can’t work properly.

![This is a graph plotting a profile against a horizontal axis labeled **Time**.\n\n**Labeled Blocks and Connections:**\n*   **APS_relative_move() / APS_absolute_move()**: Points to the origin (start) of the graph.\n*   **Position Override**: Points to the upper horizontal section of the trapezoidal profile.\n*   **Original End Point**: A grey box with an arrow pointing to the intersection of the dotted line and the Time axis.\n*   **New End Point**: A blue box with an arrow pointing to the intersection of the thick solid line and the Time axis (which is further to the right).\n\n**Diagram Description:**\nThe graph shows a thick black line starting at the origin, rising diagonally, leveling off horizontally, and then descending. A dotted line branches off from the end of the horizontal section, descending to cross the Time axis at the 'Original End Point.' The thick solid line follows a similar initial path but, after descending, goes significantly below the axis into negative values before rising again to cross the Time axis at the 'New End Point,' indicating a modified and extended motion profile.](.pci-8253-8256-user-manual/1718660a722690433f4c3bf413b458e50bb7ff73ddf5e76e3e63f1967d26333a.jpg)

By re-performing the function APS\_relative\_move() or APS\_absolute\_move(), you can easily able to changes the destination of a specified ‘Axis’ with specified acceleration / deceleration rate, ’PRA\_ACC’, ’PRA\_DEC’ and a ‘Trapezoidal’ velocity profile during acceleration. If you need different acceleration rate between original and newly parameter setting and then has to perform the function APS\_set\_axis\_param() to re-define the newly velocity profile with newly acceleration / deceleration rate.

![Based on the provided image, here is an accurate and concise description of the flowchart/block diagram:\n\n**Graph Structure:**\n*   The image shows a 2D plot with a vertical axis (upward arrow) and a horizontal axis labeled **Time** (rightward arrow).\n*   A thick black line forms a trapezoidal shape starting at the origin (0,0), rising diagonally, flattening horizontally, and then descending diagonally back to the horizontal axis.\n\n**Labeled Blocks and Text:**\n*   **Position**: Text labeling the upper horizontal segment of the trapezoid.\n*   **APS_relative_move() / APS_absolute_move()**: Text labeling the starting point (origin) of the graph.\n*   **Original End Point**: A grey rectangular block.\n*   **New End Point**: A blue rectangular block.\n\n**Connections (Arrows):**\n*   An arrow from **Position** points to the top flat section of the curve.\n*   An arrow from **APS_relative_move() / APS_absolute_move()** points to the origin (start) of the curve.\n*   An arrow from the **Original End Point** block points to the corner where the top flat section ends and the downward slope begins.\n*   An arrow from the **New End Point** block points to the final intersection of the curve with the Time axis.](.pci-8253-8256-user-manual/ba3c6b40b482ffbb6dfc3609e08444cfcda7b6bb9238ae316e1446fb21deb7d5.jpg)

![| Time Point              | Value |\n| ----------------------- | ----- |\n| Original End Point     | 0     |\n| Position Override       | High  |\n| New End Point          | 0     |](.pci-8253-8256-user-manual/2cc72ef0c38ddcfcd8075de0f68f495ca919aa3a76e7183a5e0b3be4045940e1.jpg)

# 4.3 Home Move

In this section, the following functions are discussed.

$$
\text { APS\_home\_move } (\text { Axis\_ID })
$$

The above function is used to set the home return mode. One Home modes are available in PCI-8253/6 right now and it is discussed below.

After configured whole parameters that applied in homing move operation by function APS\_set\_axis\_param(). User may use the APS\_home\_move() function to command the axis to start returning home. The ‘PRA\_HOME $\underline { { \boldsymbol { \mathbf { v } } } } \mathbf { s } ^ { \prime }$ defines the starting velocity for homing move, ‘PRA\_HOME\_VM’ defines the end velocity for homing move, the ‘PRA\_HOME\_ACC’ define the acceleration rate and the axis continues traveling at the constant velocity until it reaches the ORG switch. Furthermore, in PCI-8253/6, there defines the parameter ‘PRA\_HOME $_ - \boldsymbol { \nabla } \mathsf { O } ^ { \prime }$ that means the leaving velocity after achieved home (ORG / Zero position). You are able to use this parameter to accelerate the motion speed on hoimg procedure. Home move examples using only the ORG signal are illustrated as follows:

<table><tr><td>PRA_HOME_MODE</td><td>0</td><td>Homemode 1</td></tr><tr><td>PRA_HOME_DIR</td><td>0</td><td>Positive direction</td></tr><tr><td>PRA_HOME_CURVE</td><td>0</td><td>T-curve</td></tr><tr><td>PRA_HOME_EZC</td><td>0</td><td>Disable</td></tr><tr><td>PRA_HOME_ACC</td><td>ACC</td><td>Acceleration / deceleration</td></tr><tr><td>PRA_HOME_VS</td><td>0 (VS)</td><td>Start velocity</td></tr><tr><td>PRA_HOME_VM</td><td>VM</td><td>Max. velocity</td></tr><tr><td>PRA_HOME_VO</td><td>VO</td><td>ORG velocity</td></tr></table>

Table 4-1: Axis Parameter Settings for ORG Home Moves

![Based on the provided image, here is an accurate description of the flowchart/block diagram:\n\n**Labeled Blocks and Columns:**\n*   Three vertical columns labeled **MEL**, **ORG**, and **PEL**.\n*   Four horizontal sections labeled **Case A**, **Case B**, **Case C**, and **Case D**.\n*   Four instances of the label **Speed** on the left side.\n*   Labels **VA** (appearing 4 times, pointing down) and **VO** (appearing 3 times, pointing left).\n*   Labels **VM** (appearing 3 times).\n*   Labels **Home position** and **Start position**.\n\n**Connections and Flow:**\n\n*   **Case A:**\n    *   **Case A** connects via an arrow to **VM**.\n    *   **VM** connects via a horizontal line to the **ORG** column.\n    *   Inside **ORG**, a downward arrow labeled **VA** connects to a small rectangular box.\n    *   From the box, an arrow points left labeled **VO**, which connects back to the **ORG** column.\n\n*   **Case B:**\n    *   **Case B** connects via an arrow to **VA**.\n    *   **VA** connects to a small rectangular box.\n    *   From the box, an arrow points left labeled **VO**.\n    *   **VO** connects to a path that goes right, up, and left.\n    *   **Home position** points to the top horizontal line of this path.\n    *   **Start position** points to the bottom horizontal line of this path.\n\n*   **Case C:**\n    *   **Case C** connects via an arrow to **VA**.\n    *   **VA** connects to a small rectangular box.\n    *   From the box, an arrow points left.\n    *   Below that, **VO** connects via an arrow pointing left.\n    *   **VO** connects to a line going right towards the **PEL** area.\n    *   This line goes up to a peak labeled **VM**, then down, then left.\n    *   **Start position** points to the bottom vertex of this trapezoidal shape.\n\n*   **Case D:**\n    *   **Case D** connects via an arrow to **VA**.\n    *   **VA** connects to a small rectangular box.\n    *   From the box, an arrow points left.\n    *   Below that, **VO** connects via an arrow pointing left.\n    *   **VO** connects to a line going right.\n    *   This line goes to the bottom right corner and connects to **VM**.](.pci-8253-8256-user-manual/8f3711efcbaa7efcde1700a47a993e71e87e271a139f12a01d493aca759eb928.jpg)

VM : Home move max. speed
VO :Home move ORG speed
VA : Home move approach to home speed

Here is an example to briefly describe what does the motion behavior after executed the homing move function.

# Case A

![Based on the provided image, which is a timing diagram rather than a traditional flowchart, here is the accurate description of the labeled blocks and connections:\n\n**Labeled Blocks (Signals):**\n*   **ORG**\n*   **PRA_HOME_VM**\n*   **PRA_HOME_VS**\n*   **PRA_HOME_ACC**\n*   **PRA_HOME_VO**\n\n**Connections and Numbered Elements:**\n*   **(1)**: A solid line dropping downwards and to the right from the rising edge of the **PRA_HOME_VM** signal.\n*   **(2)**: A right-pointing arrow situated on the high (flat) segment of the **PRA_HOME_VM** signal.\n*   **(3)**: A label positioned on the falling edge of the **PRA_HOME_VM** signal.\n*   **(4)**: A label on the **PRA_HOME_VO** signal, located at the top-right corner of a narrow pulse.\n*   **(5)**: A label on the **PRA_HOME_VO** signal, located at the bottom-right corner (low state) following the pulse.\n*   **(6)**: An arrow pointing upwards from the **PRA_HOME_VO** signal area towards the falling edge of **PRA_HOME_VM**.\n*   There is also an unnumbered arrow pointing upwards from the **PRA_HOME_ACC** label area towards the falling edge of **PRA_HOME_VM**.\n*   A vertical dotted line drops from the peak of **PRA_HOME_VM** down towards the **PRA_HOME_VS** signal area.](.pci-8253-8256-user-manual/bc6ae32f358560716ea2a295c540871ee0e9bf3846af382c1f918777d50bbbbb.jpg)

1. Accelerate from ‘PRA\_HOME\_VS’ to ‘PRA\_HOME\_VM’.
2. Travel with constant velocity ‘PRA\_HOME\_VM’ until ORG turns ON.
3. Slow done to stop which is following ‘PRA\_HOME\_ACC’.
4. Return and accelerate to ‘PRA\_HOME\_VO’.
5. Travel with constant velocity ‘PRA\_HOME\_VO’ until ORG turn Off.
6. Slow down to stop.

Searching ORG rising edge with velocity = 1 pulse per update cycle time until ORG turn ON, then stop and finish home return.

# Example:

```rust
//Set homing parameters
APS_set_axis_param( Axis_ID, PRA_HOME_MODE, 0 );
//Set home mode
```

```c
APS_set_axis_param(Axis_ID, PRA_HOME_DIR, 1); //Set home direction
```

```txt
APS_set_axis_param(Axis_ID, PRA_HOME_CURVE, 0); //Set acceleration paten (T-curve)
```

```c
APS_set_axis_param( Axis_ID, PRA_HOME_ACC, 1000000 ); //Set homing acceleration rate
APS_set_axis_param( Axis_ID, PRA_HOME_VS, 0 ); //Set homing start velocity
APS_set_axis_param( Axis_ID, PRA_HOME_VM, 2000000 ); //Set homing maximum velocity.
APS_set_axis_param( Axis_ID, PRA_HOME_VO, 200000 ); //Set leaving home velocity
APS_home_move(Axis_ID ); //Start homing
...//Check homing done(Motion done)
```

In addition to home moves using the ORG signal, this board also offers home moves via the index signal (EZ) as illustrated:

<table><tr><td>PRA_HOME_MODE</td><td>0</td><td>Homemode 1</td></tr><tr><td>PRA_HOME_DIR</td><td>0</td><td>Positive direction</td></tr><tr><td>PRA_HOME_CURVE</td><td>0</td><td>T-curve</td></tr><tr><td>PRA_HOME_EZC</td><td>1</td><td>Enable</td></tr><tr><td>PRA_HOME_ACC</td><td>ACC</td><td>Acceleration / deceleration</td></tr><tr><td>PRA_HOME_VS</td><td>0 (VS)</td><td>Start velocity</td></tr><tr><td>PRA_HOME_VM</td><td>VM</td><td>Max. velocity</td></tr><tr><td>PRA_HOME_VO</td><td>VO</td><td>ORG velocity</td></tr></table>

Table 4-2: Axis Parameter Settings for EZ Home Moves

![The diagram features three grey rectangular blocks arranged horizontally, labeled **MEL** (left), **ORG** (center), and **PEL** (right). A horizontal line runs through all three blocks. Above the blocks is a square wave signal labeled **EZ Signal**.\n\n**Connections and Blocks:**\n*   **MEL Block:** Inside this block, there are two dots on the horizontal line.\n    *   A dashed line originates from the left dot and extends upward and to the right.\n    *   A solid line originates from the right dot, extends upward and to the right passing under the label **VM**, and continues horizontally into the **ORG** block.\n*   **ORG Block:**\n    *   The horizontal line from **VM** enters from the left.\n    *   Inside, there is a label **VO**.\n    *   There is a feedback loop structure involving arrows: an arrow points down from the input line, an arrow points right, an arrow points down, an arrow points left, and an arrow points up.\n    *   A dotted vertical line drops down from the **EZ Signal** waveform into the **ORG** block.\n*   **PEL Block:** The horizontal line passes through this block without any additional labeled connections.](.pci-8253-8256-user-manual/555897a5f512a531e98bc97edc75f047c648606ded1d1e61a32309bb907342e3.jpg)

This board offers additional home move functions for specified situations. If the axis does not pass the EZ signal before the axis approaches the ORG signal and detectes the ORG signal, the axis will continuous move to detect the EZ signal. After passing the EZ signal, the axis will stop and move back to the edge of the EZ signal.

![EZ Signal\nAxis does not\npass EZ signal\nVM\nVO\nORG](.pci-8253-8256-user-manual/f5840a71c6a1649a721d95ca1e3ea60c1df8304e7b1826fa5d3334d6251d85c3.jpg)

# 4.4 Jogging

Jog motion usually uses only a velocity command. There is no fixed target position, only a target velocity. There is two modes for jogging motion which one is ‘Free-running mode’ and another is ‘Step mode’. ‘Free-running mode’ means the jog motion applies the motion with only velocity command. ‘Step mode’ means the jog motion is performing with specified step command. All on-the-fly velocity change comments in the point-to-point profile apply here.

# Free-running Mode:

The jog mode of motion is very flexible because speed, direction and acceleration can be changed during motion. For jog motion operation, the user is able to specifie the maximum jog speed, acceleration, and the deceleration rate for each axis by function ‘APS\_set\_jog\_param()’. The direction of motion is specified by the sign of the jog parameters which be set with function ‘APS\_set\_jog\_param()’. When the begin command is given ‘APS\_jog\_start()’, the motor accelerates up to speed and continues to jog at that speed until a new speed or stop command ‘APS\_stop\_move()’ is issued. If user wants to change the jog speed during motion, the above function will be needed to set again to meet new jog motion command. The Jog move is illustrated as follows,

When the STA signal is turn on, the axis starts to move immediately. Then, when the STA signal turns off, the axis will start decelerating until it stops.

![V\nSTA signal\nON\nOFF](.pci-8253-8256-user-manual/f3b9644bbe852d609f986968a743f69c98b95885d201524db76c1249d7985b89.jpg)

When the axis is decelerating and the STA signal is turned on again, the axis will re-accelerate to the maximum velocity.

![| Time Segment | Signal |\n| ------------ | ------ |\n| Start        | V      |\n| Peak         | 1      |\n| Mid          | -1     |\n| End          | 1      |](.pci-8253-8256-user-manual/cb3aef778b01d24b14453d2579134b9497dbc00e54d23df2ed2e1d88b54d243b.jpg)

# Step Mode:

An instant change to the motor position can be made with the use of the step move command. Through jog mode setting by function ‘APS\_set\_jog\_param()’, Upon receiving this command, the controller commands the motor to a position which is equal to the specified increment plus the current position. User must set the step offset firstly and then perform the jog switch function ‘APS\_jog\_mode\_switch()’ to enable the axis to jog mode. Finally, performing start function ‘APS\_jog\_start ()’. In this mode, user is also able to set the delay time for jog motion.

As shown in the following figure, when the STA signal is turned on, the axis starts accelerating and moves a specific distance (offset) before stopping. After a time delay, if the STA signal is still on, the axis will start to move untill the STA signal is turned off. The biggest different between free run mode is that the jog distance of an axis is the multiple number of the specified offset. Therefore, you can easily control the movement of an axis.

![The image displays two timing diagrams stacked vertically, both featuring a vertical axis labeled 'V' and a horizontal axis labeled 'T'.\n\n**Top Diagram:**\n*   **STA signal:** A waveform labeled 'STA signal' transitions from a lower level (labeled 'OFF' on the right) to a higher level (labeled 'ON'), stays high, and then transitions back to 'OFF'.\n*   **Waveform:** Above the STA signal, there are trapezoidal pulses sitting on the time axis.\n    *   The first pulse is a trapezoid labeled 'offset'. A vertical dotted line connects its rising edge to the rising edge of the 'STA signal'.\n    *   A gap labeled 'Delay time' with a double-headed arrow separates the first pulse from the second pulse.\n    *   The second pulse is a trapezoid labeled 'offset'.\n    *   Subsequent pulses are labeled 'offset' and are separated by vertical dotted lines dropping down from their ends.\n    *   The final section shows a pulse split by a dotted line, labeled 'offset' on both sides.\n\n**Bottom Diagram:**\n*   **STA signal:** A waveform labeled 'STA signal' transitions from 'OFF' to 'ON', briefly drops to 'OFF', and then returns to 'ON' and stays there.\n*   **Waveform:** Above the STA signal, there are trapezoidal pulses labeled 'offset'.\n    *   The first pulse is a trapezoid labeled 'offset'. A vertical dotted line connects its rising edge to the rising edge of the first part of the 'STA signal'.\n    *   A gap labeled 'Delay time' separates the first pulse from the second pulse.\n    *   The second pulse is a trapezoid labeled 'offset'. A vertical dotted line connects its rising edge to the rising edge of the second part of the 'STA signal'.\n    *   Another gap labeled 'Delay time' separates the second pulse from the third pulse.\n    *   The third pulse is a trapezoid labeled 'offset'.\n    *   The final section shows a pulse split by a dotted line, labeled 'offset' on both sides.](.pci-8253-8256-user-manual/6cca0ce73807b6633e9e2984bfffd7a76de232dd2838bfba5d903de90b404050.jpg)

Delay timeV
![offset\noffset\nSTA signal\nON\nOFF](.pci-8253-8256-user-manual/f415e34db03ca3e40671b9ad3df21b117b9205f83fcc2f1a81be0024470a898c.jpg)

Below is the programming flow for jogging move.

Operation flow

Configure Jog parameters

Switch axis to jog standby state

Jog move operations

Switch axis to normal state

APS functions

APS\_set\_axis\_param()

APS\_get\_axis\_param()

APS\_set\_jog\_param()

APS\_get\_jog\_param()

APS\_jog\_mode\_switch();

APS\_jog\_start()

APS\_jog\_mode\_switch();

Before executing the jog motion, user has to config whole parameters of jog motion that included the jog mode, moving direction, acceleration and deceleration rate and so on. An example is as follows.

Example:
```c
//...Initial card
// ... Configure jog move parameter

I32 Axis_ID: The Axis ID from 0 to 65535.
JOG_DATA *pStr_Jog: Structure of jog move parameters. Define in "type_def.h"
typedef struct
{
    I16 i16_jogMode; //Jog mode. 0:Free running mode, 1:Step mode
    I16 i16_dir; //Jog direction. 0:positive, 1:negative direction
    I16 i16_accType; //Acceleration and Deceleration pattern 0: T-curve, 1: S-curve
    I32 i32_acc; //Acceleration rate (pulse / s2)
    I32 i32_dec; //Deceleration rate (pulse / s2)
    I32 i32_maxSpeed; //A Positive value, maximum velocity.(pulse/s)
    I32 i32_offset; //A Positive value, step offset. (For step jog Mode ONLY. (pulse))
    I32 i32_delayTime; // Delay time (For step jog mode ONLY) (range: 0 ~ 65535 millisecond, align by cycle time)
} JOG_DATA;
```

After configed the jog parameters and then user has to perform the switch function to enable this axis into jog mode. Noted the axis is ONLY operating in jog mode if user turned the jog mode on.

```lisp
ret = APS_jog_mode_switch(Axis_ID, 1); / Turn on jog move mode
...
// perform jog move ...(APS_jog_start)
...
```

The axis will be actually performed the jog motion when controller receiving the start function ‘APS\_jog\_start()’. If other operations are selected to be performed after jog motion and the axis has to release from jog mode by performing the switch function again to disable this axis from jog mode.

```c
APS_jog_start( Axis_ID, 1 ); //STA signal ON
...
APS_jog_start(Axis_ID, 0); //STA signal OFF
...
ret = APS_jog_mode_switch(Axis_ID, 0 ); //Turn off jog move mode
...
// perform other move commands
```

# 4.5 Point Table

In this section, the operation of continuous motion is introduced and implemented with a point table. Continuous motion means a series of motion commands or positions that can be run continuously. You can set a new command right after previous one without interrupting it.

# 4.5.1 Point Table Construction

In this section, the following functions are discussed.

```c
APS_set_point_table(Axis_ID, Index, POINT_DATA *Point)
APS_get_point_table(Axis_ID, Index, POINT_DATA *Point)
```

The APS\_set\_point\_table() function is used to declare the parameters for the specified axis motion list describing a continuous motion trajectory. After the declaration for APS\_set\_point\_table(), you can call the functions discussed in next section to piece-wisely extend the trajectory by adding ‘Index’. In the meantime, each axis has a maximum of 32K points which can be saved in the onboard memory. By utilizing a doublebuffered design, the point table size is able to regarded as infinite. After the upper 16 points are proceeded and finished the lower 16 points will then be proceeded continuously. While the lower 16 points is operating, the new points are able to be filled into the empty region (upper 16 points). In the same manner, when next upper 16 points is proceeded, the region of the previous lower 16 points will be filled. The maximum time delay of point update does not exceed 1 ms.

The last parameter ‘POINT\_DATA \*Point’ defines the total parameters of axes that will be involved in the continuous motion. The structure of ‘POINT\_DATA’ defines in “type\_def.h” and listed in following table,

<table><tr><td>Parameter</td><td>Description</td><td>Unit / Range</td></tr><tr><td>_pos</td><td>Position data / Center (Arc trajectory)</td><td>pulse</td></tr><tr><td>_accType</td><td>Acceleration pattern</td><td>0: T curve ; 1: S curve</td></tr><tr><td>_decType</td><td>Deceleration pattern</td><td>0: T curve ; 1: S curve</td></tr><tr><td>_acc</td><td>Acceleration rate</td><td>pulse /</td></tr><tr><td>_dec</td><td>Deceleration rate</td><td>pulse /</td></tr><tr><td>_initSpeed</td><td>Start velocity</td><td>pulse / s</td></tr><tr><td>_maxSpeed</td><td>Maximum velocity</td><td>pulse / s</td></tr><tr><td>_endSpeed</td><td>End velocity</td><td>pulse / s</td></tr><tr><td>_angle</td><td>Arc move angle</td><td>-360 to 360 degrees</td></tr><tr><td>_dwell</td><td>Dwell times</td><td>ms</td></tr><tr><td>_opt</td><td>Point move option</td><td>(Refer to below table)</td></tr></table>

Table 4-3: POINT\_DATA Structure

You are able to config the moving method, stop condition and moving type by parameter ‘\_opt’ definition and it is listed as follows,

Point move option: \_opt

<table><tr><td>7</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td><td>1</td><td>Bit : 0</td></tr><tr><td>-</td><td>-</td><td>Last point</td><td>Finish Condition</td><td>-</td><td>Linear/Arc</td><td>-</td><td>Absolute/Relative</td></tr></table>

Bit 0: 1: Relative move, 0: Absolute move

Bit 2: 1: Arc move, 0: Linear move

Bit 4: 1: INP ON (In position signal), 0: CSTP ON (command stop signal)

Bit 5: 1: Last point index. 0: Not the last point index (if this bit is turned on, the point table movement will stop after this point.)

Bit ‘0’ decides the moving method to relative mode or absolute mode. Bit ‘2’ decides the trajectory moving following linear interpolation or circular interpolation method. Bit ‘0’ decides the moving method to relative mode or absolute mode. Bit ‘4’ decides the stop method that refers to ‘INP’ signal or ‘CSTP’ signal.

# 4.5.2 Point index

In order to easy to establish the point table, there uses point index ‘Index’ to program or monitor the point sequence whether work well or not. In this section, the following functions are discussed.

```txt
APS_get_start_point_index(Axis_ID,* Index)
APS_get_running_point_index(Axis_ID,* Index)
APS_get_end_point_index(Axis_ID,* Index)
```

By using the APS\_get\_xxx\_point\_index() function, the point index is dedicated to identify the start point, current point, or end point which is operating in point table sequence.

![Axis 0\nIndex1 Point\nIndex2 Point\nIndex3 Point\nIndex4 Point\nIndex5 Point\nIndex6 Point\nIndex7 Point\n...\n...\n...\nIndex 32 Point\nAxis 1\nIndex1 Point\nIndex2 Point\nIndex3 Point\nIndex4 Point\nIndex5 Point\nIndex6 Point\nIndex7 Point\n...\n...\n...\nIndex 32 Point\nAxis 5\nIndex1 Point\nIndex2 Point\nIndex3 Point\nIndex4 Point\nIndex5 Point\nIndex6 Point\nIndex7 Point\n...\n...\n...\nIndex 32 Point\n32 Points](.pci-8253-8256-user-manual/d64b4e04fc00447ff6b31e910ef72a85bfc8399e8fe425ef13c5fe5c40dc0fce.jpg)

The PCI-8253/6 allow point tables to be performed by different start point indexes to different end point indexes. In other word, the movement duration is programmable for different start points to end points. For example, if the depth of the established point table is 100 points and then the movement can be started from point index ‘5’ to index ‘15’.

# 4.5.3 Point table execution

In this section, the following function is discussed.

APS\_point\_table\_move(Dimension, \*Axis\_ID\_Array, StartIndex, EndIndex)

By using the APS\_xxx\_table\_move() function, the point index is dedicated to identify the start point, next point, or end point which is operating in point table sequence. By using the aforementioned functions to pause the point table movement or set the point table movement to repeat, when the pause command is issued, it will not stop the current point but stop at the next point index. Furthermore, when the repeat function is enabled, it will repeat the point move until the repeat function is disabled or a stop function is issued.

In order to carries out point table movement, the movement dimension, active axis number and its index must be defined first. Furthermore, the point table sector executed also needs to be defined before point table movement begins. ‘Dimension’ means the maximum dimension which the point table is executed. If there is only one 3D coordinated point in the point table sequence, which the most points exists in 2D or 1D coordinate, the dimension of this point table must be set completely to 3D coordinate. If interpolation movememt is needed, the ‘Axis\_ID\_Array’ has to set by your application. Other important properties of ‘Axis\_ID\_Array’ also define the reference axis, control axis and slave axis while this axis array is set in interpolation movement. Refer to the following table. if axis 0 to axis is the active axes in your application, the allocation of the axis that will define the axis property to reference as control or slave.

Typically, the minimum axis number will be the control axis, meaning it decides the behavior of interpolation. Therefore, the slave axis will follow the control axis to execute its movement correspondingly. It allows for several existing slave axes. For the reference axis, if it is define to the first element of ‘Axis\_ID\_Array’ and its parameter is able to be reused in other axes, in other word, if all the axes have the same move parameter in the motion operation, then you just need to program the related motion parameter for the reference axis.

For example, in Case A, if you need to perform the 3D linear interpolation with continuous moving by point table configuration, then the axis 0 forms the first element of the three axes array, following the rule that mentioned above. Axis 0 shall be defined to reference axis, and then the other two axes will follow the axis 0 parameter for their usage. Furthermore, the axis 0 is also the minor axis (with minor axis number within the three axes array), and therefore axis 0 also roles the control axis in this axes array. The axis 1 and axis 2 will process the interpolation move and follow the axis 0 accordingly.

# Case A

<table><tr><td>Axis 0</td><td>Axis 1</td><td>Axis 2</td></tr></table>

![A simple black line drawing of an upward-pointing arrow.](.pci-8253-8256-user-manual/910eb253410e0ad3fb0711a5e6d9c8bd3dfb3ee025874beaba12a26483e6d360.jpg)

Axis 0 is defined as the control axis and reference axis simultaneously.

In the illustration below (Case B), axis 1 was the first element instead of axis 0 of a three axes array so that the axis 1 would be the reference axis in this array. In other way, axis 0 is still the minor axis in this array, and therefore it is still the control axis in this array.

# Case B

<table><tr><td>Axis 1</td><td>Axis 2</td><td>Axis 0</td></tr></table>

![The image displays a simple, upward-pointing arrow outlined in black against a white background.](.pci-8253-8256-user-manual/89b2380635229b277e520d76e1ff52b249affa25b12e2c941ffab88f1eb05523.jpg)

Axis 1 is defined as the reference axis.

![The image is a black line drawing of a simple arrow pointing upwards on a white background. It features a vertical shaft, two diagonal lines forming a pointed head at the top, and a horizontal line at the bottom.](.pci-8253-8256-user-manual/df70feef4b9b8acbf8e09bd1128c95c08386663076e3cb3344a7efec68a0e747.jpg)

Axis 0 is defined as the control axis.

For another method, the point table execution is able to begin from any start point with ‘StartIndex’ and then close with ‘EndIndex’.

There are several examples presented as follows:

# Example: 2-D Linear move

The resulting 2-D trajectory is:

![| Point | Axis 0 | Axis 1 |\n|---|---|---|\n| (1) | 0.0 | 0.0 |\n| (2) | 100.0 | 0.0 |\n| (3) | 320.0 | 80.0 |\n| (4) | 320.0 | 160.0 |](.pci-8253-8256-user-manual/1257c7edf815845c5170028971e3ad00c8324faf7bc95b06d4082a9872b96067.jpg)

```c
#include "type_def.h"
#include "APS_define.h"
#include "APS168.h"
#include "ErrorCodeDef.h"

I32 ret;
POINT_DATA Point_AX0, Point_AX1;
I32 Axis_ID_Array[2] = {0, 1};

// Set first position for AX0 and it could be relative or absolute value (Unit: Pulse)
Point_AX0.i32_pos = 100;
Point_AX0.i16_accType = 1; //Acceleration pattern
0: T curve, 1:S curve

// Set finish condition to INP signal occurred;
set linear interpolation; set absolute motion
Point_AX0.i32_opt = 9

//Set point data to card memory
ret = APS_set_point_table(Axis_ID[0], 0, &
Point_AX0);

//Set and save parameter for AX1

// ***** Set remaining point *****

// Start a point table move
```

```txt
ret = APS_point_table_move(2, Axis_ID_Array, 0, 3);
...
```

A 2-D arc trajectory is also able to add to the continuous motion trajectory in the point table.

# Example: 2-D Linear Move

The resulting 2-D trajectory is:

![Axis 2\n(0,100)\n(3)\n(100,100)\n(4)\n(1)\n(2)\n(0,0)\n(100,0)\nAxis 0](.pci-8253-8256-user-manual/d01b6ba7e3491fedc99dfa45315c8f7dfd6f35ed63b105d1b2f1f517d9ac87b9.jpg)

The resulting velocity vs. time is:

![| Point | Linear Velocity | Axis 0 Velocity | Axis 2 Velocity |\n|-------|-----------------|-----------------|-----------------|\n| 1     | 0               | 0               | 0               |\n| 2     | 0               | 1               | 1               |\n| 3     | 0               | 0               | 0               |\n| 4     | 1               | 0               | 0               |](.pci-8253-8256-user-manual/653864c54d8eda625e80fb3cfefff778ffe0a7777276883716c088ff0ecb1776.jpg)

```c
#include "type_def.h"
#include "APS_define.h"
#include "APS168.h"
#include "ErrorCodeDef.h"

I32 ret;
POINT_DATA Point_AX0, Point_AX2;
I32 Axis_ID_Array[2] = {0, 2};
// *****First motion*****
// Set first position for AX0 (Unit: Pulse)
Point_AX0.i32_pos = 100;
Point_AX0.i16_accType = 1; //Acceleration pattern
    0: T curve, 1:S curve

// Set finished condition to INP signal occurred
    ; set linear interpolation; set absolute
    motion
Point_AX0.i32_opt = 9
//Set point data to card memory
ret = APS_set_point_table(Axis_ID[0], 0, &
    Point_AX0);

//Set and save parameter for AX2
// *****Second motion*****
// Set center position for AX0 and it could be
    relative or absolute value (Unit: Pulse)
Point_AX0.i32_pos = 100;

Point_Ax0.i32_angle = 180 // (Unit: Degree)
Point_AX0.i32_opt = 13 //Set to circular
    interpolation
//Set point data to card memory
ret = APS_set_point_table(Axis_ID[0], 1, &
    Point_AX0);

// Set center position for AX2
Point_AX2.i32_pos = 50;

//Set point data to card memory
ret = APS_set_point_table(Axis_ID[1], 1, &
    Point_AX2);
```

```c
//************************** Set and save parameter for third and fourth motion **************************
// Start a point table move
ret = APS_point_table_move(2, Axis_ID_Array, 0, 3);
...
```

A 3-D trajectory is also able to add to the continuous motion trajectory in the point table.

# Example: 2-D Linear Move

The resulting 3-D trajectory is:

![| Point | X     | Y     |\n|-------|-------|-------|\n| (1)   | 100   | 0     |\n| (2)   | 100   | 0     |\n| (3)   | 100   | 0     |](.pci-8253-8256-user-manual/e556a49e9d39ecc543cd0abafe551ecc385dd6f38408e447ba742b5462f33bc7.jpg)

The resulting velocity vs. time is:
![| Velocity Region | Line Style | Description         |\n| --------------- | ---------- | ------------------- |\n| Linear Velocity | Solid      | Linear Velocity     |\n| Linear Velocity | Dotted     | Linear Velocity     |\n| Axis 0 Velocity | Solid      | Axis 0 Velocity     |\n| Axis 0 Velocity | Dotted     | Axis 0 Velocity     |\n| Axis 1 Velocity | Solid      | Axis 1 Velocity     |\n| Axis 1 Velocity | Dotted     | Axis 1 Velocity     |\n| Axis 2 Velocity | Solid      | Axis 2 Velocity     |\n| Axis 2 Velocity | Dotted     | Axis 2 Velocity     |](.pci-8253-8256-user-manual/a0e559b18808699d37d5cad140e24f2a3791714c773438f38170479292d74d90.jpg)

```c
I32 ret;
POINT_DATA Point_AX0, Point_AX1, Point_AX2;
I32 Axis_ID_Array[3] = {0, 1, 2};

// *****First motion *****
// Set first position for AX0 (Unit: Pulse)
Point_AX0.i32_pos = 100;
Point_AX0.i16_accType = 1; //Acceleration pattern
    0: T curve, 1:S curve

// Set finished condition to INP signal occurred
    ; set linear interpolation; set to absolute
    motion
Point_AX0.i32_opt = 9
//Set point data to card memory
ret = APS_set_point_table(Axis_ID[0], 0, &
    Point_AX0);
...
```

```c
// Set and save parameter for AX1 and AX2
// *****Second motion *****
// Set center position for AX0
Point_AX0.i32_pos = 100;
...
Point_Ax0.i32_angle = 180    // (Unit: Degree)
Point_AX0.i32_opt = 13    // Set to circular interpolation; set to absolute motion
// Set point data to card memory
ret = APS_set_point_table(Axis_ID[0], 1, & Point_AX0);
...
// Set center position for AX1
Point_AX1.i32_pos = 0;
...
Point_Ax1.i32_angle = 180
Point_AX1.i32_opt = 13
...
ret = APS_set_point_table(Axis_ID[1], 1, & Point_AX1);
...
// Set center position for AX2
Point_AX2.i32_pos = 50;
...
Point_Ax2.i32_angle = 180
Point_AX2.i32_opt = 13
...
ret = APS_set_point_table(Axis_ID[2], 1, & Point_AX2);
//***** Set and save parameter for third motion *****
// Start a point table move
ret = APS_point_table_move(3, Axis_ID_Array, 0, 2);
...
```

When the motion operation is smooth, the motion can also be frozen for a specified period of time by inserting ‘Dwell’, definied by parameter ‘dwell‘ in units of millisecond. If the dwell time was set in point table sequence, the index will be occupied. For example, as in the 2-D linear movement above, the motion procedure is configured into four steps so that the point table index 0 to index 3 are used. However, if you decided to insert two dwell times between the first motion, second motion and third motion accordingly, the total index used will be from index 0 to index 5 because there are two indexs be used to insert dwell time. The following is an example:

# Insert Dwell into Motion Sequence

The resulting velocity vs. time is:

![| Point | X-Axis Label | Y-Axis Value |\n|---|---|---|\n| 1 | (0,0) | |\n| 2 | (100,0) | |\n| 3 | (160,80) | |\n| 4 | (320,110) | (320,160) |](.pci-8253-8256-user-manual/ab6720cc2835b54425bebb4a6d878ff96f11d15f76d0868fa7f40f96e3965406.jpg)

![| Time Segment | Linear Velocity | Axis 0 Velocity | Axis 1 Velocity |\n| ------------ | --------------- | --------------- | --------------- |\n| 0.5 sec      | Peak            | -               | -               |\n| 1.0 sec      | Stable          | -               | -               |](.pci-8253-8256-user-manual/dfee35d8eb9c21ad5f2e946cff13c5fe9ca546111e89b2885dd013ceab6160ec.jpg)

```txt
I32 ret;
POINT_DATA Point_AX0, Point_AX1;
I32 Axis_ID_Array[2] = {0, 1};

// Set first position for AX0 and it could be relative or absolute value (Unit: Pulse)
Point_AX0.i32_pos = 100;
Point_AX0.i16_accType = 1; //Acceleration pattern
    0: T curve, 1:S curve

...
Point_AX0.u32_dwell = 500 ; //Set dwell time to
    0.5 s

// Set finish condition to INP signal occurred ;
    set linear interpolation ; set absolute
    motion
Point_AX0.i32_opt = 9
```

```c
//Set point data to card memory
ret = APS_set_point_table(Axis_ID[0], 0, & Point_AX0);
...
//***Using index 1 to insert first dwell time ***
Point_AX0.u32_dwell = 500; //Set dwell time to 0.5 s
//Set dwell data to card memory
ret = APS_set_point_table(Axis_ID[0], 1, & Point_AX0);
//Set and save parameter for AX1
...
//***Set next point***
...
//***Using index 3 to insert first dwell time***
Point_AX0.u32_dwell = 1000; //Set dwell time to 1 s
//Set dwell data to card memory
ret = APS_set_point_table(Axis_ID[0], 3, & Point_AX0);
//***Set remaining point***
// Start a point table move
ret = APS_point_table_move(2, Axis_ID_Array, 0, 5);
...
```

# 4.6 Motion Status and Related IO Monitoring

The PCI-8253/6 board has vast dedicated I/O and can roughly be divided into 2 categories. They are the motion related I/O’s and the motion status. Motion related I/O’s are input and output signals dedicated to motion. For example: PEL/MEL, position/velocity feedback, etc. In addition, the motion status will be updated cyclically by motion status monitoring function within per servo update cycle – 300 us (/ 6 axes). This section will concentrate on the motion related I/O and their function calls.

 Section 4.6.1: Position Control and Feedback
 Section 4.6.2: Velocity Feedback
 Section 4.6.3: Motion I/O Status
 Section 4.6.4: Motion Status

# 4.6.1 Position Control and Feedback

In this section, the following functions are discussed.

```txt
APS_set_position(Axis_ID, Position)
APS_get_position(Axis_ID, *Position)
APS_set_command(Axis_ID, Command)
APS_get_command(Axis_ID, *Command)
```

# Set position

The APS\_set\_position() function allows users to set a current position counter value for the servo driver.

# Get position information

The DSP-based analog motion controller - PCI-8253/6 controls servo drivers & motors via volt commands. For each servo update cycle (50 us per axis), the PCI-8253/6 sends a command to and receives a response from the servo driver via encoder feedback. Through command and response, an abundant amount of information is carried in and out, including position command and position feedback. The function call APS\_get\_position() will retrieve such information. The parameter ‘\*Position’ retrieves the current position feedback.

# Set command

This function is used to set the position information of one axis. The information is in unit of pulse. The function ‘APS\_set\_command()’ will change current position or command to a new one. Notice that the set command may cause axis to move violently in closed loop control or absolute control system. However, it is no problem in open loop system. The set position command is legal in closed loop or absolute control system because it will also set command to the same value at the same time.

# Get command information

For each servo update cycle (50 us per axis), the PCI-8253/6 sends a command to and receives a response from the servo driver via encoder feedback. The function call APS\_get\_command() will retrieve command information which be calculated by DSP and the parameter ‘\*Command’ retrieves the next command, user is easy to monitor the command status and verify the generated profile by such function.

# 4.6.2 Velocity Feedback

In this section, the following functions are discussed.

```txt
APS_get_command_velocity(Axis_ID, *Velocity)
APS_get_feedback_velocity(Axis_ID, *Velocity)
```

# Get feedback velocity information

The DSP-based analog motion controller - PCI-8253/6 controls servo drivers & motors via volt command. For each servo update cycle (50 us per axis), the PCI-8253/6 sends a command to and receives a response from the servo driver via encoder feedback. Through command and response, an abundant amount of information is carried in and out, including position command and position feedback. Due to the closed-loop inside DSP and the position feedback information will be also converted to velocity feedback information to easy monitor the deviation between velocity command and response. The function call APS\_get\_feedback\_velocity() will retrieve such information. The parameter ‘\*Velocity’ retrieves the current velocity feedback, which present motor speed from the servo driver.

# Get command velocity information

For each servo update cycle (50 us per axis), the PCI-8253/6 sends a command to and receives a response from the servo driver. The function call APS\_get\_command\_velocity() will retrieve command information which be calculated by DSP and the parameter ‘\*Velocity’ retrieves the next command, user is easy to monitor the command status and verify the generated profile by such function.

# 4.6.3 Motion I/O Status

In this section, the following function is discussed.

```cmake
APS_motion_io_status(Axis_ID)
```

The “motion DIO” mentioned here refers to the motions dedicated to the digital I/O signals including PEL, MEL, ORG, and EMG. Each axis has its own motion DIO signal except EMG. All axes from a single card shares the same EMG signal. User has to config the related I/O logic by function ‘APS\_set\_axis\_param()’ firstly to insure that the signal works legally. In other way, for detailed of motion I/O status, user is able to refer to motion I/O status table to check each I/O bit definition in function library section.

# End-limit signals

The end-limit signals are used to stop the axis when they are active. There are two possible stop modes, one is “stop immediately”, and, the other is “decelerate to start velocity then stop”. The parameter ‘PRA\_EL\_Mode’ in ‘APS\_set\_axis\_param()’ are used to select the mode. Furthermore, user is able to use either an ‘a’ contact switch or a ‘b’ contact switch by setting the parameter ‘Logic’.

PEL signal indicates the end-limit in the positive (plus) direction. The MEL signal indicates the end-limit in the negative (minus) direction. When the axis is moving towards the positive direction, the axis will be stopped when the PEL signal becomes active, while the MEL signal is no affect in this case, and vise versa. When the PEL is active, only the negative (minus) direction motion is allowed.

The PEL/MEL signals can generate an IRQ, if the interrupt service routine is enabled. Refer to section 4.10.

The PEL/MEL status can be monitored through the function APS\_motion\_io\_status().

# ORG signal

The ORG signal is used, when the axis is operating under the home return mode. The logic polarity of the ORG signal is selectable using the parameter ‘Logic’ of ‘APS\_set\_axis\_param()’. The ORG status can be monitored using the function APS\_motion\_io\_status().

# EMG signal

Each PCI-8253/6 board has an EMG signal input. Whenever this EMG signal becomes active, all the axes control by in the card will stop moving immediately.

The EMG signal is capable of generating an IRQ if an interrupt service routine is enabled, refer to section 4.10.

The logic polarity of the EMG signal is selectable using the parameter ‘Logic’ of ‘APS\_set\_axis\_param()’. The EMG status can be monitored using the function APS\_motion\_io\_status().

Except for the above mentioned motion I/O, this function retrieves more motion related I/O status simultaneously which included alarm signal, in position signal, servo on signal and so on. For detailed information of motion I/O status, user can refer to motion I/O table to understand the definition of each bit as following table.

<table><tr><td>7</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td><td>1</td><td>0</td></tr><tr><td>SVON</td><td>INP</td><td>EZ</td><td>EMG</td><td>ORG</td><td>MEL</td><td>PEL</td><td>ALM</td></tr><tr><td>15</td><td>14</td><td>13</td><td>12</td><td>11</td><td>10</td><td>9</td><td>8</td></tr><tr><td></td><td>ABSL</td><td>TLC</td><td>SMEL</td><td>SPEL</td><td>ZERO</td><td>WARN</td><td>RDY</td></tr></table>

Table 4-4: Motion IO Status Bit Definition

# 4.6.4 Motion Status

In this section, the following function is discussed.

$\mathtt { A P S \_ m o t i o n \_ s t a t u s ( A x i s \_ I D ) }$

This function is used to get one axis’ motion status. The status includes running, normal stop, abnormal stop by reasons, in waiting other axis, follow status, in some modes, in accelerating or decelerating and so on. Status can be more than two such like mode and running. Users need to use this function to check whether the ‘Fire-and-forget’ function is done in polling system. In even driven system, users can use interrupt event functions. For detailed of each bit of motion status, user is able to refer to motion status table to check each bit definition in function library section.

<table><tr><td>7</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td><td>1</td><td>0</td></tr><tr><td>SMV</td><td>HMV</td><td>NSTP</td><td>DIR</td><td>DEC</td><td>ACC</td><td>VM</td><td>CSTP</td></tr><tr><td>15</td><td>14</td><td>13</td><td>12</td><td>11</td><td>10</td><td>9</td><td>8</td></tr><tr><td>JOG</td><td>SLV</td><td>PPS</td><td>PDW</td><td>PMV</td><td>SMO</td><td>CIP</td><td>LIP</td></tr><tr><td>23</td><td>22</td><td>21</td><td>20</td><td>19</td><td>18</td><td>17</td><td>16</td></tr><tr><td>SEMGS</td><td>MELS</td><td>PELS</td><td>WANS</td><td>ALMS</td><td>EMGS</td><td>SVONS</td><td>ASTP</td></tr><tr><td>31</td><td>30</td><td>29</td><td>28</td><td>27</td><td>26</td><td>25</td><td>24</td></tr><tr><td>--</td><td>ERRS</td><td>--</td><td>--</td><td>--</td><td>STPOA</td><td>SMELS</td><td>SPELS</td></tr></table>

Table 4-5: Motion status definition table

# 4.7 Driver Management

In this section, all servo driver related functions are discussed. Including:

# 4.7.1 Servo On

In this section, the following function is discussed.

$\mathtt { A P S \_ s e t \_ s e r v o \_ o n } ( \mathtt { A x i s \_ l D } , \mathtt { \nabla { S e r v o \_ o n } } )$

This function is able to command one axis to servo on individually, moreover, if user wants to monitor the status for servo on/off, the function APS\_motion\_status() is useful to indicate the axis’s servo current status.

# 4.8 Data Sampling

In this section, the following functions are discussed.

```cmake
APS_set_sampling_param(Board_ID, Param_No, Param_Dat)
APS_get_sampling_param(Board_ID, Param_No, *Param_Dat)
APS_wait_trigger_sampling(Board_ID, Length, PreTrgLen, TimeOutMs, STR_SAMP_DATA_4CH *DataArr)
```

In order to help user to easy analyze the motion related profile or data. Data sampling conception was addressed to users and it is able to regard as digital scope. Similar to oscilloscope, in PCI-8253/6, there gives each axis 4 monitoring channels, trgger level setting, trigger source selection function ans so on. Users can use these monitoring channels to monitor a variety of I/O data, such as feedback velocity, INP (in position) signal status, etc.

To be able to use the monitoring function, users must understand the configuring and operating procedures.

# Configuring procedures:

Configuring procedure is necessary before a monitor function startes. There are two main instructions during configuration:

# 1. Set\_monitor\_config

This function is used to set the monitoring configuration, such as sampling rate, trigger condition…etc. This function must be executed before monitoring starts. The function APS\_set\_sampling\_param() is used to config the related parameter and set the action triggered channel. The first parameter ‘Param\_No’ specifies the sampling parameter numbers that are listed below.

Sampling parameters definition table

<table><tr><td>Para NO.</td><td>Define</td><td>Description</td><td>Parameter data value.</td></tr><tr><td>00h</td><td>SAMP_PA_RATE</td><td>Sampling rate(cycle)(depending on cycle time)</td><td>1- 65535(times of cycle)</td></tr><tr><td>02h</td><td>SAMP_PA_EDGE</td><td>Edge triggered</td><td>0:Rising edge1:faling edge</td></tr><tr><td>03h</td><td>SAMP_PA_LEVEL</td><td>Triggered level</td><td>(I32) -2147483648 to 2147483647</td></tr><tr><td>05h</td><td>SAMP_PA_TRIGCH</td><td>Trigger channel</td><td>0 - 3 (Ch0-Ch3)</td></tr><tr><td>10h</td><td>SAMP_PA_SRC_CH0</td><td>Sampling source of Channel 0</td><td>Refer to sampling source table</td></tr><tr><td>11h</td><td>SAMP_PA_SRC_CH1</td><td>Sampling source of Channel 1</td><td>Refer to sampling source table</td></tr><tr><td>12h</td><td>SAMP_PA_SRC_CH2</td><td>Sampling source of Channel 2</td><td>Refer to sampling source table</td></tr><tr><td>13h</td><td>SAMP_PA_SRC_CH3</td><td>Sampling source of Channel 3</td><td>Refer to sampling source table</td></tr></table>

Table 4-6: Sampling Parameters Definition Table

# 2. Set\_monitor\_channel

This function is used to set the monitoring target. This function must be executed before monitoring can started. The function APS\_set\_sampling\_param() is also used to set the monitoring channel. The first parameter ‘Param\_No’ specifies the sampling parameter numbers that are listed below. The remaining parameters ‘Param\_Dat’ are used for the monitoring targets. For general usage, each channel is available to config to same trigger source with individual axis, or config to different trigger source with same axis, the relationship was illustrated as following table.

<table><tr><td>Source</td><td>Symbol Define</td><td>Description</td><td>Value Range</td></tr><tr><td>00h</td><td>SAMP_COM_POS</td><td>Command position (pulse)</td><td>I32 value</td></tr><tr><td>01h</td><td>SAMP_FBK_POS</td><td>Feedback position (pulse)</td><td>I32 value</td></tr><tr><td>02h</td><td>SAMP_CMD_VEL</td><td>Command velocity (pps)</td><td>I32 value</td></tr><tr><td>03h</td><td>SAMP_FBK_VEL</td><td>Feedback velocity (pps)</td><td>I32 value</td></tr><tr><td>04h</td><td>SAMP_MIO</td><td>Motion IO status (Same as Get motion IO function)</td><td>I32 value (bit format)</td></tr><tr><td>05h</td><td>SAMP_MSTS</td><td>Motion status (Same as Get motion status function)</td><td>I32 value (bit format)</td></tr><tr><td>06h</td><td>SAMP_MSTS_ACC</td><td>Motion status at acceleration (Command velocity)</td><td>0: Not at acceleration1: At acceleration</td></tr><tr><td>07h</td><td>SAMP_MSTS_MV</td><td>Motion status at max velocity (Command velocity)</td><td>0: Not at max. velocity1: At max. velocity</td></tr><tr><td>08h</td><td>SAMP_MSTS_DEC</td><td>Motion status at deceleration (Command velocity)</td><td>0: Not at deceleration1: At deceleration</td></tr><tr><td>09h</td><td>SAMP_MSTS_CSTP</td><td>Motion status command stop (CSTP)</td><td>0: CSTP status ON1: CSTP status OFF</td></tr></table>

Table 4-7: Sampling Source Definition Table

<table><tr><td>Source</td><td>Symbol Define</td><td>Description</td><td>Value Range</td></tr><tr><td>0Ah</td><td>SAMP_MSTS_NSTP</td><td>Motion status normal stop (NSTP)</td><td>0: NSTP status ON1: NSTP status OFF</td></tr><tr><td>0Bh</td><td>SAMP_MIO_INP</td><td>Motion status in position (INP)</td><td>0: INP status ON1: INP status OFF</td></tr><tr><td>0Ch</td><td>SAMP_MIO_ZERO</td><td>Motion status zero (ZERO)</td><td>0: ZERO status ON1: ZERO status OFF</td></tr><tr><td>0Dh</td><td>SAMP_MIO_ORG</td><td>Motion status ORG status</td><td>0: OGR status ON1: OGR status OFF</td></tr></table>

Table 4-7: Sampling Source Definition Table

# Operating procedures:

Like as the above statement, the data sampling conception is similar to oscilloscope. There are 2 major operation procedures which have to execute.

# 1. Configure trigger condition

Before the sampling starts, user has to conig related triggred condition that included triggered sampling rate, triggered edge selection, triggered level. After the triggered condition completion, user has to set trigger source which user wants to monitor with determined channel.

This function returns a value immediately and carries out real time monitoring of specified monitoring targets.

# 2. Select the sampling source

After sampling condition configuration completion, user needs to decide what kinds date wants to monitor, in PCI-8253/6, ADLINK offers 14 sampling sources for monitoring and they are listed as the above table.

![The diagram illustrates a signal processing or data acquisition layout for 'Axis 1'. It is organized into three main sections: an input command list on the left, a waveform visualization area in the center, and a raw data output list on the right.\n\n**Labeled Blocks:**\n\n*   **Axis 1:** A dashed rectangular container grouping the input commands. Inside are four stacked blocks:\n    *   **CH0 Command Velocity (1st Axis)** (Grey block)\n    *   **CH1 Feedback Position (1st Axis)** (Blue block)\n    *   **CH2 INP (1st Axis)** (Orange block)\n    *   **CH3 Zero Velocity Index (1st Axis)** (Green block)\n*   **Trigger Position:** A red inverted triangle located on the central square wave.\n*   **Channel 0 Raw Data (Command Velocity)** (Grey block)\n*   **Channel 1 Raw Data (Feedback Position)** (Blue block)\n*   **Channel 2 Raw Data (INP Status)** (Orange block)\n*   **Channel 3 Raw Data (Zero Velocity Index)** (Green block)\n\n**Connections and Layout:**\n\n*   **Left to Center:** To the left of the 'Axis 1' blocks are four corresponding waveform icons (sine, square, pulse, and a flat line with a pulse). These correspond directly to the blocks inside the 'Axis 1' box.\n*   **Center Visualization:** The large central box displays four corresponding waveforms (sine, square, pulse, flat line). A vertical dashed line passes through the red 'Trigger Position' triangle.\n*   **Center to Right:** Bracket-shaped connectors link each waveform in the central area to its corresponding 'Channel X Raw Data' block on the far right.\n*   **Annotations:**\n    *   A vertical bracket labeled **Length** is shown next to the top block on the right.\n    *   At the bottom, horizontal dimension lines indicate **PreTrgLen** (distance before the trigger) and **Length** (duration of the data capture).](.pci-8253-8256-user-manual/a0a7c45b34e300c1d8236957862511752c8b0c006200413083bc7f61c3861baa.jpg)

# Example:

```c
//... initialize card
APS_set_sampling_param(Board_ID, SAMP_PA_RATE, 2); //Set sampling rate
APS_set_sampling_param(Board_ID, SAMP_PA_EDGE, 0); //Set trigger edge (rising edge)
APS_set_sampling_param(Board_ID, SAMP_PA_LEVEL, 1); //Set trigger level (1)
APS_set_sampling_param(Board_ID, SAMP_PA_TRIGCH, 2); //Set trigger channel (channel 2)
```

The sampling condition needs to be configured in advance. In this example, the sampling rate was set to two multiple of cycle time and defines the triggered edge to rising type. Furthermore, the triggered level was set to ‘1’ because the I/O status just has defined to either ‘high’ or ‘low’. Finally, the channel was picked as triggered channel.

```c
APS_set_sampling_param( Board_ID,
    SAMP_PA_SRC_CHO, SAMP_CMD_VEL ); //Set
    channel_0 sampling source
```

```txt
APS_set_sampling_param( Board_ID,
    SAMP_PA_SRC_CH1, SAMP_FBK_POS ); //Set
    channel_1 sampling source.
APS_set_sampling_param( Board_ID,
    SAMP_PA_SRC_CH2, SAMP_MIO_INP ); //Set
    channel_2 sampling source
APS_set_sampling_param( Board_ID,
    SAMP_PA_SRC_CH3, SAMP_MIO_ZERO ); //Set
    channel_3 sampling source.
```

After sampling condition configuration completion, user still has to select the triggered source for each sampling channel.

```rust
I32 Length = 1024; //Total sampling data array size
I32 PreTrgLen = 100; //The number of pre-trigger points
STR_SAMP_DATA_4CH DataArr[1024];
I32 TimeOutMs = 10000; //10 second timeout
Ret =APS_wait_trigger_sampling(Board_ID, Length, PreTrgLen, TimeOutMs, DataArr);
//...
```

Finally, you need to define the storage length for sampling raw data. After the function APS\_wait\_trigger\_sampling() was executed, the 1024 raw data was stored in the DataArr. Other advantage was also offered in this function, user is able to set the parameter ‘PreTrgLen’ and it defines the length of pre-buffer, like as oscilloscope, user is also able to monitor the raw data before triggered event occurred.

![This diagram illustrates a multi-channel data acquisition and triggering process.\n\n**Left Section (Input Channels):**\nInside a vertical dashed box, four channels are listed with their corresponding input waveforms to the left:\n*   **CH0**: 'Command Velocity (1st Axis)' (associated with a sine wave)\n*   **CH1**: 'Feedback Position (2nd Axis)' (associated with a square wave)\n*   **CH2**: 'INP (1st Axis)' (associated with a step wave)\n*   **CH3**: 'Zero Velocity Index (3rd Axis)' (associated with a step wave)\n\n**Middle Section (Triggering Mechanism):**\nA large bracket encloses the waveforms as they pass through the system.\n*   The waveforms are displayed again.\n*   A red downward-pointing triangle labeled **Triggered Channel** points to the square wave (Channel 1).\n*   A vertical dashed line intersects the waveforms, indicating the trigger point.\n*   Below the waveforms, horizontal arrows indicate timing segments labeled **PreTrgLen** and **Length**.\n\n**Right Section (Output Data):**\nFour blocks receive data via arrows connecting from the central waveforms:\n*   **Channel 0 Raw Data (Command Velocity)**\n*   **Channel 1 Raw Data (Feedback Position)**\n*   **Channel 2 Raw Data (INP Status)**\n*   **Channel 3 Raw Data (Zero Velocity Index)**\n\n**Additional Labels:**\n*   On the far right, a vertical double-headed arrow is labeled **Length**.](.pci-8253-8256-user-manual/597c46da3a147b76c13910099984d283ed00d348b69d1e08965d409af4d34a0a.jpg)

# Example:

```c
//... initialize card
APS_set_sampling_param(Board_ID, SAMP_PA_RATE, 2); //Set sampling rate
APS_set_sampling_param(Board_ID, SAMP_PA_EDGE, 0); //Set trigger edge (rising edge)
APS_set_sampling_param(Board_ID, SAMP_PA_LEVEL, 1); //Set trigger level (1)
APS_set_sampling_param(Board_ID, SAMP_PA_TRIGCH, 2); //Set trigger channel (channel 2)
```

Similar to previous example, you have to config the sampling condition in advance. The related condition was configed as above setting.

```c
APS_set_sampling_param( Board_ID,
    SAMP_PA_SRC_CHO, SAMP_CMD_VEL ); //Set
    channel_0 sampling source
```

```txt
APS_set_sampling_param( Board_ID,
    SAMP_PA_SRC_CH1, SAMP_FBK_POS ); //Set
    channel_1 sampling source.
APS_set_sampling_param( Board_ID,
    SAMP_PA_SRC_CH2, SAMP_MIO_INP ); //Set
    channel_2 sampling source
APS_set_sampling_param( Board_ID,
    SAMP_PA_SRC_CH3, SAMP_MIO_ZERO ); //Set
    channel_3 sampling source.
```

After sampling condition configuration completion, user still has to select the triggered source for each sampling channel.

```rust
I32 Length = 1024; //Total sampling data array size
I32 PreTrgLen = 100; //The number of pre-trigger points
STR_SAMP_DATA_4CH DataArr[1024];
I32 TimeOutMs = 10000; //10 second timeout
Ret =APS_wait_trigger_sampling(Board_ID, Length, PreTrgLen, TimeOutMs, DataArr);
//...
```

Finally, you need to define the storage length for sampling raw data. After the function APS\_wait\_trigger\_sampling() was executed, the 1024 raw data was stored in the DataArr. Other advantage was also offered in this function, user is able to set the parameter ‘PreTrgLen’ and it defines the length of pre-buffer, like as oscilloscope, user is also able to monitor the raw data before triggered event occurred.

# 4.9 Interrupt Control

In this section, the following functions are discussed.

```txt
APS_int_enable(Board_ID, Enable)
ASP_set_int_factor(Board_ID, Item_No, Factor_No, Enable)
ASP_get_int_factor(Board_ID, Item_No, Factor_No, *Enable)
APS_wait_single_int(Int_No, Time_Out)
APS_wait_multiple_int(Int_Count, *Int_No_Array, Wait_All, Time_Out)
APS_reset_int(Int_No)
APS_set_int(Int_No)
```

The PCI-8253/6 board can generate an interrupt for certain conditions. Refer to the figure below:

![The flowchart illustrates a hierarchical data flow with three main levels of components connected by upward-pointing arrows:\n\n1.  **Top Level:** A large rectangular block labeled **'User AP'**. Inside this block is a smaller rectangular block labeled **'Thread waiting for event'**.\n2.  **Middle Level:** A rectangular block labeled **'DLL & Driver'**. An upward-pointing arrow connects the top of this block to the bottom edge of the 'Thread waiting for event' block within the User AP.\n3.  **Bottom Level:** A rectangular block labeled **'SSCNET board'**. An upward-pointing arrow connects the top of this block to the bottom of the 'DLL & Driver' block.](.pci-8253-8256-user-manual/3387d5d6b3999f6f3bd4d5ee913646bb7dfec11e92fdc9f0baf98b375196252e.jpg)

Users can either set a call back routine that will be executed when an interrupt occurs, or create a thread to wait for an event that will be triggered when an interrupt occurs.

To enable or disable the interrupt generated from the PCI-8253/6 board, use the APS\_int\_enable() function. It acts as an ON\_OFF switch. Once disabled, the PCI-8253/6 board will cease to generate any interrupt signals to the host system.

In addition to APS\_int\_enable(), users need to define the conditions under which an interrupt signal should occurs by using the ASP\_set\_int\_factor() function in order to successfully introduce an interrupt signal to the host system. The parameter ‘Item\_No’ of APS\_set\_int\_factor() is use to specify the axis source with ‘Factor\_No’ specifying the interrupt factor for this specified source.

When the user enabled the interrupt function for specified factors by ASP\_set\_int\_factor(), it could use this function to wait a specific interrupt by APS\_wait\_single\_int(). When this function was running, the process would never stop until the event was be triggered or the function was time out. This function returns when one of the following occurs:

1. The specified interrupt factor is in the signaled state.
2. The time-out interval elapses.

This function checks the current state of the specified interrupt factor. If the state is non-signaled, the calling thread enters the wait state. It uses no processor time while waiting for the INT state to become signaled or the time-out interval to elapse.

Except single interrupt triggering function, this board also offers the multiple interrupt event triggering function APS\_wait\_multiple\_int(), the most different points are the function will return the event triggered signal when one of the following occurs:

1. Either any one or all of the interrupt factors are in the signaled state.
2. The time-out interval elapses.

No matter what interrupt method selected, when the interrupt was occurred and the wait function is return. User should use APS\_reset\_int () to reset the interrupt by themselves. If user does not reset the interrupt, the wait function will pass immediately next time.

<table><tr><td>Item</td><td>Description</td></tr><tr><td>0</td><td>Axis 0 interrupt factors</td></tr><tr><td>1</td><td>Axis 1 interrupt factors</td></tr><tr><td>...</td><td>...</td></tr><tr><td>15</td><td>Axis 15 interrupt factors</td></tr><tr><td>16</td><td>System interrupt factors</td></tr></table>

Table 4-8: Interrupt Factor Table

Item 0\~15: Axes interrupt factors number definition

<table><tr><td>7</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td><td>1</td><td>0</td></tr><tr><td>IZERO</td><td>IWARN</td><td>IINP</td><td>IEZ</td><td>IORG</td><td>IMEL</td><td>IPEL</td><td>IALM</td></tr><tr><td>15</td><td>14</td><td>13</td><td>12</td><td>11</td><td>10</td><td>9</td><td>8</td></tr><tr><td>--</td><td>ITLC</td><td>IASTP</td><td>INSTP</td><td>IDEC</td><td>IACC</td><td>IVM</td><td>ICSTP</td></tr></table>

Axes interrupt factors condition description

<table><tr><td>NO.</td><td>Define</td><td>Interrupt condition description</td></tr><tr><td>0</td><td>IALM</td><td>Servo alarm signal turn ON</td></tr><tr><td>1</td><td>IPEL</td><td>Positive end limit switch is turn ON</td></tr><tr><td>2</td><td>IMEL</td><td>Minus (Negative) end limit switch turn ON</td></tr><tr><td>3</td><td>IORG</td><td>Home switch turn ON</td></tr><tr><td>4</td><td>IEZ / IEZP</td><td>EZ passed signal turn ON</td></tr><tr><td>5</td><td>IINP</td><td>In position signal turn ON</td></tr><tr><td>6</td><td>IWARN</td><td>Servo warning ON</td></tr><tr><td>7</td><td>IZERO</td><td>Zero speed</td></tr><tr><td>8</td><td>ICSTP</td><td>Command stop</td></tr><tr><td>9</td><td>IVM</td><td>In maximum velocity</td></tr><tr><td>10</td><td>IACC</td><td>In acceleration</td></tr><tr><td>11</td><td>IDEC</td><td>In deceleration</td></tr><tr><td>12</td><td>INSTP</td><td>Normal stop(Motion done)</td></tr><tr><td>13</td><td>IASTP</td><td>Abnormal stop</td></tr><tr><td>14</td><td>ITLC</td><td>Torque limit control is turn ON</td></tr><tr><td>15</td><td>Reserved</td><td>--</td></tr></table>

# 4.10 E-Gear

This function is used to adjust the command pulse number of one revolution (Resolution) for a servo system.

Users must set the “User define resolution” before motion starts.

$$
\text { Move   ratio } (R) = \frac {\text { Encoder   resolution }}{\text { User - define   resolution } (2 ^ {N})}
$$

$\mathsf { U s e r - d e f i n e s \ r e s o l u t i o n } = 2 ^ { \mathsf { N } } ; \mathsf { N } = 1 2 \sim 1 8$

$( \mathsf { A x i s p a r a m e t e r : P R A \_ E G E A R } )$

For example, by using Mitsubishi MR-J3A servo motor, its encoder resolution is 262144 pulse / rev. The following table shows the relationship between parameter N, user-define resolution and move ratio R.

<table><tr><td>N</td><td>User define res. Pulse / Rev.</td><td>E-gear ratio (R)</td></tr><tr><td>18</td><td> $2^{N} = 262144$ </td><td>1</td></tr><tr><td>17</td><td> $2^{N} = 131072$ </td><td>2</td></tr><tr><td>16</td><td> $2^{N} = 65536$ </td><td>4</td></tr><tr><td>15</td><td> $2^{N} = 32768$ </td><td>8</td></tr><tr><td>14</td><td> $2^{N} = 16384$ </td><td>16</td></tr><tr><td>13</td><td> $2^{N} = 8192$ </td><td>32</td></tr><tr><td>12</td><td> $2^{N} = 4096$ </td><td>64</td></tr></table>

# Example:

![Servo encoder resolution\n= 262144 pulse/rev.\nPitch =10 mm\n= 10,000 µm](.pci-8253-8256-user-manual/67e0c0129b378f3ec6d8e50d09d9f58e8498f61b0d1d2f9069b7fbcdc6765ae7.jpg)

When N = 13, (R = 32)

$$
\begin{array}{l} \text { Linear   resolution } = \frac {\text { Screw   pitch }}{\text { Encoder   resolution }} \times \frac {\text { Encoder   resolution }}{\text { User   define   res. }} (\mathrm{R}) \\ = \frac {1 0 \mathrm{mm}}{2 6 2 1 4 4} \times 3 2 = 0. 0 0 1 2 2 1 \mathrm{mm/pulse} \\ = \frac {1 0 , 0 0 0 \mu \mathrm{m}}{2 6 2 1 4 4} \times 3 2 = 1. 2 2 1 \mu \mathrm{m/pulse} \\ \end{array}
$$

Distance: 1,000 pulse=1,000 pulse X 1.221 μm/pulse=1221 μm

Velocity:1,000 pps =1,000 pulse/sec X 1.221 μm/pulse

$$
= 1 2 2 1 \mu \mathrm{m} / \mathrm{sec}.
$$

# Programming flow example:

![The diagram is organized into two columns with the headers 'Flow' and 'Corresponding functions'.\n\n**Flow Column:**\n*   **Block 1:** Labeled 'Initial cards'.\n    *   **Corresponding Function:** 'APS_initial()'\n    *   **Connection:** A thick black arrow points downward from this block to the next block.\n\n*   **Block 2:** Labeled 'Set servo resolution'.\n    *   **Corresponding Function:** 'APS_set_axis_param()'\n    *   **Connection:** A thick black arrow points downward from this block to the final block.\n\n*   **Block 3:** Labeled 'Motion Control'.\n    *   **Corresponding Functions:** 'APS_set_servo_on()', 'APS_velocity_move()', and '...' (ellipsis).](.pci-8253-8256-user-manual/3b36f0e5763d8f7311395149d645d122e2a5112e30e5261ca3987f547b4fa087.jpg)

# 4.11 DSP-based Closed-loop Control

# 4.11.1 Closed-loop Control

In order to solve open loop gantry problem, the PCI-8253/6 can realize the gantry control with close-loop system. The control architecture is shown as below:

![This block diagram illustrates a control system combining proportional-integral-derivative (PID) control with feedforward compensation.\n\n**Labeled Blocks and Signals:**\n*   **Input:** `(d/dt) P_command`\n*   **Blocks:** `Kff`, `PID`\n*   **Output:** `V_command` (annotated with `(To motor amplifier)`)\n*   **Feedback Signal:** `(d/dt) P_feedback` (annotated with `(from motor encoder)`)\n\n**Connections:**\n1.  The input signal `(d/dt) P_command` splits into two paths:\n    *   One path enters the positive (+) terminal of the first summation point.\n    *   The other path enters the `Kff` block.\n2.  The feedback signal `(d/dt) P_feedback` enters the negative (-) terminal of the first summation point.\n3.  The output of the first summation point feeds into the `PID` block.\n4.  The outputs of both the `Kff` block and the `PID` block feed into the positive (+) terminals of a second summation point.\n5.  The output of the second summation point is the final command signal `V_command`.](.pci-8253-8256-user-manual/bfaba6330967c87fe9a6c3cda6b81e8e7bc5de71b0638b63e2eca0c6ad36a646.jpg)

 Pcommand: Position command
 Pfeedback: Position feedback
 d/dt: Differential operator
 Kff: Velocity feed forward gain (0 - 100%)
 PID: Controller gains contents Kp, Kd, Ki

The closed-loop control is relating to any system in which the command output was measured and compared to the feedback input. The command output is adjusted to reach the desired condition.

In motion control, the closed-loop control means a system utilizing an incremental encoder to generate correction signals in relation to desired parameters.

Servo systems are the most prevalent example of closed loop control. In a typical servo system, a motion operation is executed after the user issued a move command to the servo controller. The controller will calculate a velocity profile matching previously defined user trajectory which included the maximum velocity, acceleration, and deceleration parameters, etc. The controller applies a position/velocity command to the servo amplifier. Based on feedback from an incremental encoder the servo controller calculates the following error (difference between the actual position and the calculated position). The following error value is used to the PID filter to adjust the magnitude of the position / velocity command to the amplifier.

The significant advantage of a closed-loop system is that based on the constant corrections by the PID filter of the command voltage that based on the measured following error. The PID filter to properly respond to a given following error which the servo must be tuned. Tuning a servo parameter is a process in which the PID filter gain values are defined so that the response of the servo system to a given following error meets the requirements of the machine designer. Compared to an open loop system, which does not require PID filter tuning, the requirement of tuning a servo makes the setup of a closed-loop system a more complicated.

# 4.11.2 PID Filter Plus Feed Forward Gain

Proportional-integral-derivative, or PID, control is the most common type of controller used in industry. Depending on the specific application, any of the three components of PID can be implemented alone or in combination with another.

A proportional controller is the simplest and easiest to understand. In a typical system using proportional control, a desired setting or setpoint is compared to the output feedback signal. Proportional control, however, has limitations. A proportional controller cannot achieve a zero steady-state error. Increasing the gain in the system can decrease the steady-state error somewhat. However, when the gain is too high, the system overcorrects and may cause instability. Because a proportional controller cannot reduce the steady-state error to zero, it is used primarily in processes where gain can be made sufficiently large to reduce steady-state error, while at the same time maintain stability.

# Proportional plus integral control (PI Controller)

In systems where the amount of error generated from a proportional controller cannot be tolerated, a technique is needed to respond to the steady-state error and drive it toward a smaller value, ideally zero. This technique is known as proportional plus integral, or PI, control.

A PI controller continuously adds up or integrates the error. An integrator by itself, with a constant input, would essentially provide an ever increasing output signal. However, used in conjunction with a proportional controller, as the error signal is integrated, the proportional control drives the error to a smaller value. It accomplishes the same effect as a large gain in a proportional controller without the adverse effect on stability. Thus, PI control is used in systems where the steady-state error must be reduced to smaller levels than with proportional control alone.

Because the integral section of the control operates within a specific reaction time, as the error signal approaches zero, the output from the proportional section goes to zero. However, because of the time constant, there could be a significant output from the integrator. This output causes the error to cross zero and create an error in the opposite direction. The error crossing zero produces overshoot which may cause instability. This tendency increases as the proportional gain increases and the integral reaction time or time constant is reduced.

A PI controller is used primarily in applications with frequent load disturbances and a minimum of setpoint changes. In practical applications using a PI controller, the proportional gain is set somewhat smaller than for a proportional-only control. The integral time constant is adjusted to provide either one overshoot or no overshoot.

# Proportional plus derivative control (PD Controller)

Integral control is added to decrease long term or steady-state error. However, the faster and larger the process error, the greater the overshoot becomes, and the longer it takes to settle to an acceptable level. To deal with fast response times and large errors, derivative control is added.

Derivative control reduces the amount of time required for the output to return to the setpoint. It also reduces initial overshoot and has a stabilizing effect by damping the overshoot or oscillation. This permits the proportional gain to be set at higher values than with proportional-only control, and improves response time to system disturbances.

Derivative control is always used with proportional or PI control because it isn't capable of maintaining the error signal under steady-state control. It is used in applications that have sudden and relatively large disturbances.

# PID controller

Each of the three above individual controllers has advantages. The proportional controller is the basic model. Increasing proportional gain to improve response produces instability. Integral control adds a complement which has a major effect on reducing long term errors. The derivative control has a major effect on transient disturbances when the proportional controller cannot respond fast enough.

The PID controller reduces steady-state error and responds rapidly to moves. Each has its own adjustment, and the various control adjustments interact.

Starting with the proportional control, gain is adjusted as high as possible to obtain adequate response to a change. When the integral component is added, the proportional gain must be reduced. If the integral reaction time constant is too fast (integral gain too large), it tends to become unstable. Adding the derivative component lets the proportional gain increase.

# Feed forward Gain

In applications where the controller must compute and react quickly, it may happen that the controller cannot drive the error to zero fast enough to maintain precise position control. To overcome this, another technique called feed forward gain is used. This is a predictive type of control. In a typical feedback control system with an inner velocity and an outer position-control loop, velocity and acceleration feed forward is added after the position loop to the velocity loop. Predictive control depends upon earlier conditions, thus the signal has to bypass the position loop. In other words, the setpoint is compared to the next step in the process rather than the output. High-speed servo positioning applications, such as some robotics and X-Y-Z positioning systems, make use of this technique.

# Tuning for an application

Tuning a controller refers to adjusting individual control parameters. This is first tested off-line with no load attached, then switched on-line with a load or the process running. The parameters of the PID are fine tuned to obtain the best response for the application. In a typical motion-control application with a velocity and position loop, the velocity-loop parameters must first be adjusted then the position-loop parameters.

If the gain is increased too much, the system becomes unstable and rings or oscillates. A motor typically produces an audible noise when the gain is set too high.

# Sampling window for PID tuning and profile observation

The following illustrations present the PID tuning procedure and show the performance after adjusted PID parameters. ADLINK offers the sampling windows to analysis the motion profile instantly. By using the sampling window to observe the profile behavior after the parameters of PID and feed forward gain was tuned.

![ADLINK\nPCI-8392\nCord ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCord ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nSampling PCI-8256 CodInfo 1\nDh1\n-756500\n-756500\n-630400\n-630400\n-504300\n-378200\n-378200\n-252100\n-252100\n-126000\n-126000\n-126000\n-126000\n-126000\n-126000\n-126000\n-126000\n-126000\n-126000\n-126000\n-126000\n-126000\nAuto\nAuto\nAuto\nAuto\nHigh/L\nScale Alignment\nScale Align To : OH 1\nOH 1 √ OH 2 CH 3 OH 4\nSampling Status : OK 1\nSelect Channel Sampling Setting Measure Value PID Setting\nCHANNEL 1 CHANNEL 2 CHANNEL 3 CHANNEL 4\nAxis 16 Axis 16 ASI 16 ASI 16 ASI 16 Start Sampling\nSAMP_CMD_VEL SAMP_FEK_VEL SAMP_CONTROL_CVR SAMP_MSTL_NSTP\nSelect Sampling Mode :\nSINGLE D Stop Sampling](.pci-8253-8256-user-manual/2aed1d711f815d4aaec32d2aaed1427bae25f31236b915f3f3b87ab0e0eaa96b.jpg)

# Operation instructions:

Block A: Vertical scale adjustment. The scale will be automatic adjusted when data is sampled. Users still can use the manual adjustment component to adjust the vertical scale and position. Users can also restore the automatic adjustment results by pressing Auto button. The unit of the channels will be displayed at bottom side too.

Block B: Scale alignment setting. Users can choose one channel which others will be aligned to. The aligned channels can be selected by check box of channels.

Block C: Sampling scope. Right click mouse button brings up measurement cursor. Users can use zoom in/out slider bar and shift slider bar to adjust the horizontal position and scale of the graph.

Block D, Tab1: Channel selections. There are four channels in the scope. Each channel can be chosen from any axes. Each channel’s signal source can be chosen from the pull-down menu. The sampling mode can be selected as single trigger or repeat trigger mode. The start and stop sampling buttons are in this area too.

![ADLINK\nPCI-8392\nCard ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nSampling PCI-8256 Gridx1\nCH1 CH2 CH3 CH4\n-756500 -756500 -1920 -6\n-630400 -630400 -1600 -5\n-504300 -504300 -1280 -4\n-378200 -378200 -960 -3\n-252100 -252100 -640 -2\n-126000 -126000 -320 -1\n0 -0 -0 -0 -0\n-126000 -126000 -320 -1\n-252100 -252100 -640 -2\n-378200 -378200 -960 -3\n-504300 -504300 -1280 -4\nAuto Auto Auto Auto\nUnit : Pulse Pulse mV High/Low\nScale Alignment\nScale Align To : CH 1\nCH1 CH2 CH3 CH4\nSampling Status : DK 1\nSelect Channel Sampling Setting Measure Value PID Setting\nDisplay CH\nDisplay CH Trigger Channel CH 1 Sampling Rate 1 0.400 ms / per Sample\nDisplay CH\nTrigger Edge Rising Trigger Level 20000 Pulse\nD\nIMCP2_20081219 IMCP2_20081222 Mmpn2 文件1 - Microsoft Word 下午 01:39](.pci-8253-8256-user-manual/d1b3e6f6b5ebc093cd67a3ade5a8b762de33137895b14c4a14feca893a286506.jpg)

Block D, Tab2: Trigger condition for sampling. Users can select active channels and trigger source channels. The trigger conditions are selected from rising or falling edge of the signal. In this area, users can also set the sampling rate, total sampled points, pre-triggered percentage and trigger level. The unit of trigger level will changed automatically by selected trigger channel.

![MotionControlFlow2\nFile View Insert Options Function About\nSingle Move Home Move Generation Copy Sampling 2D Operation Copying Dot Plotter Field Connect Field Environment Field Module\nADLINK\nPCI-8392\nCord ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCord ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nSampling PCI-0256 CordNo 1\nCH1 CH2 CH3 CH4\n-756500 -756500 -1920 -6\n-630400 -630400 -1600 -5\n-504300 -504300 -1280 -4\n-378200 -378200 -960 -3\n-252100 -252100 -640 -2\n-126000 -126000 -320 -1\n0 0 0 0 0\n-126000 -126000 -320 -1\n-252100 -252100 -640 -2\n-378200 -378200 -960 -3\n-504300 -504300 -1280 -4\nAuto Auto Auto Auto\nUnit: Pulse Pulse mV High/Low\nScale Alignment\nScale Align To: CH 1\nCH1 CH2 CH3 CH4\nSampling Status: OK 1\n18 ms/Div\nSelect Channel Sampling Setting Measure Value PID Setting\nTime Value\nLine A Value : 33 ms\nLine B Value : 139 ms\nLine B - A Value : 106 ms\nEnable Time Probe\nSampling Value\nSelect Probe Channel: Channel 1\nLine C Value :\nLine D Value :\nLine D - C Value :\nEnable Value Probe\nIsible All Prob](.pci-8253-8256-user-manual/b9aa84c8b455090029e250f3a08263297a55918f79d42cab84b0567b1c6e681d.jpg)

Block D, Tab3: Measuring cursor area. There are time probe cursor in vertical and value probe cursor in horizontal. It will display each cursor’s time or value and their subtraction value.

![ADLINK\nPCI-8392\nCard ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nSampling PCI-0256 Cx490-1\nOHI\n-756500\n-630400\n-504300\n-378200\n-252100\n-126000\n-126000\n-252100\n-378200\n-504300\n-504300\n-126000\n-320\n-320\n-640\n-960\n-640\n-320\n-320\n-960\n-320\n-12600\nAuto\nAuto\nAuto\nAuto\nUnit : Pulse\nPulse\nmV\nHigh/Low\nScale Alignment\nScale Align To : CH 1\nCH1 CH2 CH3 CH4\nSampling Status : DK 1\nSelect Channel Sampling Setting Measure Value PID Setting\nGAIN SETTING\nAxis 16 KP : 1500 KGY : 0 Error Pos : D\nKI : 0000 KPGTY : 0\nKD : 0\nSET KFF : 0 DENOMINATOR : 10000](.pci-8253-8256-user-manual/de9047cbd28af86e1b7ecdbc706ac20c6934d546824f084549788f110aaaeea1.jpg)

Block D, Tab4: PID setting area. Users can select one axis to tune the dynamic response. There are P, I, D and FF gain for one axis. If using gantry mode, there are two additional gains, KGTY and KGPTY for cross-coupling tuning. In this page, it also displays current error position for steady state reference and the parameter’s denominator. It means if KP=1500 and demoninator=10000, that means the actual KP in the control loop is 0.15.

# Tuning by Step Response

![MotorControlPcs2\nFile View Insert Options Function About\nDirect Document Auto/Board Pass Save Parts Single Move Home Move Implementation Currency Sampling 2D Operation Copying Chk Swelter Field Connect Field Adjustment Field Module\nADLINK PCI-8392\nCord ID 0 Motion HSL BusNo 0 PCI-8256 Card ID 1 Motion Axis16 ServoOn Axis17 ServoOn Axis18 Alarm Axis19 Alarm Axis20 Alarm Axis21 Alarm\nScale Alignment Scale Align To: CH1 OH1 OH2 CH3 CH4\nSampling Status: OK1\nSelect Channel Sampling Setting Measure Value PID Setting\nGAIN SETTING\nAxis 16 KP: 1500 KGY: 0 Error Pos: 10\nKI: 0 KPGTY: 0\nKD: 0\nKFF: 0 DENOMINATOR: 10000](.pci-8253-8256-user-manual/8e1c094bf76726a6015c0212b707900aaa81cfa3d06a89e087b86717af21dd95.jpg)

# Operation Instructions:

1. Create a step input speed profile by setting VS,VM,VE at the same value. Once they are at the same value, the motion kernel will ignore acceleration and deceleration time.
2. First, set a KP value to watch its response. Normally, we will increase the KP gradually until we see the oscillation response.
3. In the above example, we set KP to 1500 and see the oscillation response. You can see that the error position is not zero due to DC gain or other factor.

![ADLINK\nPCI-8392\nCard ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nAuto Auto Auto Auto\nUnit : Pulse Pulse mV High/Low\nScale Alignment\nScale Align To : CH 1\nCH1 CH2 CH3 CH4\nSampling Status : DK 1\nSelect Channel Sampling Setting Measure Value PID Setting\nGAIN SETTING\nAxis 16 KP : 1500\nKI : 0000\nKD : 0\nKFF : 0 DENOMINATOR : 10000\nError Pos 8](.pci-8253-8256-user-manual/8350606eab82b4b1347b3a93ad8a06f34cb9644aa73594bb098ae790670a74cf.jpg)

# Operation Instructions:

4. Try to add KI gain to eliminate DC gain which results in steady state error.
5. We set a value 8000 and the position error converges in an acceptable time.
6. But the response still has overshoot.

![ADLINK\nPCI-8392\nCord ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCord ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nSampling PCI-0256 CardKx 1\nO H1 O H2 O H3 O H4\n-1200000 -1200000 -3340 -6\n-100000 -1000000 -2780 -5\n-80000 -800000 -2220 -4\n-60000 -600000 -1670 -3\n-40000 -400000 -1110 -2\n-20000 -200000 -550 -1\n0 0 0 0 0\n-20000 -20000 -550 -1\n-40000 -40000 -1110 -2\n-60000 -60000 -1670 -3\n-80000 -80000 -2220 -4\nAuto Auto Auto Auto\nUnit : Pulse Pulse mV High/Low\nScale Alignment\nScale Align To : CH 1\nOH1 OH2 OH3 OH4\nSampling Status : OK 1\n24 ms/Div\nSelect Channel Sampling Setting Measure Value PID Setting\nGAIN SETTING\nAxis 16 KP: 1500 KGY: 0 Error Pos 8\nKI: 9000 KPGTY: 0\nKD: 1\nKFF: 9 DENOMINATOR: 1000](.pci-8253-8256-user-manual/3a34e24f691ddb1182589d374452ac82772546b26b6512f940c42eb840f6679c.jpg)

# Operation Instructions:

7. Try to suppress the overshoot by adding KD gain.
8. We add 1 in KD gain and see it does suppress the overshoot.
9. It becomes a less under-damped system and the steady state error remains kept at 0

![ADLINK\nPCI-8392\nCard ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nAuto Auto Auto Auto\nUnit: Pulse Pulse mV High/Low\nScale Alignment\nScale Align To: CH 1\nCH1 CH2 CH3 CH4\nSampling Status: DK 1\nSelect Channel Sampling Setting Measure Value PID Setting\nGAIN SETTING\nAxis 16 KP: 1500\nKI: 0000\nKD: 2\nSET KFF: 0 DENOMINATOR: 10000\nA B\n0 ms 120 ms 240 ms\nKGYT: 0 Error Pos](.pci-8253-8256-user-manual/17d1f213ddd8cd28a383ea7730afe7760bd45c3f9fddb38dc7cd23fa6bbac0d1.jpg)

# Operation Instructions:

10.Try to increase the KD value to 2 and it becomes an over-damped system

![MotionControlPin2\nFile View Insert Options Function About\nSingle Move Home Move Measurement Currency Sampling 2D Operation Copying Dot Document Field Comment Field Module\nADLINK\nPCI-8392\nCord ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCord ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nAuto Auto Auto Auto\n-1200000 -1200000 -3190 -6\n-1000000 -1000000 -2660 -5\n-800000 -800000 -2130 -4\n-600000 -600000 -1590 -3\n-400000 -400000 -1060 -2\n-200000 -200000 -530 -1\n-200000 -200000 -530 -1\n-400000 -400000 -1060 -2\n-600000 -600000 -1590 -3\n-800000 -800000 -2120 -4\nA B\nScale Alignment\nScale Align To : CH 1\nCH1 CH2 CH3 CH4\nSampling Status : OK 1\n24 ms/Div\nSelect Channel Sampling Setting Measure Value PID Setting\nGAIN SETTING\nAxis 16 KP: 1.000 KGTY: 0 Error Pos 14\nKI: 0 KPGTY: 0\nKD: 0\nKFF: 0 DENOMINATOR: 1.000](.pci-8253-8256-user-manual/dca819e3599232a1e05be623df6c3c4c358cc925c21058790c2ab6911009d07d.jpg)

# Operation Instructions:

11.Try the other method to tune the system. We will use Kff this time. It can increase the response time and reduce following error.
12.Set a smaller KP value to 1000 than previous method.
13.You can see the overshoot is smaller than before but the following error is bigger.

![ADLINK\nPCI-8392\nCord ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nAuto Auto Auto Auto\nUnit: Pulse Pulse mV High/Low\nScale Aligning\nScale Align To: CH 1\nCH1 CH2 CH3 CH4\nSampling Status: DK 1\nSelect Channel Sampling Setting Measure Value PID Setting\nGAIN SETTING\nAxis 16 KP: 000\nKI: 0\nKD: 0\nKFF: 0000 DENOMINATOR: 10000\nError Pos: 32](.pci-8253-8256-user-manual/a7381e60ceb638b59a6063b1c2e76ed888d624edb0ad282a01f4e110a66b924e.jpg)

# Operation Instructions:

14.Try to add Kff to 6000 and reduce KP. We can see the overshoot is smaller and following error is smaller too.

![MotionControlPin2\nFile View Insert Options Function About\nSingle Move Home Move Measurement Currency Sampling 2D Operation Copy Direct Field Comment Field Module\nADLINK\nPCI-8392\nCord ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCord ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nAuto Auto Auto Auto\n-1200000 -1200000 -3140 -6\n-100000 -1000000 -2620 -5\n-80000 -800000 -2090 -4\n-60000 -600000 -1570 -3\n-40000 -400000 -1040 -2\n-20000 -200000 -520 -1\n-20000 -200000 -520 -1\n-40000 -400000 -1040 -2\n-60000 -600000 -1570 -3\n-80000 -800000 -2090 -4\nA B\nScale Alignment\nScale Align To: DH 1\nCH1 CH2 CH3 CH4\nSampling Status: Waiting...\nSelect Channel Sampling Setting Measure Value PID Setting\nGAIN SETTING\nAxis 16 KP: 600 KGY: 0 Error Pos: 8\nKI: 6000 KPGTY: 0\nKD: 0\nKFF: 6000 DENOMINATOR: 10.0.0.1](.pci-8253-8256-user-manual/659da974e7481b967c5946246b752dfa7c845c998d3b0b0670a944f239277c76.jpg)

# Operation Instructions:

15.Now, try to eliminate the steady state error by adding KI gain to 6000.
16.You can see the error is 0 but the stable time is longer. That’s a trade-off.
17.Users can try more combinations to fit their key requirements

![MotionControlPin2\nFile View Insert Options Function About\nSingle Move Home Move Implementation Survey Sampling 2D Operation Copy Direct Field Comment Field Module\nADLINK\nPCI-8392\nCord ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCord ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nAuto Auto Auto\n-1206000 -1206000 -3090 -6\n-1005000 -1005000 -2570 -4\n-804000 -804000 -2060 -3\n-603000 -603000 -1540 -2\n-402000 -402000 -1030 -1\n-201000 -201000 -510 -1\n-201000 -201000 -510 -1\n-402000 -402000 -1030 -2\n-603000 -603000 -1540 -3\n-804000 -804000 -2060 -4\n-6\n-4\n-2\n-1\n-3\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4](.pci-8253-8256-user-manual/070ebb90ed0c9cf20d4aadf68a743f3ca83cbe344e2b3423754beef11eb9d682.jpg)

# Operation Instructions:

18.If we use the step response tuning results on a trapezoidal profile, we can get a good response too.

![MotionControlPc1\nFile View Insert Options Function About\nSingle Move Home Move Measurement Survey Sampling 2D Operation Copy Direct Field Comment Field Module\nADLINK\nPCI-8392\nCord ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCord ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nAuto Auto Auto Auto\n-1206000 -1206000 -3100 -6\n-1005000 -1005000 -2580 -5\n-804000 -804000 -2060 -4\n-603000 -603000 -1550 -3\n-402000 -402000 -1030 -2\n-201000 -201000 -510 -1\n-201000 -201000 -510 -1\n-402000 -402000 -1030 -2\n-603000 -603000 -1550 -3\n-804000 -804000 -2060 -4\n-804000 -804000 -2060\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4\n-4(fcel)Sampling PCI-8256 CndNk 1\nO H1 O H2 O H3 O H4\nUnit: Pulse Pulse mV High/Low\nScale Alignment\nScale Align To: CH 1\nCH1 CH2 CH3 CH4\nSampling Status: Waiting...\n32 ms/Div\nSelect Channel Sampling Setting Measure Value PID Setting\nGAIN SETTING\nAxis 16 KP: 600 KGY: 0 Error Pos 8\nKI: 6000 KPGTY: 0\nKD: 0 DENOMINATOR: 10.000\nSET](.pci-8253-8256-user-manual/8ec7a0082ad22014e0645b40993aaaba86acc4b7fea465a3e933eb58e1df3e19.jpg)

# Operation Instructions:

19.If we use the step response tuning results on a S-curve profile, we can get a good response too.

![ADLINK\nPCI-8392\nCard ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nSampling PCI-0256 Cnd400-1\nOri\n-1206000\n-1206000\n-3060\n-6\n-1005000\n-1005000\n-2550\n-5\n-804000\n-804000\n-2040\n-4\n-603000\n-603000\n-1530\n-3\n-402000\n-402000\n-1020\n-2\n-201000\n-201000\n-510\n-1\n-201000\n-201000\n-510\n-1\n-402000\n-402000\n-1020\n-2\n-603000\n-603000\n-1530\n-3\n-4\n-804000\n-804000\n-2040\n-4\nAuto\nAuto\nAuto\nAuto\nUnit : Pulse Pulse mV High/Low\nScale Alignment\nScale Align To : OH 1\nOH1 OH2 OH3 OH4\nSampling Status : Waiting...\nSelect Channel Sampling Setting Measure Value PID Setting\nGAIN SETTING\nAxis 16 KP : 1500 KG TY : 0 Error Pos : 8\nKI : 9999 KPGTY : 9999\nKD : 2\nSET KFF : 9 DENOMINATOR : 19.9999](.pci-8253-8256-user-manual/c1eec10f08834e8fd2c6d33a58a84f565a6344af591df065ff7e20483208e9b6.jpg)

# Operation Instructions:

20.We can also use PID step response tuning results for trapezoidal profile and S-curve profile.

![ADLINK\nPCI-8392\nCard ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nSampling PCI-8256 CustNo 1\nCH1 CH2 CH3 CH4\n-1206000 -1206000 -3060 -6\n-1005000 -1005000 -2550 -5\n-804000 -804000 -2040 -4\n-603000 -603000 -1530 -3\n-402000 -402000 -1020 -2\n-201000 -201000 -510 -1\n-201000 -201000 -510 -1\n-402000 -402000 -1020 -2\n-603000 -603000 -1530 -3\n-804000 -804000 -2040 -4\nAuto Auto Auto Auto\nUnit: Pulse Pulse mV High/Low\nScale Alignment\nScale Align To: CH 1\nCH1 CH2 CH3 CH4\nSampling Status: V/setting...\n32 ms/Div\nSelect Channel Sampling Setting Measure Value PID Setting\nGAIN SETTING\nAxis 16 KP: 1500 KGY: 0 Error Pos\nKI: 8000 KPGTY: 0\nKD: 2\nSET KFF: 9 DENOMINATOR: 10.0.0.0](.pci-8253-8256-user-manual/14cba55f9fbfed498e87744050679e33af76a3c7d33e3ff45102edc1ff4a7866.jpg)

# 4.11.3 Gantry Mode

Gantry function is defind from mechanical structure. Normally we have two motors controlling two parallel linear stages. These two motors must move similutaneously. The motion controller must control these two motors individually but synchronously. It looks like 1:1 electric gearing in master-slave motion and also looks like 1:1 interpolation motion of two axes. If using ASIC motion, you can use linear motion function of two axes to achieve this function at PC side. It is only for command pulse synchronization. Some applications, especially on unbalanced heavy loading conveyor system, it doesn’t work perfectly because of open loop architechture. Please see the following diagram:

![The diagram depicts a dual-axis control system.\n\n**Labeled Blocks and Components:**\n*   **Controller**\n*   **Driver X1**\n*   **Motor** (appears twice)\n*   **Moving** (appears twice, represented by a box with a double arrow)\n*   **Screw ball & guider** (appears twice)\n*   **Driver X2**\n*   **Pulses Cmd** (Input label)\n*   **Gantry X2** (Label at the bottom)\n\n**Connections and Flow:**\n1.  **Pulses Cmd** is the input to the **Controller**.\n2.  The **Controller** sends signals to both **Driver X1** and **Driver X2**.\n3.  **Top Path (X1):**\n    *   **Driver X1** drives the top **Motor**.\n    *   The top **Motor** connects to the top **Moving** block.\n    *   A feedback line connects the top **Moving** block back to the bottom input of **Driver X1**.\n    *   The top assembly features a **Screw ball & guider**.\n4.  **Bottom Path (X2):**\n    *   **Driver X2** drives the bottom **Motor**.\n    *   The bottom **Motor** connects to the bottom **Moving** block.\n    *   A feedback line connects the bottom **Moving** block back to the bottom input of **Driver X2**.\n    *   The bottom assembly features a **Screw ball & guider**.\n5.  The text **Gantry X2** labels the bottom section of the diagram.](.pci-8253-8256-user-manual/9bc25a714cf1b0f958edcaba9a2ed6bbc97e93664b0400fbcfe68c6fd232806a.jpg)

![| Line Type | X-axis Label     | Y-axis Value |\n|-----------|------------------|--------------|\n| Solid     | Pulse Command    | 0            |\n| Dashed    | Gantry X1        | 0            |](.pci-8253-8256-user-manual/85d8886e6f6a66ab9acc88f3a55e4ceb003587ee8ed00ea192b0bf62f69d9cb6.jpg)

If the gantry X1 and X2 has different loading and servo parameters, these two axes will not move simultaneously.

# 4.11.4 Closed-loop Gantry Mode

In order to solve open loop gantry problem, we use PCI-8392/ 8392H to make a closed loop system to control gantry stage. The control architechture is shown as below:

![The diagram depicts a 'DSP-based Controller' managing two parallel motion control systems.\n\n**Top Branch:**\n*   An arrow labeled 'Pulses Cmd' originates from the 'DSP-based Controller' and points to a vertical block labeled 'Driver X1'.\n*   A horizontal arrow connects 'Driver X1' to a block labeled 'Motor'.\n*   A horizontal arrow connects the 'Motor' to a long shaded bar labeled 'Screw ball & guider'.\n*   Above the 'Screw ball & guider' is a double-headed arrow labeled 'Moving'.\n*   Below the 'Screw ball & guider' is a box labeled 'Encoder' (indicated by an arrow).\n*   A feedback line labeled 'Pulses F/B' runs from the encoder area back to the 'DSP-based Controller'.\n\n**Bottom Branch:**\n*   An arrow originates from the 'DSP-based Controller' and points to a vertical block labeled 'Driver X2'.\n*   A horizontal arrow connects 'Driver X2' to a block labeled 'Motor'.\n*   A horizontal arrow connects the 'Motor' to a long shaded bar labeled 'Screw ball & guider'.\n*   Above the 'Screw ball & guider' is a double-headed arrow labeled 'Moving'.\n*   Below the 'Screw ball & guider' is a box labeled 'Encoder' (indicated by an arrow).\n*   A feedback line labeled 'Pulses F/B' runs from the encoder area back to the 'DSP-based Controller'.](.pci-8253-8256-user-manual/ce6330a49a8ebb5bf1eec751186b1a96beea70299c283393bea03bc3f7f0af4c.jpg)

Gantry X2
![Simple 2D coordinate system with X and Y axes (no labels or data points)](.pci-8253-8256-user-manual/6e63cd3260ac0bf3273ccef3785b4e66615d52879fc3ee56f8e8df20c35e8504.jpg)

Pulse Command
Gantry X1

Gantry X2
Error &lt; ( pre-defined range)
![Error ( (p)](.pci-8253-8256-user-manual/7dd41945d2f8422d97f07c02cf8c0a5f205e495a4ba2ad7ae1358fc6728c0308.jpg)

Sink Type

# 4.12 Position Compared and Trigger pulse ouput

# 4.12.1 Architecture

The PCI-8253/6 provides 2/4 trigger output channels where 1/2 of them is applied to high-speed position compared function and up to 1 MHz trigger pulse output. Other 1/2 channels are applied to low-speed application and support pulse output frequency up to 25 KHz at least. Inside the PCI-8253/6, all the position comparison and mapping tasks will be executed within the FPGA. The function block figures as following:

![**Labeled Blocks:**\n*   Manual Trigger (4)\n*   Timer (1)\n*   PWM (4)\n*   Mapping (4)\n*   TTL Differential Trigger Output (4)\n*   Encoder Channel (4)\n*   Counter (4)\n*   Comparator (4)\n*   FIFO (2)\n*   Linear Function (2)\n*   EZ Clr (2)\n*   EZ / ORG (2)\n*   Latch Register (4)\n\n**Connections:**\n*   **Manual Trigger (4)** connects to **PWM (4)**.\n*   **Timer (1)** connects to both **PWM (4)** and **Counter (4)**.\n*   **Encoder Channel (4)** connects to **Counter (4)**.\n*   **Counter (4)** connects to **Comparator (4)**.\n*   **PWM (4)** connects to **Mapping (4)**.\n*   **Mapping (4)** connects to **TTL Differential Trigger Output (4)**.\n*   **FIFO (2)** connects to **Comparator (4)**.\n*   **Linear Function (2)** connects to **Comparator (4)**.\n*   **Encoder Channel (4)** connects to **EZ Clr (2)** and **EZ / ORG (2)**.\n*   **Counter (4)** connects to **Latch Register (4)**.\n*   **Latch Register (4)** connects to **EZ Clr (2)** and **EZ / ORG (2)**.](.pci-8253-8256-user-manual/a9beb95924172dd377c5c04e0d8f8e49e90cc5c95b474475f838b18a763fea1a.jpg)

# 4.12.2 Encoder Channels

The FIFO will automatically load the comparing points into 32-bit comparator herein. User is able to set the comparing source as four encoder inputs and two timer channels. Due to mapping logic setting, the several combinations are provides for user to perform continuously trigger output function. The comparator will compare the data from counter and FIFO individually. Besides, the comparator is also able to compare the counter and comparing data which was produced by embedded Linear function. At very short time, user can retain and retrieve the current counter data by general purposed digital input. Linear function will automatically load the ext comparing points with fixed incremental value into 32-bit comparator. Like FIFO usage purpose, the new comparing points will be loaded once the previous comparing point is compared and pulse is triggered.

The PCI-8253/6 has a 32-bit binary up/down counter managing the present position feedback for whole dual channel.

It accepts 2 types of pulse inputs: (1). Dual pulse mode (CW/ CCW) (2) 90° phase shifted signals (AB phase mode). 90° phase shifted signals maybe multiplied by a factor of 1, 2 or 4. 4x AB phase mode is the most commonly used in incremental encoder inputs. For example, if a rotary encoder has 2000 pulses per phase (A or B phase), then the value read from the counter will be 8000 pulses per turn or –8000 pulses per turn depending on its rotating direction. The three options will be explained as follows.

# Dual Pulse Mode (CW/CCW Mode)

In this mode, EA is dedicated to count the pulses from external source and view it as clockwise direction (CW). EB is dedicated to count the pulses from external source and view it as counterclockwise direction (CCW). Simply put, EA counts up and EB counts down. User can decide the normal high or normal low for those two channels according to users’ devices. The following diagrams show the normal high and normal low cases individually.

![Normal High\nEA ———— CW\nEB ———— CCW\nPositive direction\nEA ———— CW\nEB ———— CCW\nNegative direction\nNormal Low\nEA ———— CW\nEB ———— CCW\nPositive direction\nEA ———— CW\nEB ———— CCW\nNegative direction](.pci-8253-8256-user-manual/ae4c1e4dcb076f187475b341b9561d733fd30fbac22db994b7f455b35fb9740e.jpg)

# 90° phase shifted signals (AB phase Mode)

In this mode, EA signal is a 90° phase leading or lagging to EB signal. “Lead” or “lag” of phase difference between two signals is caused by the turning direction of the motor. The up/down counters counts up when the phase of EA signal leads the phase of EB signal.

The following diagram shows the waveform.

![EA\nEB\nPositive direction\nEA\nEB](.pci-8253-8256-user-manual/aa2002a3427e2fb507d786715bf525dce4386182f43b759089126485bf38a060.jpg)

# 4.12.3 Index Input (EZ)

The PCI-8253/6 can clear the counter value as zero according to the edge of EZ signal. Homing by edge can let users meet best homing positioning purpose. Rising or falling edge is supported. The following diagram shows the case about the homing by rising edge.

![Based on the provided image, here is an accurate description of the diagram:\n\n**Labeled Blocks/Text:**\n*   **EZ**\n*   **Counter Operation**\n*   **Counter Reset**\n\n**Connections and Visual Elements:**\n*   There are two horizontal signal lines originating from the left side.\n    *   The top line, labeled **EZ**, shows a brief pulse (a high state followed by a low state) that aligns with a vertical dashed line.\n    *   The bottom line, labeled **Counter Operation**, is a straight horizontal line with an arrow pointing to the right.\n*   A vertical dashed line intersects both signal lines.\n*   An arrow from the box labeled **Counter Reset** points to the **Counter Operation** line specifically at the point where it intersects the vertical dashed line.](.pci-8253-8256-user-manual/b8d35b089dbf4ce68a773a6212adf6c711075c9367e54ba1838ae327039797bf.jpg)

# 4.12.4 Trigger Pulse Width

For different applications, the trigger pulse width requirement is different. As for this reason, the trigger pulse width can be adjustable. The available values are from 0.2us to 6.55ms. The maximum frequency is up to 1 MHz.

![Simple geometric shape with a double-headed arrow at the bottom (no text or symbols)](.pci-8253-8256-user-manual/b2186651ec0e2df5e5e24098ce9d25a7ec3105eb35c04f4ef59ce08d01dd6bd8.jpg)

Pulse Width

# 4.12.5 Linear Function

Linear function is used to generate a new comparing position point by a fixed incremental value linear function, ${ \sf D } = { \sf D } ^ { \prime } + { \sf A }$ . D means a calculated comparing position, the linear data. D’ means a previous comparing position. Every time the position was compared, hence a new data is calculated by adding ‘A’, the fixed incremental value. User can implement a continuous triggering function promptly by using linear function trigger.

There are 2 linear functions in PCI-8253/6 which supports to each PWM channel individually and each function is independent. It allows that linear function range overlapped is possible when system operating. Each linear function has its own comparator and the comparator could be linked to any one of two counters. By this features, users can produce many kinds of trigger modes. Please see the following diagrams:

![This flowchart describes a mapping of counter values to trigger outputs.\n\n**Blocks:**\n*   **Counter 0 (0 to 10.000)**: Located at the top left.\n*   **Linear Function 1 (10 to 3.000 step 10)**: Located below the counter.\n*   **Linear Function 2 (4.500 to 8.000 step 5)**: Located below Linear Function 1.\n*   **TRG1**: Located on the far right (appears twice, stacked vertically).\n\n**Connections:**\n*   A solid arrow labeled **Position Increasing** extends horizontally from left to right across the top of the diagram.\n*   A dashed arrow connects **Linear Function 1** to the upper **TRG1** block.\n*   A dashed arrow connects **Linear Function 2** to the lower **TRG1** block.](.pci-8253-8256-user-manual/b98db054801b473a311d1dbd4b8caffe2200d3441c2def20c62a45a8f4504a96.jpg)

Take two linear functions. Set the trigger interval and range as shown in the diagram. Set these two linear functions to counter0 and also comparator0. Set two linear functions to same trigger output pin TRG1. After these settings, when the counters start counting from 0 to 10,000, the trigger pins will output pulses respectively when the compare conditions are met inside linear function. From TRG1 pins, the trigger pulse output will be observed which was generated by linear function 1 and linear function 2 sequentially.

![Based on the provided image, here is the description of the flowchart:\n\n**Blocks:**\n*   **Counter 0** (0 to 10.000)\n*   **Linear Function 1** (10 to 3.000 step10)\n*   **TRG1**\n*   **Linear Function 2** (10 to 8.500 step 20)\n*   **TRG2**\n\n**Connections:**\n*   A solid horizontal arrow labeled **Position Increasing** extends to the right from the top area near the Counter block.\n*   A dashed horizontal arrow connects **Linear Function 1** to **TRG1**.\n*   A dashed horizontal arrow connects **Linear Function 2** to **TRG2**.](.pci-8253-8256-user-manual/384a7b858c5f8628d32d83bbc2ee8b4954d6ec58d7ca381f039934b87406497f.jpg)

For other case, when the counters start counting from 0 to 10,000, the trigger pins will output pulses respectively when the compare conditions are met inside linear function. This diagram is also able to present the overlap status of TRG1 output if makes TRG 2 instead of TRG1.

# 4.12.6 FIFO Function

FIFO is first-in-first-out storage. It is used for storing some preset position data for comparing. Every time the position is compared, a new data is retrieve from FIFO into comparator. This mechanism makes a the continuous triggering function.

Continuous triggering is fulfilled by linear function and FIFO. These two modes have their own comparators and can be used at the same time. The FIFO mode is usually used on random comparing data condition. Users can preset these data into FIFO and perform continuous triggering. In PCI-8253/6, there are two FIFO and have the capacity with 15 comparing data space. The FIFO support to anyone of four PWM channels.

# 4.12.7 PWM & Mapping function

PWM is used for adjusting pulse width of trigger. It could also be switched to a toggle mode. In this mode, the pulse level will change from low to high or high to low at every time when compared.

Mapping means eight trigger signals are not one-to-one mapping to three comparators. Trigger output channels are able to , For example, Comparator 1 could be linked to trigger channel 2. Comparator 2 could be linked to trigger channel 1 and 4. Comparator 2 and 4 could be linked to channel 3.

# 4.12.8 Position Comparison

The PCI-8253/6 provides position comparison functions for 2/4 channels. Once the counter reaches a preset value set by the user, the PCI-8253/6 will generate the trigger pulse. TRGx pins are for trigger pulse output channels which were designed by TTL differential output type. Therefore, the differential signal is able to reduce noise-effect efficiently while trigger pulse signal transmitting.

The comparing method is “equal”. Consequently, when the counter value is exactly equal to the pre-set value by users, the trigger pulse will be generated.

At the same time, the next comparing points saved in FIFO or linear function will automatically loaded into comparator. The following is an example for continuous trigger application.

Example: Using the continuous position comparison function.

In this application, the table is controlled by the motion command, and the CCD Camera is controlled by the position comparison output of the PCI-8253/6. An image of the moving object is easily obtained.

![v\nt\n1 2 3 4 5 6\nCCD\nCamera\nv v v v v\nw](.pci-8253-8256-user-manual/b907058e651c576347aaa8d7f375f4d72a6a4593c8fab9b2c48302c0f7f464cf.jpg)

Trigger Output \_

# 4.12.9 Position Latch

The position latch function is fulfilled by EZ/ORG signal. Once the EZ/ORG signal is active, the counter value of its latch channel will be saved to latched counter value at the same time. User can read the latch register any time.

# 4.12.10Timer Function

There is a timers on PCI-8253/6. The timer can be set to counters to simulate encoder inputs. It can also output to trigger pins directly. The timer is designed by a down-counter. Users must set a counter value into timer for down counting. Once the timer counter reaches zero, the timer will output a pulse to trigger pin or increase encoder counter by 1. The down counting speed is 100ns and the maximum counter value is 30-bit. User can set the timer interval from 100ns to 26ms.

# 5 MotionCreatorPro 2

After installing the hardware (Chapters 2 and 3), it is necessary to correctly configure all cards and double check the system before running. This chapter gives guidelines for establishing a control system and manually testing the cards to verify correct operation.

The MotionCreatorPro 2 software provides a simple yet powerful means to setup, configure, test, and debug a motion control system that uses 8253/6 cards.

Note that MotionCreatorPro2 is only available for Windows 2000/ XP with a screen resolution higher than 1024x768. Recommended screen resolution is 1024x768. It cannot be executed under the DOS environment.

# 5.1 Execute MotionCreatorPro 2

After installing the software drivers for the card in Windows 2000/ XP, the MotionCreatorPro 2 program can be located at &lt;chosen path &gt;\PCI-Motion\MotionCreatorPro2. To execute the program, double click on the executable file or use Start -> Program Files - > ADLINK -> PCI-8253/6 -> MotionCreatorPro 2.

# 5.2 About MotionCreatorPro 2

Before running MotionCreatorPro 2 please note that MotionCreatorPro 2 is a program written in VB.NET 2003, and is available only for Windows 2000/XP with a screen resolution higher than 1024x768. It cannot be run under DOS.

# 5.3 MotionCreatorPro 2 Forms

# 5.3.1 Main Menu

The main menu appears after running MotionCreatorPro 2. Refer to the following illustrations for a description of the available functions:

![Motion\nFile Edit View Insert Options Format\nAxis ID\nMaterial ID\nAccounting to Boot Mode\nLocal From Default Table\nLocal From Pitch\nCard ID 0\nMotion\nHSI Buy No 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOr\nAxis17 ServoOr\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nPCI-8253\nCard ID 2\nMotion\nAxis32 Alarm\nAxis33 Alarm\nAxis34 Alarm\nAxis Information\nADLINK\nTECHNOLOGY INC.\nBoard ID: 0\nAPS Library: 81212\nDriver: 81030\nDSP: 81031\nCPLD: 22\nCarrier Board: 2\nC\nD](.pci-8253-8256-user-manual/f3fbdeadd232c3cb63d4e8a2dd8b6df58ba5bdea5ff7ac4d984d02f49245cc2f.jpg)

A. Initial options for manual or auto ID and axis parameter loading mode. All the settings will be active the next time MotionCreatorPro 2 runs.
B. Icons for operation modes. Some will be active when a motion item in the tree view is selected and some will be active when an axis item is selected.

# Button Functions: Use these buttons to select function you want test.

 Configuration

<table><tr><td>Button</td><td>Function</td><td>Description</td></tr><tr><td>&lt;img src="images/f2c46b06495de6f99588756cca71fe24aa2c918892bdefad6a8639eb424416f4.jpg"/&gt;</td><td>SSCNET Connect</td><td>Connect axis. Please select baud rate at button right side and connect.* PCI-8392/8392H only</td></tr><tr><td>&lt;img src="images/8e3a3caca23db6cd101c2895c4e58c81bbd2277ad5056c4ec15de6bd683f466f.jpg"/&gt;</td><td>SSCNET Disconnect</td><td>Disconnect axis.* PCI-8392/8392H only</td></tr><tr><td>&lt;img src="images/cd32d677b332cdfc3c48a795cfcc040887287bd3dc2842c0ec1ee2d4544b1803.jpg"/&gt;</td><td>Axis/BoardConfiguration</td><td>Configure axis or board parameter.</td></tr><tr><td>&lt;img src="images/919111884ad336546aff18911bf9ce97f3030431c093b36c933fc5aeb6c2e067.jpg"/&gt;</td><td>SSCNET ServoParameterConfiguration</td><td>Configure parameter ofMITSUBINSHI J3 Servo Driver.* PCI-8392/8392H only</td></tr></table>

 Movement

<table><tr><td>Button</td><td>Function</td><td>Description</td></tr><tr><td>&lt;img src="images/9a836392f6ef75af9d40fc4dddad3ab890bc88074eda7d8251fe821a3345b55b.jpg"/&gt;</td><td>Single Movement</td><td>Single Axis movement (PTP), includes absolute and relative functions.</td></tr><tr><td>&lt;img src="images/30b29c72a51cc514de11ad4a89abb5cc4919bf7779f04a276d5dbf1cb5f32126.jpg"/&gt;</td><td>Home Return Movement</td><td>Home return movement.</td></tr><tr><td>&lt;img src="images/18c48d7a3ce43a85d9207dd62ec94f8122e055e72df29db1b555ac608e98d2bd.jpg"/&gt;</td><td>Interpolation</td><td>Interpolation function.</td></tr><tr><td>&lt;img src="images/2bea29c0e57865f911065147e55b5f8081a79296223433b2d3a85ea4e351f91c.jpg"/&gt;</td><td>Sampling</td><td>Sampling function, it can select source and drew its profile.</td></tr><tr><td>&lt;img src="images/fab466620bb5225c8f9b483322483e626eab881e514fe687e133f5b443f5dc8b.jpg"/&gt;</td><td>2D Movement</td><td>Execute 2D motion movement</td></tr></table>

#  HSL

<table><tr><td>Button</td><td>Function</td><td>Description</td></tr><tr><td>&lt;img src="images/c27a49b2790e1aede643ad589eb6c99a871e85b6d7e62dadf962e80437f8b668.jpg"/&gt;</td><td>HSL Connect</td><td>Connect HSL module. Please select the baud rate at the right side of the button and connect.* PCI-8392 only</td></tr><tr><td>&lt;img src="images/c6034597d492c0021ed27540f4aab4c01a91321f8c2c6411fa82c27ea8fcce72.jpg"/&gt;</td><td>HSL Disconnect</td><td>Disconnect HSL module.* PCI-8392 only</td></tr><tr><td>&lt;img src="images/e950ebe47d7328eb10603679784011cb446e45600242929c7b8eff922948ed2c.jpg"/&gt;</td><td>HSL Module Test</td><td>If connected correctly, select the module and use this to perform a module test.* PCI-8392 only</td></tr></table>

#  Others

<table><tr><td>Button</td><td>Function</td><td>Description</td></tr><tr><td>&lt;img src="images/f2e94876680d1c4f5afb4de07c741164e2a1d676d8491bb2df65f66a43e786fa.jpg"/&gt;</td><td>Gantry Motion</td><td>Execute gantry motion manipulation and tune the cross-coupling gain value.</td></tr><tr><td>&lt;img src="images/7d79c8749737cec443592d25d2d0b997defef6fde8a3e8f36de8bafe8548129b.jpg"/&gt;</td><td>Position Compare and Trigger Output</td><td>Fill the compared position and select comparison methods.</td></tr><tr><td>&lt;img src="images/0ee897eff37e737bf3ca54c2ae009b155336fe058f2f9ef4fdae403e380863c5.jpg"/&gt;</td><td>Monitor I/O Status</td><td>Includes DI/O, AI/O, and encoder counter values</td></tr></table>

C. Displays all motion boards found by MotionCreatorPro 2. The tree view can display both motion axes and field bus I/O.

<table><tr><td>ICON</td><td>Function</td><td>Description</td></tr><tr><td>(Z48K) (Yellow)</td><td>Warning</td><td>Servo Warning</td></tr><tr><td>(H36T) (Red)</td><td>Alarm</td><td>Servo Alarm</td></tr><tr><td>(S69V0) (Black)</td><td>Normal (Servo OFF)</td><td>No Error and servo off</td></tr><tr><td>(Z72K) (Green)</td><td>Normal (Servo ON)</td><td>No Error and servo on</td></tr></table>

D. Board information (software, firmware, and hardware versions).

# 5.3.2 Parameter Management

![MotionCreatedPro2\nFile View Insert Options Function About\nConnect Disconnect Axis/Board Para Servo Para Single Move Home Move Interpation Currency Sampling 2D Operation Copy/Trg Ctrl Discsler Field Connect Field Displacement Field Module\nADLINK\nPCI-8392\nCard ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nPCI-8253\nCard ID 2\nMotion\nAxis32 Alarm\nAxis33 Alarm\nAxis34 Alarm\nAxis Parameter PCI-8256 Card No.1\nBoard Configuration Axis Configuration Engineer Pass\nAxis No.15 Axis No.17 Axis No.18 Axis No.19 Axis No.20\nEL_LOGIC No Inverse No Inverse No Inverse No Inverse No Inve\nORG_LOGIC No Inverse No Inverse No Inverse No Inve\nEL_MODE Stop Immediately Stop Immediately Stop Immediately Stop Immediately Stop Imi\nMDM_CONDI Cmd Done Cmd Done Cmd Done Cmd Dc\nALM_LOGIC Low Active Low Active Low Active Low Act\nZSP_LOGIC High Active High Active High Active High Active High Ac\nEZ_LOGIC Low Active Low Active Low Active Low Act\nSTP_DEC 00000000 100000000 100000000 100000000 100000C\nHOME_MODE 0 0 0 0 0\nHOME_DIR Positive Dir. Positive Dir. Positive Dir. Positive\nHOME_CURVE -Curve T-Curve T-Curve T-Curve T-Curve\nHOME_ACC 25200000 225200000 225200000 22520000 225200C\nHOME_VS 0 0 0 0 0\nHOME_VM 25200 225200 225200 225200 225200\nHOME_VA 126 1126 1126 1126 1126\nHOME_EZA Disable Disable Disable Disable\nHOME_VO 12600 112600 112600 112600 112600\nCURVE -Curve T-Curve T-Curve T-Curve T-Curve\nSet To Card Load From Card Save To File Load From File\nSave To Flash Load From Flash Load Default\nB](.pci-8253-8256-user-manual/fffc30e643d89705af54ba9a8645a1f11d313c1e6d7c06beb0fcc0c4ab5ec764.jpg)

A. Parameter type display
B. Parameter values of all axes
C. Parameter management button to load/save parameters. Set to card must be used to activate this table.

Hint: Apply all parameters to other axes with the right mouse button.

# 5.3.3 Single Movement

![MotionCreatedPro2\nFile View Insert Options Function About\nConnect Disconnect Axis/Board Para Servo Para Single Move Home Move Interpital Cnentry Sampling 2D Optimization Crop/Tg Ctrl Disorder Field Connect Field Disconnect Field Module\nADLINK\nPCI-8392\nCard ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nPCI-8253\nCard ID 2\nMotion\nAxis32 Alarm\nAxis33 Alarm\nAxis34 Alarm\nSingle Movement PCI-8256 AxNo 16\nCommand: 32999\nPosition: 38999\nCmd Vel: 0\nFBK Vel: 0\nErr Pos: 0\nTargetPos: 32999\nSet Pos: 0\nMaxVel: 1000000\nRepeat Mode STOP\nDelayTime: 10\nABS MOVE REL MOVE\nPosition 1 Position Forward Backward\n1000000 0 40000 40000\nVEL MOVE JOG MOVE\nForward Backward Forward Backward\n200000 2000000 For Mode 5000\nRepeated List\nULM\nIPEL\nIMEL\nIORG\nIRZ\nINP\nIWARN\nCSP\nCSTP\nIVM\nWACC\nDEC\nBNSTP\nWASTP\nITLC\nPPS PDW PMV CIP LIP SMV HM NSTP DIR DEC ACC VM CSTP\nPAPB GTM GDCES STPDA ECES MELS PELS WANS ALMS EMGS SVONS ASTP JOG SLV\nABSL TLC SMEL SPEL ZSP WARN RDY SVON INP EZ EMG ORG MEL PEL ALM\nITLC IASTP NSTP IDEC IACC IVM ICSTP IZSP IWARN INP IEZ IORG IMEL IPEL IALM](.pci-8253-8256-user-manual/8e9f1979993395aea2811ff37902ef40e113f9046cd46b2bdaacf0229d589996.jpg)

A. Command, feedback, error and target position information. Command and feedback speed information. The minimum speed value may limit by speed calculation cycle time for low speed display.
B. Optional operation setting and button. The repeat mode check box can be used in relative and absolute mode. The axes will move between two positions or forward/backward distance cyclically. You can set the delay time between each move in unit of mini-second. The minimum value is 1 ms. The stop button is for relative, absolute and velocity modes.

C. Operation buttons and setting for 4 modes. You can switch operation between relative, absolute and velocity modes. The parameters of each mode must be set before operation, such as position 1 & 2, forward/backward distance and forward/backward velocity. Remember to set MaxVel before executing relative and absolute mode. When using jog mode, the other three modes will be disabled. There are two options for job modes. One is free and the other is step. The Jog parameters are set from axis parameter table. The step offset in step mode can be set in this area too.

D. Interrupt factor setting area

E. Motion status, I/O status and interrupt status display area.

# 5.3.4 Home Return

![ADLINK\nPCI-8392\nCard ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nPCI-8253\nCard ID 2\nMotion\nAxis32 Alarm\nAxis33 Alarm\nAxis34 Alarm\nHome Acc : 95200000\nHome Va : 0\nHomeVm : 225200\nHomeVo : 112600\nHomeVA : 1126\nSelect Mode : 0\nHome Direction : Positive\nHome EZA : Disable\nHome Curve : T-Curve\nCommand : 1\nFeedback : 1\nStart Stop\nPPS PDW PMV CIP LIP SMV HM NSTP DIR DEC ACC VM CSTP\nPAPB GTM GDCES STPOA ECES MELS PELS WANS ALMS EMGS SVONS ASTP JOG SLV\nABS LTC SMEL SPEL ZERD WARN RDY SVON INP EZ EMG ORG MEL PEL ALM\nSEL Case A VM ORU PRL\nSpeed VA\nSpeed Case B VA VO Some Position\nSpeed Case C VA VO Start Position VM\nSpeed Case D VA VO VM\nSpeed VO VDA](.pci-8253-8256-user-manual/178418b1b70069e1a4269758ccd50a025de235f3d4f966885a19ed8d8b588133.jpg)

A. Speed parameters of the homing profile. Please refer to the figure in “F”.
B. Mode settings of homing functions. Select one of the items inform the pull-down menu
C. Command and position information when homing. After homing completes, the command counter will be reset to zero at the edge of ORG ON when VA speed.
D. Operation button to start homing or stop/abort homing functions.
E. Motion and I/O status when homing
F. The timing chart of the homing function.

# 5.3.5 Interpolation

![MotionControlPro2\nFile View Insert Options Function About\nConnect Disconnect AutoBoard Para Servo Para Single Move Home Move Interpolation Currency Sampling 2D Operation CMPTrg DVA Decoder Field Connect Field Disconnection Field Module\nADLINK\nPCI-0392\nCard ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nPCI-8253\nCard ID 2\nMotion\nAxis32 Alarm\nAxis33 Alarm\nAxis34 Alarm\nLinear Interpolation Arc Interpolation\nY None Direction: Cvr\nArc Speed: 100000\nStart\nCenter X 100000\nCenter Y 100000\nArc Angle\n90\nNone\nABS\nStart\nStop\nC\nCommand X Command Y Command Z Command U\n0 Feedback X Feedback Y Feedback Z Feedback U Reset](.pci-8253-8256-user-manual/86a1c537411367ef618aa7bb2213ccba6ddc7a4220863a2223da713a8bfe95a8.jpg)

A. Interpolation axes selection and operation parameter settings, including center position in ARC mode or target position in Linear mode. The arc angle parameter can be larger than 360.
B. Absolute or relative interpolation mode selection. In ARC mode, it is about center position. In Linear mode, it is about target position.
C. Command and position information. In Arc mode, only two of them will be active.

# 5.3.6 General I/O Status

![ADLINK\nPCI-8392\nCard ID 0\nMotion\nHSL BusNo 0\nPCI-8256\nCard ID 1\nMotion\nAxis16 ServoOn\nAxis17 ServoOn\nAxis18 Alarm\nAxis19 Alarm\nAxis20 Alarm\nAxis21 Alarm\nPCI-8253\nCard ID 2\nMotion\nAxis32 Alarm\nAxis33 Alarm\nAxis34 Alarm\nSingle Move Home Move Interpolation Country Sampling 2D Optimization CmpTrg QUA Decoder Field Connect Field Disconnect Field Module\nA\nB\nC\nD\nDI	DO	Encoder Counter\n←7→	Encoder 0	39.993\n←6→	Encoder 1	2\n←5→	Encoder 2	0\n←4→	Encoder 3	0\n←3→	Encoder 4	0\n←2→	Encoder 5	0\nAI	0	1	2	00.049	00.044	00.111\n3	4	5	00.103	00.102	00.252\nAU\n-10 0	10-10 0	10-10 0	10\n-10 0	10-10 0	10-10 0	10](.pci-8253-8256-user-manual/0eda37e61ae112f9cc178269177f1dbfdb949fd055b43245804d91b559d6d773.jpg)

A. Digital I/O operation area. For the PCI-8253, there are only 0-3 bits available for operations.
B. Encoder counter display area in units of pulses
C. Analog input display area in units of voltage
D. Analog output operation area. You can drag the bar to make analog output. The output value will be displayed too.

# 5.3.7 Position Compare and Trigger Functions

![MotionControlPro2\nFile View Insert Options Function About\nConnect Disconnect AutoBoard Para Servo Para Single Move Home Move Interpolation Currency Sampling 2D Operation CMPTrg DVA Decoder Field Connect Field Disconnect Field Module\nADLINK\nPCI-8392 Card ID 0 Motion HSL BusNo 0 PCI-8256 Card ID 1 Motion Axis16 ServoOn Axis17 ServoOn Axis18 Alarm Axis19 Alarm Axis20 Alarm Axis21 Alarm PCI-8253 Card ID 2 Motion Axis32 Alarm Axis33 Alarm Axis34 Alarm\nA Compare Trigger PCI-8256 Card No 1\nInput Counter\nTRG CH0 Encoder 0\nTRG CH1 Encoder 1\nTRG CH2 Encoder 2\nTRG CH3 Encoder 4\nTrigger Count Reset Manual\nB\nTrigger Parameter Compare Setting Table Compare Timer Trigger\nTRG CH0 TRG CH1 TRG CH2 TRG CH3\nCompare Source LOMP0 LOMP0 LOMP1 TOMP1\nPulse Width 0 0 0 0\nPulse Ctg Pulse + Not Inverse Pulse + Not Inverse Pulse + Not Inverse Pulse + Not Inverse\nSet To Card Load From Card E\nC\nD](.pci-8253-8256-user-manual/69c35aee7014b73ada2efa5f8f981221f444620e1650afd354502b20a3c557eb.jpg)

A. Input counter selection for each trigger pin
B. The total triggered counts
C. Reset: reset triggered counts value. Manual: manual trigger output when button is pressed.
D. Trigger parameter table settings
E. After the parameters are modified in the table above, press the set to card button to activate them. You can press load from card to above table too.

Hint: Any operation mode such as single axes for multi-axis operations can be used for input counter counting for testing trigger counts.
[🔗 Link to the original document](.pci-8253-8256-user-manual/pci-8253-8256-user-manual.pdf)
