± 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).