Skip to content

Settings

Zaber devices have a number of settings that control or indicate various properties of the device. The library offers a way to read and write these settings.

Settings have two scopes, axis scope settings and device scope settings. Axis scope settings relate to properties specific to the axis, such as the current position of the axis or the acceleration rate of the axis, and are available under the @prop Settings property of an @class Axis class instance. Device scope settings relate to general properties of the device, such as the serial number or the voltage of the power supply, and are available under the @prop Settings property of a @class Device class instance.

Additionally, each setting may either be writable and readable, or only readable. For example, the setting for the maximum speed is readable and writable, while the setting indicating the current temperature of the driver is only readable.

There are settings that are non-volatile, such as the maximum motor current, and will persist if the device is power cycled. There are also volatile settings, such as the encoder count, that will be reset after a power cycle.

Axis settings

This example reads the temperature of the driver.

const temperature = await axis.settings.get('driver.temperature');

console.log('Driver temperature [°C]:', temperature);
temperature = axis.settings.get("driver.temperature")

print("Driver temperature [°C]:", temperature)
var temperature = axis.Settings.Get("driver.temperature");

Console.WriteLine("Driver temperature [°C]: {0}", temperature);
double temperature = axis.getSettings().get("driver.temperature");

System.out.println("Driver temperature [°C]: " + temperature);
temperature = axis.getSettings().get('driver.temperature');

fprintf('Driver temperature [°C]: %d.\n', temperature);
double temperature = axis.getSettings().get("driver.temperature");

std::cout << "Driver temperature [°C]: " << temperature << std::endl;

This example reads and writes the maximum speed of an axis. It retrieves the maximum speed and sets it back to half of the original value. Do not run this example unless you intend to change the maximum speed.

const speed = await axis.settings.get('maxspeed', Velocity.MILLIMETRES_PER_SECOND);

console.log('Maximum speed [mm/s]:', speed);

await axis.settings.set('maxspeed', speed / 2.0, Velocity.MILLIMETRES_PER_SECOND);
speed = axis.settings.get("maxspeed", Units.VELOCITY_MILLIMETRES_PER_SECOND)

print("Maximum speed [mm/s]:", speed)

axis.settings.set("maxspeed", speed / 2.0, Units.VELOCITY_MILLIMETRES_PER_SECOND)
var speed = axis.Settings.Get("maxspeed", Units.Velocity_MillimetresPerSecond);

Console.WriteLine("Maximum speed [mm/s]: {0}", speed);

axis.Settings.Set("maxspeed", speed / 2.0, Units.Velocity_MillimetresPerSecond);
double speed = axis.getSettings().get("maxspeed", Units.VELOCITY_MILLIMETRES_PER_SECOND);

System.out.println("Maximum speed [mm/s]: " + speed);

axis.getSettings().set("maxspeed", speed / 2.0, Units.VELOCITY_MILLIMETRES_PER_SECOND);
speed = axis.getSettings().get('maxspeed', Units.VELOCITY_MILLIMETRES_PER_SECOND);

fprintf('Maximum speed [mm/s]: %d.\n', speed);

axis.getSettings().set('maxspeed', speed / 2.0, Units.VELOCITY_MILLIMETRES_PER_SECOND);
double speed = axis.getSettings().get("maxspeed", Units::VELOCITY_MILLIMETRES_PER_SECOND);

std::cout << "Maximum speed [mm/s]: " << speed << std::endl;

axis.getSettings().set("maxspeed", speed / 2.0, Units::VELOCITY_MILLIMETRES_PER_SECOND);

Device settings

This example writes a device scope setting. It disables the indicator LEDs on a device.

await device.settings.set('system.led.enable', 0);
device.settings.set('system.led.enable', 0)
device.Settings.Set("system.led.enable", 0);
device.getSettings().set("system.led.enable", 0);
device.getSettings().set('system.led.enable', 0);
device.getSettings().set("system.led.enable", 0);

Note that setting an axis specific setting using the device @prop Settings property will apply that setting to all axes of a device.

String settings

Some settings are not returned as a number but as a string instead. For those settings use @method GetString method.

const address = await axis.settings.getString('comm.en.ipv4.address');

console.log('IPv4 address:', address);
address = axis.settings.get_string("comm.en.ipv4.address")

print("IPv4 address:", address)
var address = axis.Settings.GetString("comm.en.ipv4.address");

Console.WriteLine("IPv4 address: {0}", address);
String address = axis.getSettings().getString("comm.en.ipv4.address");

System.out.println("IPv4 address: " + address);
address = axis.getSettings().getString('comm.en.ipv4.address');

fprintf('IPv4 address: %s.\n', address);
std::string address = axis.getSettings().getString("comm.en.ipv4.address");

std::cout << "IPv4 address: " << address << std::endl;

Reference

A list of all available settings is available here: