Device Capabilities
The AT1000 Series consists of multiple test sequencer devices, each with its own set of capabilities. Currently, the AT1032S is the only available model, but future models will be introduced with varying features. Understanding a device’s capabilities is essential for configuring test sequences effectively.
Retrieving Device Capabilities
Users can retrieve the capabilities of an AT1000 device by querying its specifications. Each device provides a structured set of attributes, defining its hardware limits and supported features.
Capability Structure
Every AT1000 device exposes a structured object containing the following fields:
Capability | Description |
---|---|
name | Device model name (e.g., "AT1032S"). |
serial_number | Unique serial identifier of the device. |
io.count | Number of available general-purpose I/O pins. |
io.output_voltage | Object defining the general-purpose I/O output voltage range in Volts (e.g., { min: 0, max: 25 } ). |
io.input_voltage | Object defining the general-purpose I/O input voltage range in Volts (e.g., { min: -25, max: 25 } ). |
relays.count | Number of available dry relay contacts. |
relays.max_current | Maximum current per relay contact in Amperes (e.g., 2.0 ). |
relays.max_voltage | Maximum voltage per relay contact in Volts (e.g., 60 ). |
relays.on_resistance | Typical on-resistance per relay contact in Ohms (e.g., 0.2 ). |
usb_ports.count | Number of available USB power ports. |
ethernet.count | Number of available Ethernet ports. |
ethernet.type | Type of Ethernet interface (e.g., "100base-T"). |
communication[] | Array of communication interface objects. Each object typically contains: |
.type | Type of interface (e.g., "I2C", "SPI", "UART"). |
.count | Number of available interfaces of this type. |
industrial[] | Array of industrial communication interface objects. Each object typically contains: |
.type | Type of interface (e.g., "CAN", "RS-232", "RS-485"). |
.count | Number of available interfaces of this type. |
power_supply.count | Number of programmable power supplies. |
power_supply.output_voltage | Object defining the programmable power supply output voltage range in Volts (e.g., { min: 1.5, max: 24 } ). |
power_supply.current.max | Maximum output current in Amperes for the programmable power supply (e.g., 2.0 ). |
current_measurement[] | Array of current measurement capability objects. Each object typically contains: |
.type | Type of current measurement (e.g., "low_precision", "high_precision"). |
.source | Source of the current measurement (e.g., "Power Supply", "USB 1"). |
.resolution | Resolution of the current measurement in Amperes. |
hmi.display.type | Type of HMI display (e.g., "OLED"). |
hmi.display.size | Object defining HMI display size in pixels (e.g., { width: 160, height: 80 } ). |
hmi.input.count | Number of HMI input elements. |
hmi.input.type | Array of HMI input types (e.g., ["rotary", "push"] ). |
hmi.audio.count | Number of HMI audio output elements. |
hmi.audio.type | Array of HMI audio output types (e.g., ["speaker"] ). |
Example Capability Structure for AT1032S
Below is an example of the capabilities object returned for the AT1032S:
- NodeJS
- Python
{
name: "AT1032S",
serial_number: "AT1032S-00123456",
io: {
count: 32,
output_voltage: { min: 0, max: 25 },
input_voltage: { min: -25, max: 25 }
},
relays: {
count: 8,
max_current: 2.0,
max_voltage: 60,
on_resistance: 0.2
},
usb_ports: {
count: 2
},
ethernet: {
count: 1,
type: "100base-T"
},
communication: {
{ type: "I2C", count: 2},
{ type: "SPI", count: 2},
{ type: "UART", count: 2}
},
industrial: [
{ type: "CAN", count: 1 },
{ type: "RS-232", count: 2 },
{ type: "RS-485", count: 2 }
],
power_supply: {
count: 1,
output_voltage: { min: 1.5, max: 24 },
current: { max: 2.0 }
},
current_measurement: {
{ type: "low_precision", source: "Power Supply", resolution: 0.01 },
{ type: "low_precision", source: "USB 1", resolution: 0.01 },
{ type: "low_precision", source: "USB 2", resolution: 0.01 },
{ type: "high_precision", source: "Relay 4", resolution: 0.001 }
},
hmi: {
display: {
type: "OLED",
size: { width: 160, height: 80 }
},
input: {
count: 1,
type: "rotary,push"
},
audio: {
count: 1,
type: "speaker"
}
}
}
{
"name": "AT1032S",
"serial_number": "AT1032S-00123456",
"io": {
"count": 32,
"output_voltage": { "min": 0, "max": 25 },
"input_voltage": { "min": -25, "max": 25 }
},
"relays": {
"count": 8,
"max_current": 2.0,
"max_voltage": 60,
"on_resistance": 0.2
},
"usb_ports": {
"count": 2
},
"ethernet": {
"count": 1,
"type": "100base-T"
},
"communication": [
{ "type": "I2C", "count": 2},
{ "type": "SPI", "count": 2},
{ "type": "UART", "count": 2}
],
"industrial": [
{ "type": "CAN", "count": 1 },
{ "type": "RS-232", "count": 2 },
{ "type": "RS-485", "count": 2 }
],
"power_supply": {
"count": 1,
"output_voltage": { "min": 1.5, "max": 24 },
"current": { "max": 2.0 }
},
}
"current_measurement": [
{ "type": "low_precision", "source": "Power Supply", "resolution": 0.01 },
{ "type": "low_precision", "source": "USB 1", "resolution": 0.01 },
{ "type": "low_precision", "source": "USB 2", "resolution": 0.01 },
{ "type": "high_precision", "source": "Relay 4", "resolution": 0.001 }
],
"hmi": {
"display": {
"type": "OLED",
"size": { "width": 160, "height": 80 }
},
"input": {
"count": 1,
"type": ["rotary","push"]
},
"audio": {
"count": 1,
"type": ["speaker"]
}
}
}
How to Query Capabilities in Code
Users can programmatically retrieve device capabilities using the API. Below are examples in both Node.js and Python.
- NodeJS
- Python
const at1000 = require("at1000-node");
let tester = at1000.open("AT1032S");
// Retrieve device capabilities
let capabilities = tester.get_capabilities();
console.log("Device Capabilities:", capabilities);
import at1000
tester = at1000.open("AT1032S")
# Retrieve device capabilities
capabilities = tester.get_capabilities()
print("Device Capabilities:", capabilities)
Why Checking Capabilities is Important
- Future-Proofing: New AT1000 models may have different specifications.
- Preventing Errors: Ensures your test sequence doesn’t exceed device limits.
- Optimizing Tests: Use the correct power supply, I/O, and voltage ranges for your DUT.
By retrieving device capabilities dynamically, users can write scripts that adapt to different AT1000 models without requiring hardcoded values.