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.input_voltage | Object defining the general-purpose I/O input voltage range in Volts (e.g., { min: -24, max: 24 }). |
io.output_voltage | Object defining the general-purpose I/O output voltage range in Volts (e.g., { min: 0, max: 24 }). |
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[] | Array of USB port objects. Each object typically contains: |
.type | Type of USB port (e.g., "3.0"). |
.count | Number of available USB ports of this type. |
ethernet[] | Array of Ethernet interface objects. Each object typically contains: |
.type | Type of Ethernet interface (e.g., "100BASE-T"). |
.count | Number of available Ethernet ports of this type. |
communication[] | Array of communication interface objects. Each object typically contains: |
.type | Type of interface (e.g., "can", "rs232", "rs485", "i2c", "spi", "uart"). |
.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., 10). |
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., "LCD"). |
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 | Type of HMI input (e.g., "rotary,push"). |
hmi.speaker.count | Number of HMI speaker elements. |
hmi.speaker.type | Type of HMI speaker (e.g., "buzzer"). |
Example Capability Structure for AT1032S
Below is an example of the capabilities object returned for the AT1032S:
- NodeJS
- Python
{
name: 'AT1032S',
serial_number: '12345678',
io: {
count: 32,
input_voltage: { min: -24, max: 24 },
output_voltage: { min: 0, max: 24 }
},
relays: { count: 8, max_current: 2, max_voltage: 60, on_resistance: 0.2 },
usb_ports: [ { type: '3.0', count: 2 } ],
ethernet: [ { type: '100BASE-T', count: 1 } ],
communication: [
{ type: 'can', count: 1 },
{ type: 'rs232', count: 2 },
{ type: 'rs485', count: 2 },
{ type: 'i2c', count: 2 },
{ type: 'spi', count: 2 },
{ type: 'uart', count: 2 }
],
power_supply: {
count: 1,
output_voltage: { min: 1.5, max: 24 },
current: { max: 10 }
},
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: 'LCD', size: [Object] },
input: { count: 1, type: 'rotary,push' },
speaker: { count: 1, type: 'buzzer' }
}
}
{
name: 'AT1032S',
serial_number: '12345678',
io: {
count: 32,
input_voltage: { min: -24, max: 24 },
output_voltage: { min: 0, max: 24 }
},
relays: { count: 8, max_current: 2, max_voltage: 60, on_resistance: 0.2 },
usb_ports: [ { type: '3.0', count: 2 } ],
ethernet: [ { type: '100BASE-T', count: 1 } ],
communication: [
{ type: 'can', count: 1 },
{ type: 'rs232', count: 2 },
{ type: 'rs485', count: 2 },
{ type: 'i2c', count: 2 },
{ type: 'spi', count: 2 },
{ type: 'uart', count: 2 }
],
power_supply: {
count: 1,
output_voltage: { min: 1.5, max: 24 },
current: { max: 10 }
},
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: 'LCD', size: [Object] },
input: { count: 1, type: 'rotary,push' },
speaker: { count: 1, type: 'buzzer' }
}
}
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);
from ikalogic_at1000 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.