In applications such as industrial process control, servo drive, sensor simulation, and testing equipment calibration, high-precision, multi-channel isolated analog output is a key link in building reliable systems. The ADLINK PCI-6308 series isolated analog output card (including PCI-6308V, PCI-6308A, and PCI-6304V) provides 12 bit resolution, up to 8-channel voltage or current output, and is equipped with 3750Vrms isolation protection, which can effectively block on-site interference and common mode voltage, ensuring host safety. Among them, PCI-6308A integrates 8 voltage current converters, which can be software switched between 0~20mA, 4~20mA, and 5~25mA outputs, meeting the requirements of transmitter simulation and actuator driving. This article will systematically explain the deployment and programming points of the PCI-6308 series from hardware selection, jumper configuration, register programming to software development library applications, helping engineers quickly build high reliability analog output systems.
Product Family and Core Features
The PCI-6308 series includes three models:
PCI-6308V: 8-channel voltage output (± 10V, 0-10V or user-defined), suitable for general voltage type actuator control.
PCI-6308A: 8-channel voltage output+8-channel current output (0~20mA/4~20mA/5~25mA), implemented through an onboard XTR110 converter, with voltage and current channels corresponding one-to-one, suitable for driving current type instruments or valves.
PCI-6304V: 4-channel voltage output, simplified version, suitable for scenarios with low channel requirements.
All models offer:
4-channel isolated digital input (2500Vrms, withstand voltage 34V)
4-channel isolated digital output (open collector electrode, 50mA/35V)
Onboard DC-DC isolated power supply, capable of providing ± 15V (200mA) auxiliary power for external sensors
Half length PCI size, supporting+3.3V and+5V PCI buses (starting from 0A5 version)
Power on reset output to zero (0V/0mA) to ensure safe startup
The isolation design completely separates the PC ground from the on-site equipment, greatly improving anti-interference ability and suitable for harsh industrial environments.
Hardware installation and jumper configuration
2.1 Unpacking and Anti static Treatment
PCI-6308 is an electrostatic sensitive device. Disassembly and installation must be carried out on an anti-static workbench, and a grounded wrist strap must be worn. Check for physical damage to the board and confirm that all accessories (board, CD, manual) are complete.
2.2 Jumper settings
JP1~JP12 jumpers are distributed on the board to configure the output range and reference voltage source of each channel.
Jumper group function
JP1~JP8 correspond to CHO~CH7 respectively, set the output mode (bipolar or unipolar)
Mode switching of JP9~JP10 grouping settings (JP9 controls CHO~CH3, JP10 controls CH4~CH7)
JP11~JP12 Select reference voltage source (internal 10V or external input)
Three typical configurations:
± 10V Bipolar Output (default): JP1~JP8 are placed in 1-2 (Bipolar), JP9/JP10 are placed in 1-2, JP11/JP12 are placed in 1-2 (internal reference).
0~10V unipolar output: JP1~JP8 are placed in 2-3 (Unipolar), JP9/JP10 are placed in 2-3, and the reference is still internal.
0~Vuser custom output: JP1~JP8 are placed in 2-3, JP9/JP10 are placed in 2-3, JP11/JP12 are placed in 2-3 (external reference), and an external reference voltage (within 0~10V) is connected from Pin6 of CN1.
The jumper setting needs to be operated under power-off and takes effect after power on.
2.3 Inserting into PCI slot
Select any available PCI slot, insert the board smoothly, ensure that the gold fingers are fully in contact, and secure the baffle with screws. After the system is turned on, Windows Plug and Play will recognize the new device and follow the prompts to install the driver (using the ADLINK All in One CD).
2.4 External connector (CN1, DB-37 female head)
Pin definitions can be found in the manual, and key signals include:
V0-V7: Voltage output
A0~A7: Current output (only PCI-6308A)
ExtVref: External reference voltage input
± 15V: Isolated auxiliary power output (can supply power to external transmitters)
DI0~DI3: Digital input
DO0~DO3: Digital output
AGND, DIGND, DOGND: Grounds for each circuit
Recommend using ADLINK matching terminal board (ACLD-9137/9188 or DIN-37D) to simplify wiring.
Register Mapping and Low Level Programming
PCI-6308 adopts PCI-9052 bridge chip, and the system BIOS automatically assigns I/O base addresses. The base address can be read by offsetting the PCI configuration space by 18h. The onboard registers are all 16 bits, and the address offsets are as follows:
Offset (hexadecimal) write operation read operation
0x00~0x0E DA channel 3~0~7~4 data DA transmission status (only 0x00)
0x10~0x3E Reserved Reserved
0x40 digital output digital input (including DO read back)
3.1 DA output register (offset 0x00~0x0E)
Each channel occupies 2 bytes and writes the analog value corresponding to 12 bits of data (0~4095). Note that the data format is unsigned binary and corresponds to the output range:
± 10V mode: 0 → -10V, 2048 → 0V, 4095 →+9.9997V
0~10V mode: 0 → 0V, 4095 →+9.9997V
External reference mode: 0 → 0V, 4095 → Vref
3.2 DA sending status register (read-only, offset from D0 bit of 0x00)
Due to the serial loading of DAC, each write requires approximately 13.96 μ s of conversion time. Before writing new data to any channel, this bit should be read. If it is 1, it indicates that it is being sent and needs to wait until 0 to avoid data conflicts. This check has been encapsulated in the software library.
3.3 Digital I/O Register (offset 0x40)
When writing operations, the lower 4 bits (D0~D3) control DO0~DO3, and the higher 4 bits are ignored. When performing a read operation, the low 4 bits will read back the current DO state, and the high 4 bits (D4~D7) will be the real-time levels of DI0~DI3.
3.4 Current output mode control (PCI-6308A only)
The current output is controlled by the corresponding voltage channel, and the output range is set by software and implemented by the onboard XTR110. Three modes are provided:
0~20mA (Input 0~10V corresponds to 0~20mA)
5~25mA (Input 0~10V corresponds to 5~25mA)
4~20mA (Input 0~10V corresponds to 4~20mA)
The mode setting is achieved by writing control words to specific registers, and it is recommended to use the official function library.

Software Library and Programming Interface
ADLINK provides various development support:
DOS library (Borland C/Microsoft C)
Windows 95 DLL
PCIS-DASK (Windows 98/NT/2000/XP Unified Driver)
Linux(PCIS-DASK/X)
And advanced interfaces such as LabVIEW, VEE, ActiveX, OPC, etc
4.1 Introduction to Core Functions (Taking Windows DLL as an Example)
All function names are distinguished by the W_ prefix to distinguish Windows versions, and the header file Acl_pci. h defines types and constants.
4.1.1 Initialization and Reset
W_6308Initialize (U16 * existCards, PCI-INFO * pciInfo): Scan the number of cards and return card information, which must be called first.
W_6308_Software2Reset (U16 cardNo): Reset the digital I/O and DAC states, and output to zero.
4.1.2 Single channel DA output
W_6308_DA(U16 cardNo, U16 chn, I16 DAData):
CardNo: Board card number (starting from 0)
chn:0~7
DAData:0~4095
Internal automatic waiting for DA status to be ready, returning an error code.
4.1.3 Synchronized multi-channel output
W-6308_CA_0,3() and W-6308_CA_4_7() update CHO-3 or CH4-7 simultaneously to achieve synchronous output, suitable for multi axis linkage.
4.1.4 DA Status Query
W_6308_Set_date (U16 cardNo) returns whether the current state is busy (1 busy, 0 idle). Advanced users can self poll for optimization.
4.1.5 Digital Input/Output
W-6308-DI (U16 cardNo, U16 * DIData): Read 4-digit DI and store it in the lower 4 bits.
W-6308-DO (U16 cardNo, U16 DOData): Output the lower 4 bits to DO.
4.1.6 Current Range Control (PCI-6308A)
W_6308_I2V_Control(U16 cardNo, U16 ctrl):
Ctrl can take I2 to 20mA, I2 to 20mA, I2 to 25mA (macros defined in the header file).
This setting globally affects all 8 current channels and needs to be configured before output.
4.2 Programming Process Example
c
#include <Acl_pci.h>
U16 cardNo, existCards;
PCI_INFO pciInfo;
U16 daData;
// 1. initialization
W_6308_Initial(&existCards, &pciInfo);
if (existCards == 0) return;
cardNo = 0; //Use the first card
// 2. Configure current mode (PCI-6308A)
W_6308_I2V_Control(cardNo, I_0to20mA);
// 3. Output voltage 0~10V corresponds to 0~20mA (CH0)
daData = 2048; //Corresponding to 10V * 0.5? Actual needs to be calculated according to the formula
W_6308_DA(cardNo, 0, daData);
// 4. Synchronize output of CHO~CH3
W_6308_DA_0_3(cardNo, 1024, 2048, 3072, 4095);
// 5. Digital Output
W_6308_DO(cardNo, 0x0F); //All DO ON
// 6. Read DI
U16 diVal;
W_6308_DI(cardNo, &diVal);
4.3 Advanced Application Tips
Multi card support: existCards returns the number of cards, and the pciInfo structure contains information such as base addresses, which can distinguish between multiple cards.
Real time performance: Single channel updates take about 14 μ s, and polling status consumes CPU. Timer interrupt mode can be selected for batch updates.
Output voltage accuracy: Influenced by internal reference voltage (10V ± 0.1%) and resistance network, software correction or external reference calibration can be performed.
Application scenarios and wiring examples
5.1 Analog output control frequency converter
Use PCI-6308V output to control the frequency of the frequency converter from 0 to 10V, isolate the output to avoid grounding loops. Wiring: V0 connected to frequency converter AI+, AGND connected to AI -. Set the jumper to 0~10V mode.
5.2 4~20mA transmitter simulation
PCI-6308A can simulate a two-wire transmitter output of 4-20mA, used for PLC or DCS channel testing. Connect the current output A0 in series with a 24V power supply and load (such as measuring voltage with a 250 Ω resistor), set the mode to 4~20mA, and output 0~10V corresponding to 4~20mA.
5.3 Multi channel synchronous servo control
Using the synchronous output function _6308_CA_0_3 to simultaneously update 4 channels, reducing phase difference, suitable for multi axis motion platforms.
5.4 Isolated Digital I/O Monitoring
DI can be connected to limit switches or buttons (voltage 3.2~34V), DO can drive small relays or LED indicator lights (requiring external current limiting resistors and pull-up power supply).
Common problems and troubleshooting
Possible causes and solutions for the phenomenon
The board cannot recognize poor contact in the PCI slot; Insufficient power supply; Driver not installed and unplugged again; Check PCI power supply; Install PCIS-DASK driver
The voltage output is always set to 0V, and the jumper is set incorrectly; DA data not written; Status check failed. Check the polarity of JP1~JP8; Call _6308_Set_date to ensure it is idle; Reset the board card
The current output remains unchanged and is not set to _6308_S2V_Control; XTR110 insufficient power supply, set the correct mode; Check if the+12V power supply on the board is sufficient (530mA required for full channel 25mA)
Digital output cannot drive load. Open collector electrode requires external pull-up resistor and power supply with Vsource (maximum 24V) and appropriate resistor (such as 1k Ω)
Simulate output accuracy deviation with internal reference source drift; Unstable external reference using high-precision external reference voltage; Software Calibration Table
System blue screen or crash PCI interrupt conflict; Repeated software initialization adjusts PCI interrupt in BIOS; Ensure that the program releases resources correctly
Maintenance and driver upgrade
Regularly check the connectors for oxidation or looseness, and it is recommended to use gold-plated terminals.
Software driver update: Visit the ADLINK official website to download the latest PCIS-DASK version, which supports the new operating system.
If you need to expand the number of channels, you can insert multiple PCI-6308 into the same chassis, each with an independent address, distinguished by cardNo.
