In the field of precision motion control and automation detection, the system has strict requirements for the high-speed pulse output, flexibility of interpolation algorithms, and real-time position triggering/locking. ADLINK's PCI-8164 (and its MPC-8164, PXI-8164 versions) is an advanced 4-axis motion control card based on PCL6045 ASIC, supporting up to 6.55 MPPS pulse output, 2-4 axis linear interpolation, 2-axis arc interpolation, circular interpolation with acceleration and deceleration curves, 13 return to origin modes, online speed/position changes, 4K FIFO automatic loading position comparison triggering, and hardware position locking functions. This article provides a complete deployment and development reference for motion control engineers, covering hardware installation, signal connection, motion mode principles, Motion Creator debugging tools, and function library programming.
Overview of Card Board and Hardware Installation
The PCI-8164 adopts a half length PCB design (185 × 106.68 mm) and is equipped with a PCL6045 motion control ASIC. It integrates a pulse generator, encoder interface, comparator, counter, and various mechanical switch interfaces. This series offers three bus versions:
PCI-8164: 32-bit PCI bus, Plug and Play, Supports up to 12 cards (48 axes)
MPC-8164: PC104 bus, suitable for embedded compact systems, up to 4 cards (16 axes)
PXI-8164: PXI bus, 3U Eurocard specification, supports PXI triggered bus synchronization
Core performance indicators:
Pulse output: 6.55 MPPS (programmable in OUT/DIR, CW/CCW, AB phase modes)
Encoder input: up to 3.2 MHz (CW/CCW or AB × 1), up to 6.5 MHz in AB × 4 mode
Counter: 28 bits (0~268435455 or ± 134217728)
Isolation: All I/O signals are optically isolated at 2500Vrms
Position comparison: 2-axis (axis 0/1) CMP output with 4K FIFO automatic loading
Position latch: 2-axis (axis 2/3) LTC input
Installation steps (PCI-8164):
Turn off the PC power, select an idle 32-bit PCI slot, insert and secure the card board.
Connect the CN2 main connector (100 pin SCSI-II) to the external terminal board.
Connect the CN1 external+24V power supply (with accompanying cable) to provide isolated power supply for I/O.
Set the EL limit logic type through the S1 dip switch (default ON is normally open).
Set the card number (0~15) through the S2 card ID switch, supporting multi card systems.
Select the pulse output type through J1~J8 jumper: default 1-2 short circuit is differential drive; Short circuiting 2-3 is an open set output.
MPC-8164 Special note: The base address (default 0x200) and IRQ (default IRQ5) need to be manually set through SW1, not plug and play.
Detailed explanation of signal connection and interface
CN2 is the main connector, which includes pulse output for all axes, encoder feedback, limit/origin/deceleration (SD/PCS), servo interface (INP/ALM/ERC/SVON/RDY), position comparison (CMP), and position latch (LTC).
2.1 Pulse output (OUT ±, DIR ±)
Two pairs of differential signals per axis, select the mode through software _8164_det_pls_outmode():
OUT/DIR mode (0~3): OUT output pulse, DIR level direction, adjustable rising/falling edge and DIR polarity
CW/CCW mode (4-5): OUT is the forward pulse, DIR is the reverse pulse
AB phase mode (6-7): OUT and DIR output pulse pairs with a phase difference of 90 °
Jumper settings: J1~J8 correspond to the DIR and OUT signals of each axis, with differential drive by default. When opening the output, it is necessary to short-circuit 2-3 pins and apply a current of ≤ 20mA.
2.2 Encoder feedback (EA ±, EB ±, EZ ±)
Three pairs of differential inputs, supporting CW/CCW or AB phase (1 ×/2 ×/4 ×). The input circuit requires a differential voltage of ≥ 3.5V and a driving current of ≥ 6mA. When outputting, an external pull-up resistor (0 Ω for+5V, 1.8k Ω for+12V, and 4.3k Ω for+24V) is required.
2.3 Mechanical switches (ORG, PEL/MEL, SD/PCS)
ORG: Origin signal, used for 13 return to origin modes.
PEL/MEL: Positive/negative limit, stop pulse and output ERC after triggering.
SD/PCS: Can be configured as deceleration signal (SD) or position change signal (PCS), selected through _8164_Sd_pin().
2.4 Servo interfaces (INP, ALM, ERC, SVON, RDY)
INP (In Place Signal): Can be configured as a motion completion condition.
ALM (Alarm): Can be configured to immediately stop or decelerate to stop.
ERC (bias reset): Automatically outputs (pulse width adjustable from 12 μ s to 104ms or level output) upon completion of zeroing, limit triggering, alarm or emergency stop.
SVON (servo enable output) and RDY (servo ready input) are universal I/O.
2.5 Position Comparison (CMP) and Position Latch (LTC)
CMP1/CMP2 (axis 0/1): Position comparison triggers output, supports single point comparison and 4K FIFO continuous comparison, pulse width of 40 μ s, used for camera triggering.
LTC3/LTC4 (axis 2/3): Position latch input, hardware captures instantaneous values of commands/feedback/errors/general counters, with extremely short latency.
2.6 Handwheel (CN3/CN4) and synchronous start stop (CN4/K1/K2)
PCI-8164 Handwheel: CN3 provides 4-axis handwheel input (PA/PB), supports AB phase (1 ×/2 ×/4 ×) or CW/CCW, with multiplier/divider settings.
PXI-8164 Handwheel: J4 provides differential handwheel input.
Synchronous start stop: CN4 (PCI) or K1/K2 are used for multi card synchronization, and the K2 of the previous card needs to be connected to the K1 of the next card.
PXI trigger bus: PXI-8164 supports mapping STA/STP/CEMG to PXI-TRG [5-7] to achieve chassis level synchronization.

Motion control mode and operating principle
PCI-8164 adopts PCL6045 ASIC, and all motion calculations are completed by hardware without occupying CPU resources.
3.1 Speed Curve
T-Curve: 1st order linear acceleration and deceleration, suitable for conventional positioning.
S-curve: 2nd order curve acceleration and deceleration to reduce mechanical impact, VSacc/VSdec parameters define the S-curve interval (0 represents pure S-curve).
3.2 Single axis positioning
Relative/Absolute: _8164_strt_tr_move() (relative trapezoid), _8164_strt_ta_move() (absolute trapezoid), _8164_strt_str_move() (relative S-curve), _8164_strt_sta_move() (absolute S-curve).
Speed mode: _8164_tv-mov() continues to output until _8164_std_stop() or _8164-emg_stop().
Acceleration time optimization: _8164_cerify_stpeed() calculates the minimum/maximum acceleration time at a given speed, and _8164_fix_stpeed_range() sets the overspeed value to achieve extremely short acceleration time (such as 1ms).
3.3 Multi axis interpolation
2-4 axis linear interpolation: Functions such as _8164_strt_tr_line2/3/4() specify axis and position arrays, and vector velocity is defined by StrVel/MaxVel. Supports trapezoids and S-curves.
2-axis arc interpolation:
Basic version: _8164_dart_r_ arc_ xy (relative), _8164_dart_ arc_ xy (absolute), only specifies speed and direction (CW/CCW), no acceleration or deceleration.
Version with acceleration and deceleration: _8164_dart_tr_arc_xy (relative trapezoid), etc., requires hardware version bit12=1 support, using axis 3 as the auxiliary axis.
Speed mode selection: _8164_det_axis_option() can switch to the "composite speed constant" mode to optimize the smoothness of the interpolation trajectory.
3.4 Continuous Motion (FIFO Architecture)
Implement seamless trajectory through three-level command caching (Pre-Register2 → Pre-Register1 → Register):
_Enable continuous mode for 8164_continuus_move (1).
Call the first three motion functions (auto fill cache).
Check the cache status by interrupting (bit2: Pre-Register2 empty) or polling _8164_check_comtinuous_fuffer().
Write the next command when the cache is empty, achieving infinite continuous trajectory.
_8164_continuus_move (0) ends the continuous mode.
3.5 Return to Origin (13 Modes)
Configure modes (0~12) through _8164_det_home_comfig(), including:
Only ORG triggers stop (mode 0)
After triggering ORG, wait for EZ signal to stop (modes 1/2/3)
Reverse search after reaching the limit (mode 6/7/8)
Equipped with automatic search function (_8164_ home_dearch())
Ez_comunt can specify the number of EZ signal counts (0~15). _Set 8164_det_fa_stpeed() to zero low speed.
3.6 Online speed/location changes
Speed change: _8164-v_change() To change the maximum speed during motion, it is necessary to first call _8164_fix_stpeed_range() to set the speed upper limit. Suitable for trapezoids and S-curves.
Position change: _8164_p_change() is only applicable to absolute positioning mode and can change the target position in real time (new targets must be outside the current deceleration distance).
3.7 Position Comparison and Trigger (4K FIFO)
The position comparison function of PCI-8164 is one of its core advantages, supporting continuous high-speed triggering:
Single point comparison: Set the comparison source (command/feedback counter), comparison method, and value for _8164_strigger_comperator(), and trigger the CMP output pulse.
FIFO continuous comparison (automatic loading):
_8164_fuild_compare_function() generates a comparison point list at equal intervals (Start → End, Interval)
Or _8164-build_compare_table() custom comparison point array
_8164_det_auto_compole (1) Enable FIFO mode
During the movement, CMP pulses are automatically output at each comparison point and the next point is loaded from the FIFO
Application scenario: Line scan camera triggered (34000 points/stroke, 6000 points/second)
Trigger type: Hardware version A2 supports single/continuous level output; A3 supports normal high/normal low.
3.8 Position Lock
_Set the LTC effective level to 8164_det_ltc_logic(), and read the latch value to capture command/feedback/error/general counter.
Motion Creator Debugging Tool
Motion Creator is a graphical configuration and debugging software based on Windows (with a resolution of ≥ 800 × 600), which greatly simplifies system verification.
4.1 Main menu and card information
Display all installed 8164 cards along with their card numbers and base addresses IRQ。
Support saving configuration to 8164.ini and 8164MC.ini, and load it in the user program through _8164_comfig-from_2().
4.2 Configuration Menu
Interface I/O: Configure the logic and response modes of ALM/INP/ERC/EL/ORG/EZ/SD/LTC.
Pulse&INT: Configure pulse output/input mode, shift ratio, and interrupt factor (Event/Error).
4.3 Operation menu
Real time display of command position, feedback position, position error, target position, and current speed.
Supports absolute/relative positioning, speed mode, handwheel mode, and zero return mode (13 types of diagrams).
Support trapezoidal/S-shaped curve selection, repetitive motion, and real-time display of speed curves.
Support online speed/position change debugging.
Configuration Save: After clicking "Save Config", the configuration is saved in the Windows system directory. The user program can call _8164_comfig-fromFILE ("8164. ini") to automatically complete all I/O logic settings.
Wiring example and servo drive connection
The manual provides various specialized terminal boards:
DIN-814M: Mitsubishi J2S series
DIN-814M-J3A: Mitsubishi J3A series
DIN-814P: Panasonic MINAS MSD Series
DIN-814PA: Panasonic MINAS A Series
DIN-814Y: Yaskawa Sigma II Series
Universal wiring (taking Panasonic as an example):
OUT+ → PULS+,OUT- → PULS-
DIR+ → SIGN+,DIR- → SIGN-
EA+/EA- → OA+/OA-,EB+/EB- → OB+/OB-
ALM, INP, RDY, SVON are connected according to servo pin definitions
External+24V connected to CN2's E24V and EGND
Debugging suggestions:
Use Motion Creator single axis testing to confirm pulse output and encoder feedback.
Conversion of speed unit: Encoder 2000 lines/revolution, 8000 pulses/revolution after 4th harmonic generation. If 3000 rpm, the maximum frequency=3000/60 × 8000=400000 pps.
Before returning to the origin, confirm the ORG logic and mode, and monitor the I/O status through _8164_get-io_status().
When triggered by position comparison, turn off other interrupt functions to avoid interfering with FIFO loading.
Common troubleshooting
Possible causes and solutions for the phenomenon
Motor does not rotate, pulse mode mismatch or jumper error check _8164_det_pls_outmode(); Confirm J1~J8 jumper wires
Encoder reading is abnormal, differential voltage is insufficient, or wiring is reversed to measure EA+/EA - differential ≥ 3.5V; use pls_logic to reverse
Stop the EL logic immediately if the limit setting does not match the actual situation. Check the S1 switch or _8164_del() setting
Return to origin failed ORG/EZ logic or mode configuration error check_8164_det_home_comfig(); Oscilloscope captures ORG signal
The arc is not circular, and the reasonable vector velocity or acceleration is not set. Use version with acceleration and deceleration
CMP has no output comparison source or FIFO is not set correctly. Confirm_8164_det_auto_compole (1); Check CMP trigger type
LTC without latch data LTC logic or latch source error check_8164_det_ltc_logic(); Using an oscilloscope to measure LTC pulses
Multi card synchronization failed due to K1/K2 connection error or duplicate card IDs. Cascade according to section 2.14; Ensure that each S2 card is unique
Insufficient acceleration time, speed does not match acceleration. Use _8164_cerify_stpeed() and _8164_fix_stpeed_range()
