8SMC5 USB Enxisupport Ximc User Manual Eng

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 345

Download8SMC5-USB - Enxisupport Ximc User Manual Eng
Open PDF In BrowserView PDF
Page 1 / 345

Download user manual in pdf
For quick simple questions you can contact us via Telegram.
The official technical support channel @SMC5TechSupport ( https://t.me/SMC5TechSupport).
Available online Mon-Fri 8:00-16:00 UTC.

8SMC5-USB User Manual
1. About
1. General information
2. Benefits
3. Table of specifications
4. Specifications
2. Safety instructions
3. Overview and getting started
1. One axis configuration
2. Example of a motor connection
3. Manual profile setting
4. Calculation of the nominal current
5. Possible problems and solutions
4. Technical specification
1. Appearance and connectors
1. Controller board
2. One axis system
3. Two axis system
2. Kinematics and rotation modes
1. Predefined speed rotation mode
2. Rotation for predefined point
3. Predefined displacement mode
4. Acceleration mode
5. Backlash compensation
6. Rotation reversal
7. Recommendations for accurate rotation
8. PID-algorithm for DC engine control
9. Stop motion modes
10. PID-algorithm for BLDC engine control
3. Main features
1. Supported motor types
2. Motor limiters
3. Limit switches
4. Automatic Home position calibration
5. Operation with encoders
6. Revolution sensor
7. Steps loss detection
8. Power control
9. Critical parameters
10. Saving the parameters in the controller flash memory
11. User defined position units
4. Safe operation
5. Additional features
1. Operating modes indication
2. Operations with magnetic brake
3. Joystick control
4. Left-Right buttons control
5. TTL synchronization
6. Design of multi-axis system
7. General purpose digital input-output
8. General purpose analog input
9. External driver control interface
10. Serial port
11. Saving the position in controller's FRAM memory
12. The Standa stages detection
6. Secondary features
1. Zero position adjustment
2. User-defined position adjustment
3. Controller status
4. USB connection autorecovery
5. XILab application User's guide
1. About XILab
2. Main windows of the XILab application
1. XILab Start window
2. XILab Main window in single-axis control mode
3. XILab Main window in multi-axis control mode
4. Application Settings
5. Charts
6. Scripts

Page 1 / 345

Page 2 / 345

7. XiLab Log
3. Controller Settings
1. Settings of kinematics (Stepper motor)
2. Motion range and limit switches
3. Critical board ratings
4. Power consumption settings
5. Home position settings
6. Synchronization settings
7. Brake settings
8. Position control
9. Settings of external control devices
10. UART settings
11. General purpose input-output settings
12. Motor type settings
13. Settings of kinematics (DC motor)
14. Settings of PID control loops
15. About controller
16. Settings of kinematics (BLDC motor)
4. XILab application settings
1. XILab general settings
2. General motor settings
3. Attenuator settings
4. Cyclical motion settings
5. Log settings
6. Charts general settings
7. Charts customization
8. User units settings
9. About the application
5. Positioner specifications
1. Positioner name
2. Positioner general characteristics
3. Motor characteristics
4. Encoder specifications
5. Hall sensor characteristics
6. Reducing gear specifications
7. Accessories specifications
6. Correct shutdown
7. Working over network
8. XILab installation
1. Installation on Windows
1. Installation on Windows XP
2. Installation on Windows 7
3. Installation on Windows 8
2. Installation on Linux
3. Installation on MacOS
6. Programming
1. Programming guide
1. Working with controller in Labview
2. Working with controller in Matlab
2. Communication protocol specification
3. 8SMC1-USBhF software compatibility
4. Libximc library timeouts
5. XILab scripts
7. Files
1. Configuration files
1. Translation Stages
1. 8MT160 - Motorized Delay Line
2. 8MT295 - Long-Travel Motorized Linear Stages
3. 8MT195 - Long-Travel Motorized Linear Stages
4. 8MT167 - Motorized Translation Stage
5. 8MT173 - Motorized Translation Stages
6. 8MT173DC - Motorized Translation Stages
7. 8MT50 - Motorized Translation Stages
8. 8MT30 - Narrow Motorized Translation Stages
9. 8MT175 - Motorized Translation Stages
10. 8MT177 - Motorized Translation Stage
11. 8MT184 - Motorized Translation Stage
12. 8MT193 - Motorized Translation Stage
13. 8MT200 - Motorized Translation Stages
14. 8MTF - Motorized XY Scanning Stage
15. 8MTF2 - Motorized Fiber Coupling Stage
16. 8MTFV - Motorized Translation Stage
17. 8MT60 - Motorized Translation Stage
2. Rotation Stages
1. 8MR151 - Motorized Rotation Stages
2. 8MR170 - Motorized Rotation Stages

Page 2 / 345

Page 3 / 345

3. 8MR174 - Motorized Rotation Stage
4. 8MR190 - Motorized Rotation Stage
5. 8MR191 - Motorized Rotation Stage
6. 8MRB250 - Large Motorized Rotation Stage
7. 8MRU - Universal Motorized Rotation Stages
8. 8MPR16-1 - Motorized Polarizer Rotator
9. 8MRH240 - Large High Capacity Rotary Stage
3. Vertical Translation Stages
1. 8MVT100 - Vertical Translation Stage
2. 8MVT120 - Vertical Translation Stage
3. 8MVT188 - Vertical Translation Stage
4. 8MVT40 - Vertical Translation Stage
5. 8MVT70 - Vertical Translation Stage
4. Screws and actuators
1. 8MS00 - Motorized Screws
2. 8CMA06 - Motorized Actuator
3. 8CMA20 - Compact Motorized Actuator
4. 8CMA28 - Motorized Linear Actuator
5. 8CMA16DC - Motorized Linear Actuator
5. Motorized Goniometers
1. 8MG00 - Motorized Goniometers
2. 8MG99 - Motorized Goniometer
6. Mirror Mounts
1. 8MTOM2 - Motorized Two Axis Translation Optical Mount
2. 8MUP21 - Motorized Optical Mount
3. 8MBM24 - Motorized Mirror Mounts
4. 8MMA60 - Motorized Mirror Mounts
5. 8MBM57 - Large Aperture Motorized Mirror Mount
6. 8MKVDOM - Motorized Vertical drive optical mount
7. Motorized Attenuators
1. 10MCWA168 - Motorised Closed Variable Wheel Attenuator
2. 10MWA168 - Motorized Variable Wheel Attenuator
8. Motorized Iris Diaphragms
1. 8MID98 - Motorized Iris Diaphragm
2. Software
8. Related products
1. Ethernet adapter
1. Overview
2. Administration

Page 3 / 345

Page 4 / 345

1. About
1.
2.
3.
4.

General information
Benefits
Table of specifications
Specifications

Page 4 / 345

Page 5 / 345

1.1. General information

Controller board.
We offer an inexpensive and ultra-compact servo-drive with USB interface for stepper motors with external power supply.
Forget about cumbersome and expensive servo-drives! All you need is a stepper motor, a controller, a USB cable and any stabilized
external power supply. That is all! Forget about active coolers as well. Controller's board is about the same size as a notepad or a
cellphone, therefore, you may just put it down on the worktable without any assembly procedures. The controller works with any type
of compact stepper motors with the rated winding current of up to 3A. Controller works with stepper motors with no feedback as well
as with ones equipped with encoders in feedback loop, including linear encoders on the stages. The motor connector on the controller
board is the same as one used by Standa company and it fits to all the Standa stages. USB connector provides easy communication
and work with computer. Several controllers can be connected to one computer either via USB ports or through a special backplane
supplied with multiaxis systems. The controller is fully compatible with the majority of operating systems, e.g., Windows, Mac OS X,
Linux, etc.

XILab main window.
All the necessary software including all configuration files are supplied with the controller. It allows you to start working with it the
controller right out of the box, according to "plug-and-play" principle. We continuously develop additional configuration files for newly
supported motors. Therefore, all you need is to download the file for your stage from Configuration files chapter, open it with XILab
software and hit Apply. Your controller is now fully configured! Just issue movement commands and controller will do whatever you
want.

Page 5 / 345

Page 6 / 345

1.2. Benefits
Main benefits
Compact and powerful! The controller's dimensions are 47x25x125 mm including all connectors. The device is adapted to all
stepper motors with rated winding current of up to 3A.
Compatible with 8SMC1-USBh After updating the MicroSMC driver, all the software for 8SMC1-USBh will be working with
8SMC5-USB.
Compatible with all the Standa stages! Have you got a Standa stage? Just plug and play, we have already done the rest for
you!
It does remember all! Do not worry about saving the current position on the computer: the controller does it itself using its
own nonvolatile memory that works even after a sudden power cut.
It works with peripherals! It supports a quadrature encoder, magnetic brake, a joystick, limit switches, a zero position sensor
– all included, just plug and work!
Built-in zero calibration! Using the limit switches, the revolution sensor, the external signal or their combination, the zero
calibration is performed by a single command!
It works with all computers! All the supplied software is compatible with Windows 8, Windows 7, Windows Vista, Windows XP
SP3, Linux, Mac OS X , including 64-bit versions.

All benefits
Really powerful! It is adapted to all the stepper motors with rated winding current of up to 3A.
Compatible with 8SMC1-USBh After updating the MicroSMC driver, all the software for 8SMC1-USBh will be working with
8SMC5-USB.
Compatible with all the Standa stages! Have you got a Standa stage? Just plug and play, we have already done the rest for
you!
It knows its own set! A built-in feature for downloading the configuration file right from the stage memory is available! The
stage's support of such memory is required.
Choose your interface! Both USB and serial port are built-in and ready to use.
Really fast! Up to 35,000 steps per second for any microstep mode!
Precise! The microstep modes from full step to 1/256 of the step on all the speeds.
It does remember all! Do not worry about saving the current position on the computer: the controller does it itself using its
own nonvolatile memory that works even after a sudden power cut.
It works with peripherals! It supports a quadrature encoder, magnetic brake, a joystick, limit switches, a zero position sensor
– all included, just plug and work! Additional stabilized output for peripherals (5V, 100mA) is available.
Built-in zero calibration! Using the limit switches, the revolution sensor, the external signal or their combination, the zero
calibration is performed by a single command!
Stand-alone! Would you like to work in the stand-alone mode? Just go ahead! An external joystick, a keypad or their
combination is supported.
Energy conserving! Programmable current reduction in the motor windings in the hold mode with 1% accuracy.
Silent! Smooth movement at lower speeds and no extra noise at higher speeds.
Protected! An ESD protection on all pins of external connectors and additional short circuit protection for the motor windings.
Attentive! It controls the temperature of the processor and the power driver as well as both currents and voltages for the power
supply and USB.
Modern! The firmware in the nonvolatile memory of the controller can be updated via USB interface.
Controlling and controllable! The built-in synch input and output allow to start the rotation to desired position by the
incoming external signal and/or to transmit the outgoing signal after the desired position is reached. The analog common input
and the digital common input/output are built in as well.
Comprehensible! The status LED displays the power supply and the controller's state. For convenience of use both signals
doubled at the external LEDs as well as the state of the limit switches.
Multiaxis machine! The multiaxis systems are designed by using standard USB hubs, either external or mounted at a special
backplane. There may be up to 32 axis in the system.
It works with all computers! All the supplied software is compatible with Windows 8, Windows 7, Windows Vista, Windows XP
SP3, Linux, Mac OS X , including 64-bit versions.
Examples for all programming languages! Controllers are supplied with cross-platform library and examples which allow
rapid development using C++, C#, .NET, Delphi, Visual Basic, gcc, Xcode, Matlab, Java and LabVIEW.
Full-featured interface! The XILab user interface is supplied with the controller. It allows to easily control all the functions and
features of the device without any programming.
Unique scripting language! A scripting language is integrated into XILab software. It allows easy setting the sequence of
actions, including cycles and branches, without compilation or learning any programming language.
New! Stepper motor close-loop control algorithm are ready! Motion is smoother and faster than ever with innovation
encoder based close-loop on all 8SMC5-USB motor controllers. It combines advantages of BLDC motor control with cheapness of
conventional stepper motors. No hidden catch, no stall or hitch, just free move!

Page 6 / 345

Page 7 / 345

1.3. Table of specifications
Power supply

external 12V - 48V DC

Current
consumption

up to 5A (depending on the voltage) from external power supply

Current
in
the
up to 3A
motor winding
Protection types

current overload protection, voltage overload protection, short circuit protection, motor hotplug/unplug protection

Motion modes

move left/right, move to point, shift on delta, continuous speed, acceleration and deceleration ramps, backlash
compensation mode, automatic home position calibration mode

Step modes

full-step, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128, 1/256

Rotation speed

up to 35 000 full steps per second

Speed profile

trapezoidal

Position counter

40 bit

Feedback

Single-ended and differential quadrature encoder (optional)

Limit switches

2

Feedback
bandwidth

200 kHz for single-ended and 5MHz for differential encoder

Note: The controller's working voltage range is 12V to 48V DC. The voltage limits are 12V and 50V DC. If the voltage
exceeds 50V, the controller is guaranteed to fail. If the voltage falls below 12V, the controller turns off.

Page 7 / 345

Page 8 / 345

1.4. Specifications
Motor requirements
Motor type: bipolar stepper motor, DC motor.
Rated winding current: minimum 100mA.
Rated winding voltage: minimum 2V DC.

Electric specifications of the controller
Power supply modes: external.
Current in each motor winding: up to 3A.
Maximum encoder pulse frequency: 200 kHz for single-ended and 5MHz for differential encoder.
Stabilized 5V DC output (the power supply for encoder and other peripherals): 100mA maximum output current, 5% or better
output voltage stability.
ESD-protection on all pins of the output connectors (e.g., D-Sub 15 pin, mini-USB or power jack).
Winding-to-ground short circuit protection.
Winding-to-winding short circuit protection.
Motor hot-swapping protection.
Wrong power polarity protection (no more than 1s).
Voltage overload protection (no more than 1s).
USB-supplied current limitation.
External power supply current limitation.
Motor rotation speed limitation.
Programmable full winding current with 10mA precision.
Programmable winding current decrease with 1% precision for the hold mode.

Rotation control features
Microstep modes: full-step, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128, 1/256.
Noiseless at low speeds.
Minimum speed is 1/256 of the full step per second.
Maximum speed is up to 35 000 full steps per second for all microstep modes.
Minimum shift is 1/256 of the step.
Maximum shift is 2,147,483,647 full steps for all microstep modes.
Smooth start/stop mode.
40-bit position counter (32 bits for full step and 8 bits for microstep).
Motion modes: left/right move, move to point, shift on delta, continuous speed, acceleration and deceleration ramps, backlash
compensation mode, automatic home position calibration mode.

Additional firmware features
Automatic HOME calibration at firmware level.
The nonvolatile memory used for saving/downloading the controller settings.
Software update via USB interface.
Automatic position saving according to step counter and encoder with power-off protection.

Additional features available via motor connector
Processing the signals from one or two limit switches; software configurable.
The Standa stages recognition and automatic downloading of the configuration file right from the stage if the last one supports
this feature.
The "step loss" detection and position recovery using either a revolution sensor or a quadrature encoder (if the stage supports
this feature).
The position detection using a quadrature encoder. The x4 mode.
The stepper motor control using master quadrature encoder mode, providing the maximum speed without any step loss. Starting
with firmware 4.1.

Additional features available via backplane connector
USB connector on backplane that duplicates USB input on controller board.
A serial RS-232 port. TX and RX lines are available. Specifications: 9600 - 921600 baud speed, TTL 3.3V. The Ethernet,
Bluetooth, WiFi, ZigBee and other configurations based on the serial port are available by request.
Synchronization input: once the pulse is received via this pin, the controller starts rotating the motor to predetermined position
or by predetermined shift value. The triggering mode, the polarity and duration of the pulse are adjustable by user.
Specifications: TTL 3.3V.
Synchronization output: emit pulse to this pin if rotation is started or finished, or predetermined user-defined shift value is
reached. The triggering mode, the polarity and duration of the pulse are adjustable by user. Specifications: TTL 3.3V.
Left or right buttons. Once the button is pressed, the rotation in corresponding direction starts and the speed increases gradually
according to acceleration and other settings. Specifications: TTL 3.3V.
Joystick pin allowing operation with various joysticks with the voltage range no more than 0–3V.
Magnetic brake control pin providing control to magnetic brake mounted on the motor shaft. Specifications: TTL 3.3V, 5mA.
Common analog input pin allowing operation with signals within 0–3V range. Reading frequency is 1kHz. The configuration is
programmable.
Common digital input/output pin. 1kHz update frequency, software configurable. Specifications: TTL 3.3V, 5mA.

Page 8 / 345

Page 9 / 345

Limit switches indication pins designed for LED direct connection. Specifications: TTL 3.3V, 2mA.
Digital "Power" and "Status" pins duplicate the status LED and designed for direct connection of LEDs. Specifications: TTL 3.3V,
2mA.
External driver control interface allowing to control any type of external driver using three signals: enable, direction, clock.
Multiaxis systems development. The multiaxis systems are created from standard USB hubs, either external or mounted at a
special backplane. On the PC a multiaxis system is represented as a set of virtual serial ports, according to the number of
connected axes.

Programming the controller
All the software supplied with controller is compatible with Windows 8, Windows 7, Windows Vista, Windows XP SP3, Linux, Mac
OS X, including 64-bit versions.
Controllers are supplied with cross-platform library and examples which allow rapid development using C++, C#, .NET, Delphi,
Visual Basic, gcc, Xcode, Matlab, Java and LabVIEW.
The XILab user interface is supplied with the controller. It allows to easily control all the functions and features of the device
without any programming.
A scripting language, an EcmaScript language dialect, is integrated into XILab software. It allows easy setting the sequence of
actions, including cycles and branches, without compilation or learning any programming language.

Page 9 / 345

Page 10 / 345

2. Safety instructions
Power supply and grounding requirements. Connection to controller
General requirements for a controller board, systems in box ( single and double axes) are listed below.

IMPORTANT. Either the power supply unit should be plugged to grounded 220V AC socket (a three-wire connection
scheme). Make sure that the minus electrode of your power supply unit is grounded. If the power supply unit with
minus electrode disconnected from the grounding circuit is used, ground the controller board via special grounding
terminal (look at the picture below). Non-compliance with these rules may lead to the decrease in controller stability
and noise resistance.

Top view of the controller board. A grounding terminal marked with the red square
Typical connection diagram for a controller (board, systems in box):

Motor

PC

USB

Power
supply

Controller
8SMC5-USB

220 V

Controller grounded via minus electrode of power cable connection diagram

Motor

PC

USB

Power
supply

Controller
8SMC5-USB

Controller connection diagram with grounding via special terminal

Page 10 / 345

220 V

Page 11 / 345

Warning. Power supply unit should be able to supply sufficient current to rotate the motor. As an absolute minimum
it should be able to supply

where

is the minimum working current of

power supply unit,
is the operating current in the winding,
is power supply unit stabilized voltage, and
is rated operating voltage of the motor. It is recommended to use a power supply unit with operating current
equal to
. The
voltage should be greater than
. The higher the voltage, the
faster rotation speed could be reached.
One can use power consumption of power supply unit to calculate minimum requirements instead. An absolute
minimum of power is
. For example, for motor with
operating winding current of 1A and operating voltage of 5V (with 5W rated power consumption), the operating
voltage of power supply unit may be chosen at 20V with the output power of at least 10W (the maximum operating
current of power supply unit is at least 0.5A).

Controller board

IMPORTANT. It is strictly forbidden to touch the controller board without any antistatic equipment. We recommend
you to use antistatic wrist strap.

IMPORTANT. It is strictly forbidden to connect positive wire of power supply to the controller board when
ground wire is not connected. It is strictly forbidden to connect or disconnect power cable when the
power supply is on, the controller is connected to the PC and the power supply and the PC are grounded.
This may damage the PC! This is a common requirement for any electronic device with separate power source,
which is connected to the PC via USB.

Warning. Before connecting the controller board to the motor or to the PC via USB interface, it is recommended to
connect controller to power supply with proper grounding or to use separate grounding for controller with the specially
marked ground terminal (look above).

One and two axes system in box

IMPORTANT. You should not exceed maximum allowed voltage of 48V. If voltage goes over allowed value at
more than 2 volts, it can immediately and irreversibly damage the controller.

Page 11 / 345

Page 12 / 345

3. Overview and getting started
This guide describes the operation of controller for multi-axis and one-axis systems, basic parameters configuration and getting started
with XILab software for Windows 7.
One axis configuration - a brief description of the beginning of work with the controller + 8SMC5-USB for one axis +. It is also
considered quick XiLab setup and lists all necessary equipment.
Example of a motor connection - connection of stepper motor Nanotec ST5918L3008-B with encoder CUI INC AMT112S-V to
8SMC5-USB controller. It is described how to make your own cable, guided by the specification on the engine and explanation of
the specification is given.
Manual profile setting - setting of working profile for XiLab. Overview of the main features.
Calculation of the nominal current - setting of amplitude of nominal current for stepper motors.
Possible problems and solutions - description and solution of the most common problems when working with 8SMC5-USB
controller.

Page 12 / 345

Page 13 / 345

3.1. One axis configuration
3.1. One axis configuration
Introduction
System requirements
Software installation and startup procedures
Getting started with XILab software
Functional test
Control from user applications

Controller board.

Introduction
This manual describes the controller installation procedures and getting started with XILab software for Windows 7. The detailed
controller specifications are described in Specifications chapter. For developing your own applications, please read the Programming
guide 8SMC5 chapter and download the programming software package from the software chapter.

System requirements

Note. There are only brief requirements in this chapter. For detailed information please read the
chapter.

Specifications

For successful installation you will need:
PC with USB port

A standard PC with USB port.
Make sure that your PC has all of the current Windows updates installed. It will help you to maintain software compatibility. If
necessary, please download the latest updates from www.microsoft.com/updates.
Software
All necessary software to work with the controller can be downloaded from software page.
USB A - mini-B cable

USB-A to mini-USB-B cable.
For detailed information about the USB cable please read the data connector chapter.
8SMC5-USB controller

Page 13 / 345

Page 14 / 345

The motor controller board.
The controller appearance may differ from the one shown on the above figure depending on its configuration and version. For
detailed information about versions please read the Appearance and connectors 8SMC5 chapter.
Positioner or motor

The stepper motor-based positioner.
The stepper motor-based positioner used in the operations is shown at the figure. The detailed motor requirements are described
in Specifications chapter. If you use your own cables for connecting the positioner to the controller, please refer to positioner
connection scheme and the controller's output connector scheme . For positioners with limited movement range, two limit
switches must be used: SW1 and SW2. These pins are used to determine the movement limits.
Power supply

Stabilized power supply unit.
Notes.
Please use the 12–36V DC stabilized power supply. Too high voltage may damage the controller. For more
information please read the Safety instructions 8SMC5 chapter. The power supply unit must provide the current
enough for sustainable rotation of the motor.
Please pay attention on the manual supplied with your controller. The more strict power voltage limitation is
possible depending on the controller model. Please check the connection of external power supply unit to the
controller carefully.
If controller is supplied inside the metal case, the case must be grounded. If controller is supplied without any
body, the grounding circuit of power supply unit is used. For more information please read the Safety
instructions 8SMC5 chapter.
If the board is operated without the casing, make sure it lays on the insulating surface and there are no
extraneous particles on the board or around it.

Software installation and startup procedures
Make sure that all controllers are disconnected from your PC.
The software installation manual is here. The installer file name is "xilab-.exe". It automatically detects whether it is
running on 32-bit or 64-bit version of Windows and installs the appropriate version of XiLab. Launch the installation program, the
installation window will appear. (The software versions may slightly differ from each other).

Page 14 / 345

Page 15 / 345

XILab main installation window.
Press “Next>” button and follow the instructions on screen. All the necessary software including all drivers, packages and programs will
be installed automatically. After installation is finished, the XiLab software starts by default and the following window will open:

XILab "No devices found" dialogue window.
Don't press any buttons.
Connect the positioner to the controller. Connect the stabilized power supply unit to the controller. Ground the controller or power
supply unit. Connect the controller to your PC using the USB-A to mini-USB-B cable.
The LED indicator at the controller board will start flashing. The New Hardware Wizard starts working after the first connection of the
controller to PC. Please wait until Windows detects a new device and installs all necessary drivers for it.
If the automatic driver installation has failed, please select ”No, not this time” in the window being opened and press “Next>” button.
Select “Install from a list or specific location (Advanced)” in the next window and press “Next>” again. Browse the software disk
supplied with controller and find the *.inf file there or in the XiLab-install-path\driver\ folder and wait until installation is completed.
Go back to XILab "No devices found" dialog window and press "Retry" button.
If this window was closed, please go to “Start” menu, select Programs->XILab Х.Х.Х->XILab and launch it. The dialog window will
open again.

Getting started with XILab software
XILab is a user-friendly graphic interface designed for control, diagnostics and adjustment of motors. It can also be used for easy
installation and save/restore of parameters for any type of motors. This chapter describes the startup procedures with XILab software.
For complete information please refer to XILab application User's guide chapter.

Page 15 / 345

Page 16 / 345

XILab main window.
Open “Settings...”, then press “Restore from file...” and select the configuration file for your positioner from the opened C:\Program
Files\XILab\profiles\ folder. The values applicable for your positioner will automatically fill all the fields of “Settings...” menu. If the
necessary file isn't found, please refer to the Configuration files chapter. If there is still no solution, please leave your request at our
customer service website.

Page 16 / 345

Page 17 / 345

XILab, the Settings menu window.
Warning. For the controller to work with stepper motors it is required to properly set up:
working current,
displacement limits and limit switches ,
critical parameters,
limiters,
power supply mode.
If you decide to configure your controller by yourself, please check these parameters carefully!

Congratulations, your controller is ready for operation!

Functional test
Check if the controller is configured properly by pressing left or right button in the central row of XILab main window control buttons.
The positioner has to start moving. Use the central "soft stop" button to stop the rotation. Please pay attention to the power supply
parameters of the controller in the Power section. The power voltage, working current and temperature of the controller can be set
there.
If Xilab main window is shaded red when the movement was supposed to start, that means that protection was activated and controller
entered the Alarm state. This may be caused by incorrect settings, wrong connection of the positioner or controller malfunction. For
detailed information please read the Critical parameters chapter.

Page 17 / 345

Page 18 / 345

Control from user applications
Xilab software is a convenient way to control stages connected to 8SMC5-USB controller. However, if you need to control the 8SMC5USB from your own application, you may do so by using libximc library. Programming guide 8SMC5 has several examples in C, C#,
Delphi, Java, VB.net, Matlab, LabView programming languages. If all you need is to automate a small number of control steps, then
instead of a standalone program you may find it easier to use Xilab scripting language.

Page 18 / 345

Page 19 / 345

3.2. Example of a motor connection
General case
To connect a motor to the controller please refer to positioner connector, and
use the scheme of positioner connection:
Positioner standard connection diagrams

3.2. Example of a motor connection
General case
Positioner standard connection diagrams
Example
Preparation
Connecting the motor and encoder
controller

to

the

General diagram of positioner and encoder connection using Dsub connector.

Note. If A and B encoder channels work in open drain mode, some extra pull-up of encoder outputs to 5V power
voltage using the resistors may be required at high rotation speeds in order to provide the maximum signal
transmission speed (see Operation with encoders ).

Note. Only firmwares 4.1.0 and older support BLDC.

Example
Consider the connection of the two-phase stepper motor Nanotec ST5918L3008-B with encoder CUI INC AMT112S-V to controller
8SMC5-USB.
Preparation
To get started, we need:
Motor;
Encoder;
Pinout of D-SUB connector for 8SMC5-USB;
Motor datasheet ;
Encoder datasheet ;
Soldering equipment: soldering-iron, wires, flux, solder, nippers, heat shrink tubes of different sizes;
Screws M2.5x6 for fixing the encoder;
D-SUB cover + connector (male) and wires for cable manufacturing;

Page 19 / 345

Page 20 / 345

Connecting the motor and encoder to the controller
Before you begin, assemble the encoder in accordance with the appropriate instructions.

The motor without encoder. Note 2 holes M2.5 to which is usually attached an encoder

Motor with attached encoder
Let us look in the specification of the engine and find the wiring diagram (for Nanotec ST5918L3008-B it is at the bottom right in
the specification):

Motor contacts

Connection type
There exist serial and parallel winding connection and each type allows to obtain various characteristics for the motor. We
will connect the windings in series (red frame on the picture). To do this, wires having two colors BLK/WHT and GRN/WHT,
as well as RED/WHT and BLU/WHT must be connected to each other in pairs. Next, you need to put in accordance A, not A,
B, not B pins of controller to contacts of motor windings ST5918L3008-B: black, green, red, blue. One winding is a
connection of A and not A or B and not B. After the connection between a two-color wire, you will get that one winding of
the motor is black - green connection, other is red - blue. Therefore, matching contacts will be the follows: black - A, green
- not A, red - B, blue - not B. It can be seen in the picture above Connection type.

Page 20 / 345

Page 21 / 345

To connect encoder, open its datasheet and find 5 contacts on encoder connector: A+ (channel A), B+ (channel B, shifted
relative to A by 90 degrees), Z+ (rev counter), 5V, GND. They should be taken from the encoder as 5 separate wires and
put together with the wires from the motor as they then go to a connector. CUI INC AMT112S-V encoder has 18 pin input,
therefore it is needed to make a cable with the same connector on the end to output necessary signals:

Encoder contacts A+, B+, Z+, 5V and GND corresponds to 10, 11, 12, 5, 7 pins of D-SUB male connector respectively.
For convenience, use the next tables (the number in parentheses indicates pin on the corresponding connector):
Encoder pin D-SUB pin
A+ (10)

Encoder A(10)

B+ (8)

Encoder B(11)

Z+ (12)

Revolution sensor input (12)

5V (6)

Output 5V, 100 mA (5)

GND (4)

Logical ground (7)

Motor pin

D-SUB pin

A (BLK)

phase А (4)

not A (GRN) phase not А (3)
B (RED)

phase B (2)

not B (BLU)

phase not B (1)

Solder the above contacts to D-SUB male connector:

The wires from the motor and encoder in a heat shrink tube. Note the presence of small heat-shrinkable tubes for wires going to
the motor windings (BLK, GRN, RED and BLU), as well as two-colored wires joined together (BLK/WHT and GRN/WHT, RED/WHT
and BLU/WHT). The thin wires are an encoder contacts (5 pcs).

Ready cable from the motor with the D-SUB connector on its end
Recommendation: use heat shrink tubes of a small diameter (2-3 mm) while soldering contacts to D-SUB connector, and large
diameter to skip through them all the wires coming from the motor and encoder. Put them before soldering.
Put D-SUB connector into the cover.

Page 21 / 345

Page 22 / 345

Now you can connect it to 8SMC5-USB.
Description and profile settings are given in the next chapter Manual profile setting .

Page 22 / 345

Page 23 / 345

3.3. Manual profile setting
Introduction
All necessary parameters are set after motor connection (see Example of a
motor connection where the Nanotec ST5918L3008-B motor connection is
described). There we will consider the setting of the profile for Nanotec
ST5918L3008-B stepper motor.

Getting started
Install and run XiLab (see One axis configuration).
Load the profile with default settings. To do this, open + Settings ->
Restore from file ... + and select xilabdefault.cfg file from XiLab folder.

3.3. Manual profile setting
Introduction
Getting started
Nominal current setting
Basic parameters setting
Hardware limit switches setting. Homing.
Encoder parameters setting
Setting the kinematic characteristics
controller
Working with user units

of

the

Nominal current setting
Initially, it is needed to set a correct current in motor windings:
From the specification find the phase current 2.1 A - this is the maximum current for the motor in case of serial winding
connection:

Being in the Settings window, open Stepper motor tab. There are such parameters as rotational speed, acceleration, driving
mode, etc. (seeSettings of kinematics (stepper motor) for additional information). In Motor parameters-> Nominal current field
you should specify the value of the phase current not exceeding 2.1 A:

Basic parameters setting
In the Working speed field we will specify a rotation speed. The recommended speed is not more than 1000 s/sec at the first
start. In the same window you should type Max Nominal Speed (5000 s/sec is reasonable value for majority of motors and
motorized stages) and mark Limit speed with max speed. This setting is necessary to limit the motor speed since some
mechanical systems can be designed for low speed, and fast rotation can lead to severe wear of motor/stage mechanics.
In the motor specification we find the number of steps per rotation. For our motor this value is equal to 200 steps. Specify it in
the Steps per turn field. Usually, the value of one pitch in degrees is listed in motor description, on the basis of which you can

Page 23 / 345

Page 24 / 345

calculate the number of steps per revolution, knowing that one revolution consists of 360 degrees.
Make sure that movement to the right from the main window of XiLab corresponds to the movement to the right of the stage. If
not, then check the box Reverse field Stepper motor -> Motor parameters .

Hardware limit switches setting. Homing.

Note. This section describes the using of motorized stages with hardware limit switches. If your system is not
provided with hardware limit switches, it is recommended to disable stop by limit switches in settings. To do this,
unmark Stop at right border and Stop at left border in Borders tab.

There are positioners with limited (translators) and an unlimited range of motion (rotators). The limitation of movement range can be
done by position or with limit switches using. When you work with translators if its limit switches are configured incorrectly there exists
a risk to break down mechanics, since moving part can try to go out of motion range. Rotators do not have such problem. Moreover, it
should be kept in mind that rotator may have only one limit switch.
To work with limit switches you must specify which one will be left and right. Sometimes it is unknown in advance and we only
know that both switches are connected and fire if the corresponding limit of the motion range is reached. The stage jam is
possible if the limit switches are configured improperly. Therefore, the controller supports just a simple detection of incorrectly
configured limit switches, shutting down the movement on both of them. Please make sure that:
The stage is far from limit switches;
Switches polarity is configured correctly (limit switches indicators are off in the main window of XiLab). In the case of
incorrect settings, change their polarity (Borders -> Pushed position ), indicators should go out.

Shutdown mode is activated on both of limit switches ( Stop at right border and Stop at left border are marked in Borders
tab).
Mark the flag detecting improper connection of limit switches Border misset detection in Borders tab.

Tab with limit switches settings
Controller can switch to Alarm state after false limit switch response, if Enter Alarm state when edge misset is detected is
enabled in Maximum ratings tab. It is recommended to enable it. Start the movement in any direction from the main window of
XiLab up to Alarm state or stopping by the limit switch. When an Alarm occurs you need to reverse limit switches by changing
Borders->Border with reversed values in the Stepper motor tab.

Warning. The protection against mistaken limit switches connection doesn't guarantee the complete solution of the
problem, it only makes the initial configuration procedure easier. Don't start the movement with mixed up limit
switches if any of them is active, even if the protection is on.

There are still two ways to determine which of the limit switch is right and which is the left:
You need to know how each of the limit switches is connected to the positioner. When loading a profile with the default settings,
switch connected to pin 9 of the D-SUB connector is considered as left, while switch connected to pin 8 - as right. Their location
relative to the positioner is configured in the fields Limit switch 1 and Limit switch 2 (see screenshot above). Start the system at
the low speed (<100 ш/с) when it is far away from limit switches. If the direction of movement to the switch in a real setting
differs from the expected, change Borders->Border values with reversed in the Stepper motor tab.

Page 24 / 345

Page 25 / 345

If it is possible to get limit switches activate them and note the correspondence between indicators in XiLab and each particular
switch. Then start the system at the low speed (<100 ш/с) when it is far away from limit switches and make sure that the
system moves to the right switch. Compare this to what you see in the main window of XiLab. If the direction of movement to
the switch in a real setting and in the main window differs, change Borders->Border values with reversed in the Stepper motor
tab.
For detailed information refer to motion range and limit switches.
Controller has a useful function called automatic Home position calibration to set the initial position of the motorized stage.

We will consider the most simple configurations with a single phase only. Start from the setting of the 1st phase speed which is
approximately 5-10 times lower than Working speed. It is necessary for higher precision of automatic calibration procedure. In the filed
Stop after specify the limit switch to make the stage reached one of the limit switches during the calibration (direction is selected in the
1st move direction). In the field Standoff specify number in steps, for which stage must be driven away from the limit switch. Click Ok
or Apply.

Note. Standoff value is signed. Positive direction is right. That is, if the auto-calibration procedure is set up on the
right limit switch, then in order to move stage away to the left you should type negative value in Standoff field.

Start the automatic calibration by clicking Go home in the main window of XiLab. The result of it is a movement of the positioner
to the specified limit switch with a relatively low speed and the shift away from him to the value specified in the field Standoff.
After completion of the calibration process, press Zero in XiLab to set the origin of coordinate system for your stage.
Repeat the calibration process again. The stage must return to the zero position. Please pay attention that there can be slight
deviations from zero connected with calibration procedure error.

Encoder parameters setting

Note. This section describes the using of motor with encoder. If you motor without an encoder, the parameters
described below can be left unchanged.

Any encoder has Pulse Per Turn - PPT parameter (sometimes it is called PPR - Pulse Per Rotation). For correct operation of
the encoder with controller you should enter the number of encoder counts per revolution, which is equal to 4xPPT in the
Encoder counts per turn field in XiLab. For example, if your encoder has 1024 pulses per turn, specify 4096 in the Counts per
turn:

Start the motor rotation from the main window of XiLab. If everything is configured correctly, the green indicator ENCD will light
in the bottom of window. If ENCD has yellow color, you should mark Encoder reverse in the Stepper motor tab. Red color of
EDCN points to the problem with encoder position recalculation..

Page 25 / 345

Page 26 / 345

It is possible to activate the position control by encoder. To do this, in the tab Position control mark Position control and specify
allowable error in terms of encoder counts in the Threshold field. Then, when a mismatch between position and encoder counts
occurs, indicator SLIP will light in the bottom of XiLab main window. Beyond this, if Alarm on errors is marked, the controller will
go to Alarm state. Correct errors allows you to start closed loop control, when the difference between real position and encoder
position is compensated.

Setting the kinematic characteristics of the controller
In the Stepper motor tab you may specify a necessary acceleration ( Acceleration) and deceleration ( Deceleration) for your
stepper motor. The process of optimal values selection is the next:
Starting from default values make small shifts (start and fast stop) with gradual Acceleration increase until the movement
become unstable and disrupted sometimes. Take acceleration equal to about half of this value.
The deceleration can be configured about 1.5 - 2 times higher than acceleration.
If in your mechanical system moving to the desired position on the left and on the right is not the same, and there is play, it is
possible to eliminate this ambiguity. To do this mark Play compensation in Stepper motor and type number greater than play
value. The sign of this setting determines the direction of moving to the position. Positive sign means move from the left while
negative - from the right. In Antiplay speed field set the speed of compensation movement. This value should be low ( 50 s/sec
is enough) in order to avoid "drifting" during play compensation.
After the basic configuration of the positioner/motor, you can increase working speed. It can be done experimentally like the
process of acceleration setting, i.e. you should take its value about 2 times lower than value at which there is unstable
movement. To test the stability of the rotation it is recommended to use the function Cyclic in XiLab main window. Make sure
that you set it previously.

In the Microstep mode field we recommend to enter the value 1/256.

Working with user units
Often it is uncomfortable to work with the steps and microsteps and more convenient units are preferable. For this reason, the
controller can recalculate the coordinates in the usual units, for example in millimeters or degrees. It can be done in the tab User units,
where you should specify the size of the step and the corresponding measurement unit. For more information, refer to relevant
documentation paragraph.
Configuration of the operating profile complete.

Page 26 / 345

Page 27 / 345

3.4. Calculation of the nominal current
In order to stepper engine gave maximum torque, but it does not overheat, it is important to specify such technical characteristic as
the rated current.
The greater a current in the motor winding, the greater the torque at the axis. It is important to remember that with an increase a
current flowing through the winding, thermal power released by the motor increases. So the engine could operate for a long time
allocated to thermal power (Joule heating) must be less power dissipation. Power dissipation can be calculated on the basis of
documentation on the engine.

Calculation based on the parameters of unipolar full step mode
Power dissipation is equal to

, where Ru - the resistance of the winding in unipolar mode, Iu - current through the

winding in unipolar mode, n - the number of simultaneous windings.
Consider, for example,
ST2818M1006. The table in the documentation shows that in full step mode simultaneously running two
phase (n = 2) in the unipolar mode, i.e.
. The motor controllers support only bipolar control mode. To switch from a
unipolar to a bipolar mode, connect each phase windings in series, the resistance will increase,
of the series-connected windings in the bipolar control mode.

, where Rb - the resistance

The motor controllers control algorithm is capable of operating in a microstepping mode and maintains the current so that the first
winding current varies in function
, in the other winding current varies in function
, where Ia - current amplitude.
Thermal power released two windings at any time
It follows from the foregoing that the

Calculation based on the parameters of bipolar full step mode
Power dissipation is equal to

, where Rb - the resistance of the winding in bipolar mode, Iu - current through the winding

in bipolar mode, n - the number of simultaneous windings.
Consider, for example, ST2018S0604. The table in the documentation shows that in full step mode simultaneously running two phase
(n = 2) in the bipolar mode, i.e.
Thermal

power

dissipated

in

the

motor

We obtain the equation equating power

windings

that

managed

by

motor

controller,

still

is

. We find that

The relationship with an rms current
Alternating

current

in

each

motor

winding

can

be

characterized

by

its

rms

value

in

the

period

. Thermal power of one winding is associated with an rms current through it
Both windings are identical

. The total thermal power of the engine that is run by control by motor controller controller

Page 27 / 345

.

Page 28 / 345

Current

Ia

Irms

Steps
It follows from the foregoing that

, also

Setting the nominal current
Motor controller are capable of taking the nominal current value as a current amplitude or as rms. The choice of which way to interpret
the input value of the nominal current is determined by the absence or presence corresponding flag ENGINE_CURRENT_AS_RMS in the
EngineFlags engine_settings structure. When setting the nominal current in XILab should properly specify how the current is
interpreted. Motor controllers in this case will provide the maximum torque without overheating the engine.
For all Standa motorized positioners prepared configuration files that contain the specified nominal current as rms. The corresponding
flag is set. Thus the engines operate at optimum settings.

Page 28 / 345

Page 29 / 345

3.5. Possible problems and solutions
Here is a list
of common 3.5. Possible problems and solutions
problems
Controller is not found in XiLab
and possible
Unable to rotate the motor by the controller
solutions
Controller has Alarm state
that
we
Motor vibrates without rotation
offer to our
Mechanical jamming.
users. Your
When using the libximc library and Linux with kernel version less than 3.16, there are possible hanging of the operating
case may be
system
the
same
mentioned
below, then you will quickly find a solution, otherwise, send your questions with a detailed description of the problem to tech support:
Ask a question
Send an e-mail: 8smc4@standa.lt

Controller is not found in XiLab
Solution:

Comment to the diagram:
8SMC5-USB-B9-1 - one axis system
8SMC5-USB-B9-2 - two axes system
The following decision maps show the actions for different operating systems.
Windows:

Page 29 / 345

Page 30 / 345

Linux:

Page 30 / 345

Page 31 / 345

Comment to "Can't open device" problem solution:
When working with USB-... converter in Linux it appears as /dev/ttyUSB device. XiLab shows it in a list, but when you try to open it,
an error "can't open device" occurs due to the lack of permissions to the device.
To solve this problem, create a file: /etc/udev/rules.d/31-ximc.rules and add the next line into it:
SUBSYSTEM=="usb", ATTR{idVendor}=="067b", MODE="0666"
idVendor identifier can be found by executing lsusb command.
Mac OS:

Page 31 / 345

Page 32 / 345

Unable to rotate the motor by the controller
Controller has Alarm state
Click Stop in the main window of XiLab. Controller must return to its normal state. If this approach was not helpful and Alarm state
emerged again, do the following:
Being in XiLab go to the Maximum ratings tab.
Mark Sticky Alarm flags option. Click Ок.
Press Stop in the main window of XiLab, it will temporary return controller to its normal state. Repeat the sequence of actions
leading to Alarm state.
Make the screenshot of XiLab main window and send it to the technical support with detailed description of your problem.
Motor vibrates without rotation
This problem has several reasons:
Installed incorrect profile for your motor/stage.
Search for a better match for the title of profile used by your motorized stage in XiLab folder or refer to
enxisupport.
It is recommended to save your current configuration to file. To do this, in the Settings window of XiLab click Save to file
(see XiLab settings), choose path where you want to save the settings. Then send this file in technical support with
detailed description of the problem.
Incorrect configuration of limit switches, as result the stage rests the limit switch. This can usually be seen by the indicator
lights in XiLab.

The main reason for the incorrect setting of limit switches is incorrect configuration file for your positioner (see previous item).
Information about manual setting is located in manual profile setting. When such problem is emerged it is recommended to
contact the technical support for further assistance.
It is also one of the consequences of problems with limit switches can be mechanical jamming (see the next item).
Broken winding of the motor, problems with bad contact in connector etc. It is possible to diagnose this kind of problems
independently. For this purpose, we recommend to get XiLab graphs of voltage and current during the operation of motor. The

Page 32 / 345

Page 33 / 345

proper motor current in the winding varies according to a sine or cosine. In the broken motor much stronger differences of the
current from harmonic form can be noticed.

Working case
In the charts below you can see the problems. For example, winding B is open circuit. Probably it is broken. Also, voltage and
current forms are distorted.

There are problems with motor
To diagnose the problem set very low speed ( 1 s/sec is optimal) and send movement command. Then turn on graphs of current and
voltage for windings A and B in XiLab (button Charts, then mark correspond fields). Wait for a while until the graphs are built. Then it
is recommended to send them (Click Save in the same window with graphs) in technical support with a detailed description of the
problem. Sometimes, when winding is broken, it is impossible to use XiLab due to permanent loss of device. In this case also contact
technical support with description of the problem.
Mechanical jamming.
There are two ways to deal with jamming:
Turn the motorized stage by hands if it is possible.
Increase the winding current 2-3 times for a short time (about 5-10 seconds) and send movement command to the stage in the
right direction at the low speed (about 50-100 s/sec will be enough). A few seconds after rotation, press stop button (small
black square) until power off status appears in the main window of XiLab in order to prevent motor overheating. After this do
not forget to return the settings back!

When using the libximc library and Linux with kernel version less than 3.16, there are possible hanging of the
operating system
Comment: above-mentioned problem stems from the error in serial port driver cdc-acm. It is observed with frequent sequential
opening and closing of some devices. Operation system hanging was shown on Debian 7 (3.2 kernel version) and worked correctly on
Debian 8 (3.16 kernel version).
For additional information about problem please refer to the next
link
Solution: update your current version of Linux.

Page 33 / 345

Page 34 / 345

4. Technical specification 8SMC5
1. Appearance and connectors
1. Controller board
2. One axis system
3. Two axes system
2. Kinematics and rotation modes
1. Predefined speed rotation mode
2. Rotation for predefined point
3. Predefined displacement mode
4. Acceleration mode
5. Backlash compensation
6. Rotation reversal
7. Recommendations for accurate rotation
8. PID-algorithm for DC engine control
9. Stop motion modes
10. PID-algorithm for BLDC engine control
3. Main features
1. Supported motor types
2. Motor limiters
3. Limit switches
4. Automatic Home position calibration
5. Operation with encoders
6. Revolution sensor
7. Steps loss detection
8. Power control
9. Critical parameters
10. Saving the parameters in the controller flash memory
11. User defined position units 8SMC5
4. Safe operation
5. Additional features
1. Operating modes indication
2. Operations with magnetic brake
3. Joystick control
4. Left-Right buttons control
5. TTL synchronization
6. Design of multi-axis system
7. General purpose digital input-output
8. General purpose analog input
9. External driver control interface
10. Serial port
11. Saving the position in controller's FRAM memory
12. The Standa stages detection
6. Secondary features
1. Zero position adjustment
2. User-defined position adjustment
3. Controller status
4. USB connection autorecovery
7. Software compatibility
1. MicroManager

Page 34 / 345

Page 35 / 345

4.1. Appearance and connectors
8SMC5-USB controllers are available in 3 different versions:
1. Controller board
2. One axis system
3. Two axes system

Page 35 / 345

Page 36 / 345

4.1.1. Controller board 8SMC5
Dimensions and arrangement
Structurally the controlled is designed as two boards, 46x126,75mm each, rigidly connected to each other. A logic controller and
control systems are mounted at the bottom board, a power part is at the top board. A radiator at the power part is available.

Top view on the controller. The view from power part and radiator side.

Front view on the controller. The view from stage cable side.

Rear view on the controller. The view from DIN and USB-b connectors side.

Bottom view on the controller. The view from backplane connectors side.

IMPORTANT. If you are mounting the radiator to the power part by yourself, please make sure that there is no
contact between heat-conducting surfaces and conductive elements of the unit. Such contact may damage the power
circuit! This warning is applicable only to controllers supplied without body.

Connectors
Positioner connector
A female DSub 15-pin connector for positioner is mounted on the controller board.

Page 36 / 345

Page 37 / 345

11 12 13 14 15
6

7
1

8
2

3

9 10
4 5

8

12,6

30,8

16,3
25

Dimensions and numbers of the pins in DSub connector (front view).
Pins functionality:
1 - Not phase B of SM or - DC of the motor
2 - Phase B of SM or + DC of the motor or phase B on BLDC motor
3 - Not phase A of SM or - DC of the motor or phase C on BLDC motor
4 - Phase A of SM or + DC of the motor or phase A on BLDC motor
5 - 500mA - for 8SMC5, stabilized output for encoder power supply
6 - One-wire interface for positioner identification (for Standa hardware only)
7 - Logic ground for limit switches, encoder, etc.
8 - 2nd limit switch
9 - 1st limit switch
10 - Encoder channel A
11 - Encoder channel B
12 - Revolution sensor input
13 - Inverted Encoder channel A
14 - Inverted Encoder channel B
15 - Inverted revolution sensor input

Note. Only firmwares 4.1.0 and older support BLDC

Note. Outputs 1 & 3 and 2 & 4 must be connected together for proper DC motor function if the nominal current of the
motor is higher than 3A.

Warning. Plugging in/out the motor to the controller is not recommended while motor windings are under voltage.

Power supply connector. 1 and 2 axes system
One- and two-axis controller models in metal cases use Kycon 4-pin DC power connector (part number KPPX-4P, anacapa.kycon.com).

Pinout:
1 - Power,
2 - Power,
3 - Power,
4 - Power,

"-".
"+". 12-48V.
"-".
"+". 12-48V.

Page 37 / 345

Page 38 / 345

IMPORTANT. Never supply the power to the controller and do not plug it to power connector if you are not confident
that your power supply parameters conform to the requirements. Never attempt to plug the power supply to the
controller if you are not sure power supply unit and controller connectors are compatible! The acceptable connection
parameters are described in Safety instructions.

IMPORTANT. Hot-swapping or unreliable connection of the power supply connector MF-4MRA may damage the PC
and/or the controller. For more details please refer to Safety instructions.

Data connector. 1 and 2 axes system
Controllers in metal case connect via USB type-B connector.

USB-A - USB-B cable.

USB type B connector.
Output pin table
Pin # Name Wire color Description
1

VCC

Red

+5 VDC

2

D-

White

Data -

3

D+

Green

Data +

4

GND

Black

Ground

Warning. Use verified USB cables only! Damaged or low-quality USB cable may cause improper controller operation,
including motor rotation errors and errors of device recognition by PC operating system. Short cables with thick wires
and screening are ideal for sustainable connection.)

Backplane connector
A female 20-pin double-row connector (PBD-20R) with 2.54mm pitch is mounted on the controller board for backplane connection.

Dimensions and output pins numbers in BPC (BackPlane Connector), connector-side view.

Page 38 / 345

Page 39 / 345

Pin function of CN1:
1 - Power GND 12-48В.
2 - Joy, an analog 0-3 V input used for external joystick connection.
3 - Power GND 12-48В.
4 - Pot, an analog 0-3 V input used for general purpose.
5 - Power GND 12-48В.
6 - A common input/output (or an Enable signal if an external driver is used), 3.3V logic.
7 - Power +12...+48В.
8 - U_LED, A LED Status output displaying controller's operating mode.
9 - Power +12...+48В.
10 - L_LIM, A LED output for left limit switch.
11 - Power+12...+48В.
12 - R_LIM, A LED output for right limit switch.
13 - USB_SEL, selecting USB device in Multi-axis system.
14 - A common input/output EXTGPIO1, 3.3V logic.
15 - USB_D0_N, negative out of USB Slave.
16 - H_USB_D0_N, negative out of USB Master.
17 - USB_D0_P, positive out of USB Slave.
18 - H_USB_D0_P, positive out of USB Master.
Pin function of CN2:
1 - Reserved.
2 - RX, serial port, 3.3V logic.
3 - Reserved.
4 - TX, serial port, 3.3V logic.
5 - Reserved.
6 - A Direction signal for external driver control, 3.3V logic.
7 - Reserved.
8 - A Clock signal for external driver control, 3.3V logic.
9 - Reserved.
10 - Synchronization output, 3.3V logic.
11 - Reserved.
12 - Synchronization input, 3.3V logic.
13 - An output for magnetic brake control, 3.3V logic.
14 - Not used.
15 - BUT_R, an external "Right" button.
16 - 5V output.
17 - BUT_L, an external "Left" button .
18 - Digital GND for 3.3V and 5V.

Note. No additional connection or pull-up to ground/power supply is required for idle pins. Just don't use them.

IMPORTANT. A maximum designed operating voltage for Joy and Pot analog inputs is UP TO 3V. Never supply these
inputs with higher voltage, including 3.3V value, otherwise the proper operation of all the analog channels of the
controller may get disrupted and the controller itself or the motor may get damaged.

IMPORTANT. The outputs available at the internal connector are not protected. Mounting of any additional buffers or
filtering chains is a total responsibility of user or developer who designs a backplane intended to use these lines.

IMPORTANT. While the controller is unpowered, no voltage over 0.3V relative to the DGND pin is allowed on the
internal connector. Provision of any additional protection preventing those accidents (if possible) is a total
responsibility of user or developer who designs a backplane intended to use these lines.

Page 39 / 345

Page 40 / 345

4.1.2. One axis system
Single-axis controller model is a controller board in a metal case. Case dimensions are 62 x 44 x 124 mm.
Front panel of the controller contains power supply connector, USB-B data connector, status LED, power LED, left and right limit switch
LEDs, left and right movement buttons.
Rear panel contains positioner connector.

Connectors
Positioner connector
A female DSub 15-pin connector for positioner is mounted on the controller board.
11 12 13 14 15
6

7
1

8
2

3

9 10
4 5

8

12,6

30,8

16,3
25

Dimensions and numbers of the pins in DSub connector (front view).
Pins functionality:
1 - Not phase B of SM or - DC of the motor
2 - Phase B of SM or + DC of the motor or phase B on BLDC motor
3 - Not phase A of SM or - DC of the motor or phase C on BLDC motor
4 - Phase A of SM or + DC of the motor or phase A on BLDC motor
5 - 500mA - for 8SMC5, stabilized output for encoder power supply
6 - One-wire interface for positioner identification (for Standa hardware only)
7 - Logic ground for limit switches, encoder, etc.
8 - 2nd limit switch
9 - 1st limit switch
10 - Encoder channel A
11 - Encoder channel B
12 - Revolution sensor input
13 - Inverted Encoder channel A
14 - Inverted Encoder channel B
15 - Inverted revolution sensor input

Note. Only firmwares 4.1.0 and older support BLDC

Note. Outputs 1 & 3 and 2 & 4 must be connected together for proper DC motor function if the nominal current of the
motor is higher than 3A.

Warning. Plugging in/out the motor to the controller is not recommended while motor windings are under voltage.

Power supply connector. 1 and 2 axes system

Page 40 / 345

Page 41 / 345

One- and two-axis controller models in metal cases use Kycon 4-pin DC power connector (part number KPPX-4P, anacapa.kycon.com).

Pinout:
1 - Power,
2 - Power,
3 - Power,
4 - Power,

"-".
"+". 12-48V.
"-".
"+". 12-48V.

IMPORTANT. Never supply the power to the controller and do not plug it to power connector if you are not confident
that your power supply parameters conform to the requirements. Never attempt to plug the power supply to the
controller if you are not sure power supply unit and controller connectors are compatible! The acceptable connection
parameters are described in Safety instructions.

IMPORTANT. Hot-swapping or unreliable connection of the power supply connector MF-4MRA may damage the PC
and/or the controller. For more details please refer to Safety instructions.

Data connector. 1 and 2 axes system
Controllers in metal case connect via USB type-B connector.

USB-A - USB-B cable.

USB type B connector.
Output pin table
Pin # Name Wire color Description
1

VCC

Red

+5 VDC

2

D-

White

Data -

3

D+

Green

Data +

4

GND

Black

Ground

Warning. Use verified USB cables only! Damaged or low-quality USB cable may cause improper controller operation,
including motor rotation errors and errors of device recognition by PC operating system. Short cables with thick wires
and screening are ideal for sustainable connection.)

Supplementary one-axis system connector

Page 41 / 345

Page 42 / 345

One-axis controller model contains a HDB-26 female DSub connector.

Pinout of the supplementary HDB-26 connector, front view.
Pinout:
1 - NC, not used.
2 - NC, not used.
3 - NC, not used.
4 - GND, ground.
5 - NC, not used.
6 - Synchronization input.
7 - Synchronization output.
8 - RX_1, serial port input.
9 - NC, not used.
10 - NC, not used.
11 - NC, not used
12 - NC, not used.
13 - DIR_1, Direction signal for the external driver.
14 - GND, ground.
15 - +5V.
16 - BRAKE_1, brake control output.
17 - CLK_1, Clock signal for the external driver.
18 - TX_1, serial port output.
19 - NC, not used
20 - NC, not used
21 - NC, not used.
22 - GND, ground.
23 - PBRK_1, Magnetic brake output.
24 - +5V.
25 - IO_1, input-output pin.
26 - POT_1, analog input.

Page 42 / 345

Page 43 / 345

4.1.3. Two axes system
Enclosure view
Two-axis controller model consists of two controller boards in a metal case. Case dimensions are 122 x 45 x 106 mm.
Front panel contains power supply connector, USB-B data connector, supplementary two-axis system connector , USB cascade
connector, and power LED. The cascade USB-A output connector is used to connect several two-axis cases in line terminated with
either one-axis or two-axis case. This way a required number of axes can be connected to the computer with a single USB cable. The
front panel also contains status LED, left and right limit switch LED, left and right movement buttons for each of the two controller
boards of the two-axis system.
Rear panel contains positioner connector for each of the two controller boards, a joystick connector.

Connectors
Positioner connector
A female DSub 15-pin connector for positioner is mounted on the controller board.
11 12 13 14 15
6

7
1

8
2

3

9 10
4 5

8

12,6

30,8

16,3
25

Dimensions and numbers of the pins in DSub connector (front view).
Pins functionality:
1 - Not phase B of SM or - DC of the motor
2 - Phase B of SM or + DC of the motor or phase B on BLDC motor
3 - Not phase A of SM or - DC of the motor or phase C on BLDC motor
4 - Phase A of SM or + DC of the motor or phase A on BLDC motor
5 - 500mA - for 8SMC5, stabilized output for encoder power supply
6 - One-wire interface for positioner identification (for Standa hardware only)
7 - Logic ground for limit switches, encoder, etc.
8 - 2nd limit switch
9 - 1st limit switch
10 - Encoder channel A
11 - Encoder channel B
12 - Revolution sensor input
13 - Inverted Encoder channel A
14 - Inverted Encoder channel B
15 - Inverted revolution sensor input

Note. Only firmwares 4.1.0 and older support BLDC

Note. Outputs 1 & 3 and 2 & 4 must be connected together for proper DC motor function if the nominal current of the
motor is higher than 3A.

Warning. Plugging in/out the motor to the controller is not recommended while motor windings are under voltage.

Power supply connector. 1 and 2 axes system

Page 43 / 345

Page 44 / 345

One- and two-axis controller models in metal cases use Kycon 4-pin DC power connector (part number KPPX-4P, anacapa.kycon.com).

Pinout:
1 - Power,
2 - Power,
3 - Power,
4 - Power,

"-".
"+". 12-48V.
"-".
"+". 12-48V.

IMPORTANT. Never supply the power to the controller and do not plug it to power connector if you are not confident
that your power supply parameters conform to the requirements. Never attempt to plug the power supply to the
controller if you are not sure power supply unit and controller connectors are compatible! The acceptable connection
parameters are described in Safety instructions.

IMPORTANT. Hot-swapping or unreliable connection of the power supply connector MF-4MRA may damage the PC
and/or the controller. For more details please refer to Safety instructions.

Data connector. 1 and 2 axes system
Controllers in metal case connect via USB type-B connector.

USB-A - USB-B cable.

USB type B connector.
Output pin table
Pin # Name Wire color Description
1

VCC

Red

+5 VDC

2

D-

White

Data -

3

D+

Green

Data +

4

GND

Black

Ground

Warning. Use verified USB cables only! Damaged or low-quality USB cable may cause improper controller operation,
including motor rotation errors and errors of device recognition by PC operating system. Short cables with thick wires
and screening are ideal for sustainable connection.)

Joystick connector

Page 44 / 345

Page 45 / 345

A single-axis or two-axis controller model may contain a 9pin DSub male joystick connector.

1

2
6

3
7

4
8

5
9

Pinout of the joystick connector, front view.
Pinout:
1 - BUT_R_1, right button input, axis 1.
2 - Joy_2, analog 0-3V joystick input, axis 2.
3 - GND, common ground.
4 - BUT_R_2, right button input, axis 2.
5 - GND, common ground.
6 - Joy_1, analog 0-3V joystick input, axis 1.
7 - 3.3V output.
8 - BUT_L_1, left button input, axis 1.
9 - BUT_L_2, left button input, axis 2.

Note. If the connector belongs to a single-axis model, then pins 2, 4, 9 are not used.

Note. Unused pins of the internal connector do not require any additional connection or pullup/pulldown. Simply do
not use them.

IMPORTANT. Analog Joy, Pot inputs are designed to work with LESS THAN 3V voltage. Do not apply higher voltages,
including 3.3V, to these inputs, as it can break all analog controller inputs and lead to the controller or motor failure.

Supplementary two-axis system connector
Two-axis controller model contains a HDB-26 female DSub connector.

Pinout of the supplementary HDB-26 connector, front view.

Page 45 / 345

Page 46 / 345

Pinout:
1 - RX_2, serial port input, axis 2.
2 - Synchronization input, axis 2.
3 - TX_2, serial port output, axis 2.
4 - GND, ground.
5 - Synchronization output, axis 2.
6 - Synchronization input, axis 1.
7 - Synchronization output, axis 1.
8 - RX_1, serial port input, axis 1.
9 - NC, not used.
10 - CLK_1, Clock signal for the external driver, axis 2.
11 - POT_2, analog input, axis 2
12 - IO_2, input-output pin, axis 2.
13 - DIR_1, Direction signal for the external driver, axis 1.
14 - GND, ground.
15 - +5V.
16 - BRAKE_1, brake control output, axis 1.
17 - CLK_1, Clock signal for the external driver, axis 1.
18 - TX_1, serial port output, axis 1.
19 - DIR_2, Direction signal for the external driver, axis .
20 - BRAKE_2, brake control output, axis 2
21 - PBRK_2, Magnetic brake output, axis 2.
22 - GND, ground.
23 - PBRK_1, Magnetic brake output, axis 1.
24 - +5V.
25 - IO_1, input-output pin, axis 1.
26 - POT_1, analog input, axis 1.

Page 46 / 345

Page 47 / 345

4.2. Kinematics and rotation modes
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

Predefined speed rotation mode
Rotation for predefined point
Predefined displacement mode
Acceleration mode
Backlash compensation
Rotation reversal
Recommendations for accurate rotation
PID-algorithm for DC engine control
Stop motion modes
PID-algorithm for BLDC engine control

Page 47 / 345

Page 48 / 345

4.2.1. Predefined speed rotation mode
Predefined speed rotation mode is the main operating mode of the controller for all the motor types. It allows to maintain the
predefined rotation speed at a distance from the destination point and is usually used simultaneously with Rotation for predefined point
or Predefined displacement modes. This mode may also get called by left and right motion commands.
Motor steps or encoder counts (if the encoder is available) per time unit are used as speed measurement units. Encoders work with all
the types of motors. For DC motors the fixed speed is maintained even with the variable external load.
Turning on the Acceleration mode temporarily deactivates the predefined speed rotation mode.
After the controller receives the command to start the motion, it rotates the motor with user-defined speed. The speed adjustment
is available at the appropriate section of the "Settings..." menu of XILab software or using the set_move_settings() function (refer to
Programming guide section). For stepper motors the speed value may be defined in full steps and microsteps per second, for DC
motors the speed is defined in revolutions per minute (RPM).
The speed for special motion modes, e.g., for backlash compensation or automatic zero position calibration , is different from the
general rotation speed and is set separately.
The controller allows limitation of the maximum speed if appropriate parameter is defined by user. In that case any rotation that would
have happened with the speed over the maximum is performed with the maximum speed. A separate adjustment is available,
providing use of the maximum speed for all the ordinary motion modes, except for special ones, e.g., backlash compensation or
automatic zero position calibration . The maximum speed adjustment as well as the adjustment for modes using this speed are
available in the appropriate section of the "Settings..." menu of XILab software .
The actual speed is displayed in XILab main window, in the Speed field, or on main operating parameters charts.

Note. If the stability of the speed maintenance seems to be insufficient while the encoder is used, please refer to
recommendations for accurate rotation .

Note. Maximum allowed speed is 100000 steps/s or 100000 rpm depending on engine type.

Page 48 / 345

Page 49 / 345

4.2.2. Rotation for predefined point
The rotation to predefined point mode is the main operating mode for all the types of motors and is usually used simultaneously with
predefined speed rotation mode. It provides moving the stage to the defined position with absolute value for destination point
coordinates which is different from predefined displacement mode. An additional reciprocal motion close to predefined point may be
performed at Backlash compensation mode.
While using the encoder, few barely noticeable "vibrations" are possible before the motor stops in predefined point.
After the starting command is received by the controller, it either switches on the acceleration mode (if the appropriate option is on) or
immediately starts rotating the shaft of the motor with user-defined speed. After the predefined point is reached, the rotation stops;
deceleration may be activated if the appropriate option is on. The destination point is set in XILab main window. The destination
point may be defined either in full steps and microsteps for stepper motors or in encoder counts for all types of motors.
The actual position is displayed in XILab main window, in the Control section, or on main operating parameters charts.

Note. If the positioning accuracy seems to be insufficient while the encoder is used, please refer to
recommendations for accurate rotation .

Page 49 / 345

Page 50 / 345

4.2.3. Predefined displacement mode
The predefined displacement mode provides displacement of the stage for predefined value relative to zero position (if this is a first
command since the controller started) or relative to position reached by the motor after the previous commands are completed, i.e.,
the destination point coordinate is a relative value. This mode is useful when the absolute position is unknown or doesn't matter.
The predefined displacement mode is exactly analogous to rotation for predefined point mode. The differences concern the destination
position computing rules only. While there is no motion actually, calling the predefined displacement command rotates the motor
relatively to current position. If this command is sent during the rotation to the position (MOVE, MOVR, SSTP, STOP, LOFT), then the
displacement interval adds to destination position and the controller re-adjusts for the new destination point while the motor is
rotating. If this command comes during the rotation for certain direction, then the displacement value adds to previous destination
position and the motion automatically re-adjusts for the new position.

IMPORTANT. The displacement is always performed relative to position reached by stage while performing one of the
previous command, MOVE, MOVR, SSTP, STOP, LOFT, or while performing the displacement after the previous
incoming synchronization pulse has been received, despite whether the motion has been completed or interrupted.

Note. The predefined displacement mode is activated either by corresponding command or by incoming
synchronization pulse. For more information please refer to TTL synchronization chapter.

Page 50 / 345

Page 51 / 345

4.2.4. Acceleration mode
The acceleration function is active by default. The acceleration is used for smooth start or finish of the rotation without shocks that
are inevitable when the predefined speed is reached instantly. Moreover, inertia of rotor and the other components of stage usually
doesn't allow instant gathering of high speed which results in the loss of steps as well as failure in rotation during the operation without
feedback. While operating the motor with feedback via encoder, the speed will increase as quickly as motor limiters allow. High
acceleration makes the rotation unstable as well as it makes more noise and vibration. That's why the acceleration mode is
recommended. The acceleration function provides reaching of both maximum speed and sustainable motion even for motors with
intermediate torque value.
The acceleration/deceleration mode works in the following way: during the speeding-up, while the required speed value is higher than
the actual one, a gradual acceleration is performed at the Acceleration value which is measured in steps per squared second. After the
required speed is reached, the controller switches to predefined speed rotation mode. Approaching the destination position, the
controller begins to decrease the speed as the speeding-down would equal to Deceleration value and the motor would stop exactly at
the destination point. Thus, this mode provides a trapezoidal speed profile. If the displacement distance is small, then the acceleration
may change directly to deceleration; this will result to triangular speed profile. Turning the acceleration mode on and off, as well as
setting of acceleration and deceleration value, is possible using XiLab software (see the Settings of kinematics (Stepper motor) section)
or by set_move_settings() command described in Programming guide.
The Acceleration value is adjusted independently from the Deceleration value – and there is a reason for it. Usually, due to friction
effect resisting acceleration but contributing to deceleration, the maximum acceleration value is less than deceleration one. Therefore,
for the fastest response of the stage either preset profiles should be used, or the acceleration/deceleration values should be established
experimentally, according to what your stage may provide. For stepper motors working without feedback these are the values that do
not lead to the steps loss. For motors with feedback the trapezoidal speed profile should be controlled using XiLab charts. The
acceleration/deceleration values should be taken 1.5–2 times less than those resulting in speed profile distortion or step loss.

Note. Turning the acceleration/deceleration mode off is sometimes useful for multiaxis systems control where, during
the motion along multi-dimensional paths, a continuous speed projection on each of the axes is required.

Note. The acceleration value is not displayed in XILab main window.

Note. Acceleration/deceleration values should be set as to allow the motor to reach target speed or decelerate from
top speed to zero in less than 5 minutes. If the acceleration/deceleration on kinematic settings page is set outside of
this range, then the controller will return an "incorrect value" error and accelerarion/deceleration will be changed in
controller to applicable value.

Page 51 / 345

Page 52 / 345

4.2.5. Backlash compensation
Backlash occurs in any mechanical device, e.g., in reduction gear or in worm-gear. Backlash results in differences in physical stage
position when approaching the same point from different directions, whereas the motor shaft is exactly in the required position.
Backlash compensation mode is used in order to eliminate such ambiquity. Its activation allows user to determine the direction from
where the stage would approach the destination point. Further on, the stage will approach the stop point from the defined direction
only, eliminating the mechanical backlash. If the natural approaching direction doesn't match the selected one, then the controller
drives the motor for some user-defined distance beyond the destination point and after that turns the motor around and completes the
approach from the required direction.
While a loaded mechanical system is moving, its dynamic characteristics in the backlash zone do differ from the regular motion mode.
Therefore, the rotation in the backlash zone should be performed with user-defined speed.
The following parameters of backlash-compensating system are available for adjustment by user:
Backlash compensation on/off flag.
Rotation speed while performing the compensating motion.
Backlash compensation distance. The plus or minus sign for that parameter is used to determine the approach direction. The
plus means the approach from the left side whereas the minus means the approach from the right side.
The controller indicates if the backlash compensation is active using MOVE_STATE_ANTIPLAY flag in the state structure which is also
displayed in XILab main window.
A forced backlash compensation by using the LOFT command may be performed if there is no confidence that the actual position is
backlash-free. While carrying out this command, a displacement for backlash compensation distance is performed with subsequent
return. Calling this command while driving will lead to a smooth stop of the engine. This command makes sense only when the
backlash system is active.

Note. The backlash compensation mode presumes no axis position correction, providing the user with just the choice
of the direction from where the stage should approach the destination point, sticking to this selected direction.

The backlash compensation adjustment using XILab software is described in Settings of kinematics (Stepper motor) section. Switching
on and backlash compensation parameters detection commands are described in Programming guide.
The minimum backlash is reached if the approach to the setpoint is performed with the same movement parameters, so the optimal
values of the backlash parameters are: the play speed must be equal to the nominal speed, the backlash compensation distance must
be such that the device could reach the nominal speed.
Backlash compensation distance can be calculated from formula:

S - backlash compensation, Ac, Dc - acceleration and deceleration, U - nominal speed, 0.2 - even motion time.

Page 52 / 345

Page 53 / 345

4.2.6. Rotation reversal
It is a common agreement that the coordinate increase corresponds to movement to the right, whereas its decrease corresponds to
movement to the left. The rotation is to be reversed either if this rule is not satisfied due to physical stage location, or if the stage is
supplied with an anchor which is pointed so that it doesn't match coordinate increase.
The rotation reversal may be switched on in the Motor parameters block of XiLab menu. Switching this feature on will change the
current coordinate sign; thus, "left" and "right" terms will get interchanged. For example, the first movement during the Home position
calibration will perform physically to the opposite direction, the Left and Right commands in XILab main window will interchange, etc.

Warning. Reverse is a setting that affects the whole controller operation if changed. The previously used XiLab scripts
or your own controlling programs will work differently.
Particularly, the limit switches are adjusted independently from the reverse. Thus, after switching this mode on or off,
one must re-adjust them.

Page 53 / 345

Page 54 / 345

4.2.7. Recommendations for accurate rotation
The controller can automatically adjust itself for the required mode, in order to maintain either the speed or the coordinate. However,
both the speed and the adjustment property depend on the controller settings. The stepper motor working in steps and microsteps
positioning mode can instantly reach the required operating conditions. If the stepper motor is physically unable to provide the
required speed or acceleration, the rotation will most likely stop completely. The movement will not fail if a feedback sensor such as
quadrature encoder is used as a reference; however, the controller probably won't be able to maintain the required rotation
parameters.
The additional position sensor (encoder) is required for DC motors. The indirect connection of controlling scheme affection with DC
motor stage displacement results to slowing down of reaching the required coordinate or speed. The following recommendations will
help you to accelerate this process and to make it more stable:
The profile corresponding to the stage being used is normally uploaded to controller and is used by it. Please upload the profile
from the Configuration files chapter if you aren't confident that it is proper;
The motor doesn't enter the limitation mode for one of the operating parameters (refer to Motor limiters and Power control
chapters). Such limitations are displayed by the horizontal bar above the Current indicator in either Power, Voltage or Speed
blocks in the Motor section of XILab Main window in single-axis control mode . For more information please refer to Motor limiters
and Power control chapters.
There are no mechanical impediments for rotation, the axis and stage are not jammed;
The output power of power supply unit being used is sufficient (see the Safety instructions).

Page 54 / 345

Page 55 / 345

4.2.8. PID-algorithm for DC engine control
Algorithm description
DC engine is controlled by the PID regulator, with the coordinate as the controlled parameter. The controlled coordinate changes
according to motion settings and incoming commands to provide motion capability. We will call controller coordinate the running
position. DC engine winding PWM signal fill factor is the control signal of the regulator.
The control action is calculated according to the following formula:
, where:
- is the control action
- is difference between the running coordinate and the current motor coordinate
- are proportional, integral and differential coefficients of the regulator. Regulator coefficients are set on PID settings
page of the XILab program or programmatically by calling set_pid_settings() function of the libximc library (see Programming guide).
The resulting value is normalized according to the following formula to make PID regulator action independent of motor type, feedback
sensor and working voltage:
, where:
- is the PWM fill factor
- is the nominal (maximum) motor voltage, (see Motor limiters).
- is the current supply voltage
- is the feedback encoder resolution in counts per revolution
This approach allows to change motor type, feedback sensor and voltage supply unit without reconfiguring PID regulator.

Warning. Do not forget to change PID regulator coefficents accoring to abovementioned formula if you are going to
change maximum motor voltage.

Particular properties of the algorithm
PID regulator coefficients
User set values are normalized to keep optimal PID regulator coefficients in [0..65535] range.
Let's consider the effects different components have for better understanding.
We will assume the supply voltage
is constant and equal to the motor nominal voltage

. With this assumption PWM fill

factor will be equal to 1 in the following cases:
1.
- if target position is ahead of real position by 256 motor shaft revolutions
2.
- if integral in the formula above is equal to 52.5 revolutions second
3.
- if real motor speed is higher than the required speed by 96000 rpm.
Reaching target position
Target position is considered to be reached when motor shaft reaches the target position. Some oscillations around target position are
possible. Motor will need some time to stop and return to correct position if smooth deceleration is not used and an immediate stop
command is received or an emergency stop by limit switch has happened.

Warning. Long time oscillations around the target position while the motion is considered finished are possible if the
PID regulator is set up incorrectly.

PID regulator tuning recommendations
There are three quality criterions used when tuning PID regulator:
Speed maintenance accuracy, defined as a mean deviation of current speed from desired speed. Speed maintenance is
considered to work optimally if the speed takes no more than three distinct values when moving. It is impossible to achieve
greater accuracy because speed values are quantized.
Position reach quality, defined by the following criterions:

Page 55 / 345

Page 56 / 345

Time until final stop in target position (lower is better).
No slip on approach to the target position.
No oscillations around target position before stopping.
No spontaneous shifts from the target position after stopping.
Low noise when moving. Noise level is increased when only one of the PID coefficients is increased.
One can choose individual criterion priority depending on the task at hand when tuning PID regulator.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.

It is recommended to disable all DC motor limits including smooth acceleration/deceleration when you start tuning PID regulator.
It is recommended to tune PID regulator to maintain constant speed first.
It is recommended to start tuning PID regulator with integral and differential coefficients set to zero.
Set proportional coefficient
Set required movement speed and start the movement far away from the limit switches.
Gradually increase
and observe current speed graph. Find optimal
which makes the controller maintain current speed
the best and makes time to reach target speed less dependent on
. One should be aware of possible noise level increase.
It is recommended to tune
next. Integral PID regulator coefficient has more influence on position reaching behavior.
Set integral coefficient
and start movement to position. It is convenient to use "shift on offset" command for this.
It is advisable to use sufficiently long shifts so that motor reaches at least 20% of required speed.
Increase of
makes the controller stop at the target position faster.
Achieve faster reaching of the target position by gradually increasing
. One should stop increasing this coefficient when either
quality of position reaching degrades substantially or noise levels increase. Slip at the target position will remain regardless.
Adjust
up or down to decrease oscillations at the target position.
After one adjusts
one should check the speed maintenance quality and noise levels. If these parameters are unsatisfactory
then one should adjust coefficients towards their previous values.
After setting
and
you can set up
.
It is recommended to start tuning
in speed maintenance mode and then check other quality parameters.
One should increase
until speed oscillations around target speed stop decreasing.
In case of target position slip one should increase
. However, further increases of this coefficent will lead to oscillations
around target position. One should keep a balance between oscillations and target position reaching speed.

Turn on smooth acceleration/deceleration if you plan on using this mode. This can lead to the slip at the target position. To compensate
one should increase
.
After these steps the initial setup of PID algorithm is complete. The obtained coefficients are in most cases suitable for motor
operation. To further optimize these coefficients one can vary them while continuously monitoring quality according to the relevance of
chosen quality criterions to the particular task.

Note. It is not recommended to adjust more than one coefficient at a time while tuning the PID regulator.

IMPORTANT. It is extremely not recommended to start with large values of PID regulator coefficients or to rapidly
adjust them. This can lead to self-excitation of speed oscillations and motor failure.

Page 56 / 345

Page 57 / 345

4.2.9. Stop motion modes
There are two stop motion modes in the controller:
emergency stop;
stop with deceleration.

Emergency stop
Emergency stop is initiated by the command STOP. The controller tries to instantly stop the rotation of the motor shaft. This can lead
to missed steps in a stepper motor, if no feedback is used. Abrupt cessation of movement can adversely affect the equipment, for
example, may shift samples on the microscope stage or require additional adjustment of the optical line after a sudden stop.

Warning. When the controller is configured to trigger a stop on the left/right limit switch, it always occurs
immediately when the stage reaches the limit switch. This should be avoided.

Stop with deceleration
Stop with deceleration is initiated by the command SSTP. A smooth stop occurs with deceleration Deceleration, if it is not disabled in
the acceleration mode settings.

Warning. If the acceleration mode is disabled, then there is no difference between the emergency stop and the stop
with deceleration. An SSTP command will then result in an immediate stop.

Page 57 / 345

Page 58 / 345

4.2.10. PID-algorithm for BLDC engine control
Algorithm description
BLDC engine is controlled by the PID regulator, with the coordinate as the controlled parameter. The controlled coordinate changes
according to motion settings and incoming commands to provide motion capability. We will call controller coordinate the running
position. Output current is the control signal of the regulator.
The control action is calculated according to the following formula:
, where:
- is the control action
- is difference between the running coordinate and the current motor coordinate
- are proportional, integral and differential coefficients of the regulator. Regulator coefficients are set on PID settings
page of the XiLab program or programmatically by calling set_pid_settings() function of the libximc library (see Programming guide).
The effects different PID components (Kp, Ki, Kd) have are same for BLDC and DC motors. See PID-algorithm for DC engine control

PID regulator manual tuning
We provide a special XiLab extension for the manual adjustment of the PID regulator coefficients. The time dependence of the speed of
the BLDC engine and the speed retention error is shown in a special window, see the screenshot below.

The PID regulator tuning window
The stable position retention is necessary for the correct engine operation.
Steps to adjust the coefficients:
1. First, you need to evaluate the PID coefficients. Given the structure of the managed system, they can be calculated from
simplified formulas. For this, the parameters from the documentation for the appropriate motor and positioner are used.
- electromechanical motor coefficient [H / A] (the torque generated by the current strength is 1 A). Can be calculated
as the ratio

, where

is the nominal (maximum) force generated by the motor,

current strength.
- weight of load (kg).
.

Page 58 / 345

is the rated (maximum)

Page 59 / 345

,
,
.
2. Set the coefficients calculated by formulas, click Apply. Click the Zero button on the main XiLab window. Set 0 to the Move to
field, send the command. The engine should stop. Try to move the position manually, make sure that the response is correct the engine tries to return to zero position (the encoder reverse is set correctly).
3. Set a small speed in the motion settings, click Apply. Start moving in the main window. The differential coefficient (Kdf) should
be increased if there are vibrations and disruptions.
4. If the vibrations have audio frequencies (the positioner emits a loud sound when driving), it may be necessary to reduce the Kd
coefficient or all the coefficients proportionally
5. The integral coefficient (Kif) is responsible for getting into the target position, it is convenient to use the command Shift on for
testing.
6. To fine-tune the coefficients use the Oscilloscope window where the speed retention error is displayed for used motion
parameters.
Note. Only special XiLab version support oscilloscope window. Contact us to get it.

7. After the coefficients are adjusted, they need to be proportionally increased/decreased, this corresponds to an increase/decrease
in mass, response to the impact becomes more/less powerful, sudden stops will not lead to disruption of movement.

Page 59 / 345

Page 60 / 345

4.3. Main features
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

Supported motor types
Motor limiters
Limit switches
Automatic Home position calibration
Operation with encoders
Revolution sensor
Steps loss detection
Power control
Critical parameters
Saving the parameters in the controller flash memory
User defined position units 8SMC5

Page 60 / 345

Page 61 / 345

4.3.1. Supported motor types
Currently the controller supports stepper and DC motor types. The parameters of supported motors are described in Specifications
chapter.

Stepper motors
Rated current is the main parameter of the stepper motor. The rated current is adjustable at the Settings of kinematics (Stepper
motor) section.

IMPORTANT. The motor will gradually overheat and get physically damaged if rated current is exceeded. Make sure
that the rated current value is set according to the used stage. All the settings are proper in default stage profiles.

Step division mode is another important parameter. The following step division options are available to user:
1 (full) step
1/2 of the step
1/4 of the step
1/8 of the step
1/16 of the step
1/32 of the step
1/64 of the step
1/128 of the step
1/256 of the step
The microstep mode is set either on Settings of kinematics (Stepper motor) page or by motor adjustment commands. See the
Communication protocol specification and the description of the related functions in the Programming guide chapter.

Note. The controller always uses the internal step division value equal to 1/256. If the user selects a coarser step
division, the software will display only the multiple of the coarser step division positions and both adjustment and
transmission are possible only in that coarser step division mode. This is done for compatibility with both obsolete and
actual software operating with small multiples of the step division values. On the other hand, operations with the
largest step division value provides the most smooth and silent rotation at the smaller speed values.

The number of steps per revolution is the another direct parameter of the stepper motor. This setting does not affect the rotation but is
used in slipping control block or with motors with the encoder feedback.

Note. The controller supports stepper motors with feedback sensor - encoder. The encoder can be used as the main
position sensor (more info) and as the slippage, backlash or steps loss detector ( more info). Using the encoder
facilitates a stable passage of the resonant speeds without movement disruption.

DC motors
Unlike stepper motors, controlling DC motors requires feedback. Currently only encoder is supported as a feedback sensor.
Main DC motor parameters are maximum current and voltage, which can be set on Settings of kinematics (DC motor). Main encoder
parameter is counts per revolution.

IMPORTANT. The motor will gradually overheat and get physically damaged if rated current is exceeded. Make sure
that the rated current value is set according to the used stage. All the settings are proper in default stage profiles.

IMPORTANT. Setting wrong value of encoder counts per revolution will lead to the controller being unable to
maintain speed correctly. In some cases it may lead to stage or reducing gear failure.

DC engine is controlled by the PID regulator. Please carefully read PID-algorithm for DC engine control before you start working with it.

Page 61 / 345

Page 62 / 345

IMPORTANT. Wrong PID regulator settings might lead to stage failure. All supplied profiles are preset with correct
PID settings. It is not recommended to alter these settings unless absolutely necessary.

BLDC motors
Firmwares 4.1.x and older support BLDC motors controlling. Like DC motors, controlling BLDC motors reqiures feedback.
Main BLDC motor parameters are maximum current and number of poles, which can be set on Settings of kinematics (BLDC motor).
Main encoder parameter is counts per revolution.
Like DC, BLDC engine is controlled by the PID regulator. Please carefully read PID-algorithm for BLDC engine control before you start
working with it.

IMPORTANT. Like DC motors, wrong PID regulator settings, current and encoder settings might lead to stage failure

Engine selection criteria
Pulse-width modulation (PWM) is a widely used way to control winding's current in different motor types. It leads to current oscillations
at PWM switching frequency (so-called "current ripple"). Current ripple's amplitude depends on motor characteristics like its winding
inductance and resistance. Motor can heat up more than it is expected with nominal current due to current ripple, i.e.
is

- power dissipated by

(stabilization current),

. There

- real power, dissipated in motor. For overheating estimation we

recommend to use this graph:

Tab 1

Page 62 / 345

Page 63 / 345

Motor

RT/L

20

0.19576

28

0.07253

28s

0.07168

4118L1804R 0.02715
4118S1404R 0.02844
4247

0.0273

D42.3

0.0223

5618

0.0146

5618R

0.0146

5918

0.0116

5918B

0.012

VSS42

0.029

VSS43

0.0256

ZSS

0.04248

DCERE25

0.2106

The motor's overheat is determined by this sequence:
calculation. There is

- resistance and inductance of motor winding (refer to the motor documentation).

- PWM period

time. It's value should be 51.2 us for stepper motors and 25.6 us for DC motors.
calculation. This parameter shows power voltage excess under nominal voltage. There is

- power voltage,

- winding

resistance,
- stabilization current.
Overheat definition. After first two steps point can be plotted at the graph. Now we should define the region, which corresponds
to overheat degree. For example, the region between 1.1 and 1.2 corresponds overheat value between
and
There is DCE1524 overheat calculation example:
= 25.6 us

= 5.1 Ohm

= 70 uH

= 1.86
Now we can draw vertical line corresponds this value (look at graph) and find out overheat with different power voltages. Let's assume
= 500 mA. Nominal voltage in this case is
= 2.55 V. If power voltage exceeds nominal more than 5 times but less than 10
times DCE1524's overheat will be between 1.5 and 1.6. Motor overheats about 1.65 times with 30 V of power voltage.
All the major engines and their parameters have been marked in Tab. 1.

Page 63 / 345

Page 64 / 345

4.3.2. Motor limiters
Motor winding current and voltage limiters and motor shaft revolution speed limiters are provided to ensure safe operation. These
limiters, if activated, will lead to gradual power and rotation speed decrease until the parameters being limited are within acceptable
range. Motor limiters work with voltage and current values directly on motor windings, unlike critical parameters, which work with
current and voltage at the controller input. Another distinctive feature of limiters is that they do not stop the motor and let the
controller enter Alarm state; they merely limit voltage, current and motor revolution speed.
For DC motors:
Max voltage is the nominal motor voltage. It defines maximum motor winding woltage. It is usually used to limit voltage growth
when the motor or stage is jammed. Should only be used if maximum motor winding current is unknown. This parameter is used
in PID regulator.
Max current defines maximum engine winding current. It is usually used to limit current growth when the stage is jammed. One
should set this limit based on maximum current which can be sustained by the motor without damage (primarily by heating).
Max RPM is the maximum motor shaft revolution speed. Is usually used to limit revolution speed when working with reducing
gears and other devices which have strict maximum speed limits.

Note. One should be aware of the distinction between maximum motor current and nominal current. In general they
may be different because of motor cooling features and operating conditions. Also, one should not mix up maximum
current and starting current with stationary motor shaft.

IMPORTANT. Changing maximum motor voltage might disrupt PID regulator. For more information see PIDalgorithm for DC engine control.

IMPORTANT. Maximum motor voltage may exceed nominal voltage, usually by 10-15%. If you are using a motor
with low load and you need high motor speed, then you can increase maximum motor voltage.

Current limiter operation.
It is important to note that maximum current limiter does not react immediately when working with DC motors. When a higher than
maximum current is detected in the motor winding, voltage supplied to the motor is gradually decreased until winding current is less
than Max current. In the worst case of a rapid jam during high-speed movement motor voltage may decrease for at most 370ms. If the
current limit is chosen right, motor should not overheat during this time.

Note. If the Max current value is set too low, it is possible that DC motor will not be able to move under high load or
high friction.

For stepper motors:
Max(nominal) Speed is a maximum motor shaft rotation speed in steps per second. Current stepper motor speed is defined by
Speed parameter (see Predefined speed rotation mode).
Nominal current defines maximum motor winding current. This value cannot be exceeded due to characteristic stepper motor
control.
In the XILab software limiter settings are described in sections Settings of kinematics (DC motor) and Settings of kinematics (Stepper
motor).

Page 64 / 345

Page 65 / 345

4.3.3. Limit switches
Limit switches designation
Limit switches are designed in order either to prevent the stage movement out of permissible physical movement range or to limit its
movement range according to user-defined requirements. Incorrect setting of the limit switches may result to stage jam if the
controller goes beyond the permissible range.

General settings
If the limit switch is active, a corresponding flag is placed in the state structure and the appropriate icon (left or right) is displayed in
XILab Main window. The controller can either stop any movement in the direction of any active limit switch (left or right) or stop the
movement to the single limit witch (left or right) or not to limit the movement. Limit switches settings are performed in XILab software
(see the Motion range and limit switches section).

Programmable motion range limitation
If there are no hardware limit switches for the motion range but the stage requires such limitation, the programmable limiters can be
used. For doing that, the limiters should be switched to limitation mode according to position reading (see the Motion range and limit
switches section). The left and right margin fields are used (the right margin value should be higher than the left one). In this mode,
the left limit switch is active if the actual position is less than the left margin value and the right one is active if the actual position is
greater than the right margin value. The operation time is about one millisecond.

Warning. The programmable motion range limitation is reliable only if there is no direct setting of the new position
by ZERO or SPOS commands, or if there is no steps loss or encoder malfunction if it is used for positioning, or if there
is no frequent power-cut during the rotation. If any of these problems appears, the programmable range should be readjusted. The appropriate reference sensor allows the automatic re-adjustment using the automatic Home position
calibration feature.

Hardware limit switches
The controller may operate with limit switches based either on dry contacts, or on optocouplers, or on reed switches, or on any other
sensor types generating a 5V TTL-standard "logic one" electric signal in one state and a "logic zero" in the other. Each limit witch may
be configured independently. There is also possible to change the position of limit switches or their polarity in software.

Note. Limit switches are also useful for automatic Zero position calibration .

Limit switches connecting instructions
Limit switches should be connected to D-SUB connector pins as it is shown at the diagrams:

The "optocoupler" limit switches connection diagram.

The "dry contact" limit switches connection diagram.

Limit switches location on translators

Page 65 / 345

Page 66 / 345

The settings of which limit is left or right is required by the controller. Sometimes it is unknown a priori, just it is clear that both limit
switches are connected and fire if the corresponding limit of the motion range is reached. The stage jam is possible if the limit switches
are configured improperly. Therefore, the controller supports just a simple detection of incorrectly configured limit switches, shutting
down the movement on both of them. Please make sure that their polarity is configured correctly and the shutdown mode is activated
on both of limit switches. The flag of improper limit switch connection detection should be turned on in corresponding XiLab software
menu. Start the movement to any direction until the limit switch shuts the movement down. If there was right-side movement but the
left limit switch became active, or viсe versa, the limit switches should be interchanged (see the Motion range and limit switches
chapter). If the improper actuation of the limit switch is detected and if the corresponding feature is set in the Critical parameters
menu, the controller can turn the Alarm mode on.

Warning. The protection against mistaken limit switches connection doesn't guarantee the complete solution of the
problem, it only makes the initial configuration procedure easier. Particularly, don't start the movement if any of the
limit switches is active, even if the protection is on.

Page 66 / 345

Page 67 / 345

4.3.4. Automatic Home position calibration
This feature is used for detection and placing the movement to the starting position. This option of the controller is designed for simple
search of "Home", or "Zero" position by user himself, with no need of any programming skills. The Home position is set relative to one
or two external sensors and/or to an external signal.
Automatic Home position calibration feature is configured by user in Device configuration->Home position folder of XILab software (see
the Home position settings chapter) and is activated by the button in XiLab main window.
After this feature is activated, the controller rotates the motor to the defined direction with normal speed to quickly locate the stop
position. After finding the boundary position controller assigns motor back half a turn and begins rotate the motor to the defined
direction, but with another calibration speed. The calibration speed is usually set lower than the normal rotation speed in order to
improve the calibration accuracy. There are three ways to determine the completion of the motion, according to user-defined
preferences:
rotation until the limit switch is reached, the actual configuration of limit switches is used (e.g., polarity, location). For more
details please refer to Motion range and limit switches chapter.
rotation until a signal from the synchronization input is received, the actual configuration of synchronization input is
used. For more details please refer to Synchronization settings chapter. If the synchronization input is switched off by program,
the signal from it will never be processed.
rotation until a signal from the revolution sensor is received, the actual configuration of revolution sensor is used. For
more details please refer to Position control chapter.
Successful completion of home position calibration results in assertion of the STATE_IS_HOMED flag in the controller state structure . If
after this position somehow got lost (stop on limit switch, emergency stop while moving, steps loss detection, turns the Alarm mode),
the corresponding flag is dropped and it is necessary to re-calibrate the home position.

Note. If command emergency stop or command power shutdown are executed while the engine is stopped then it
isn't necessary to re-calibrate the home position and the STATE_IS_HOMED flag is not dropped.

Note. If the completion of the motion should happen at the limit switch, the calibration program is not crashed.

Fine calibration
After the first displacement the controller position is defined. However, some additional rotation may probably get turned on before the
movement to Home position is performed. It provides fine Home position calibration that may reach 1/256 of the step for stages with
stepper motors or 1 encoder count for stages with DC motors. If the corresponding flag is switched on, the controller rotates the motor
to user-defined direction with defined rotation speed until a signal either from the synchronization input or from the revolution sensor
is received or until the limit switch is reached, according to user-defined preferences. Using the signal from the sensor on the shaft
from motor to reducer and performing the motion with the small speed does make sense. It provides the maximum accuracy. Since
first and second movement signals might happen simultaneously a flag is provided, which will start tracking second motion end signal
only after motor shaft half-turn. This allows avoiding the signals of the completion of the first and second motions to be in ambiguous
sequence. As a result of optional second motion, the calibrating position becomes more accurate.

Note. If the second phase of the motion is used, the first motion usually can be performed at the high speed since it
provides just a coarse calibration and the accuracy is not required there. The accuracy will not improve if the second
limit switch is used for the second phase of the motion since its physical characteristics are the same as for the first
limit switch.

Finally the controller moves the motor to the defined direction with the defined speed at the defined Standoff distance. This is what
required to reach the Home position.

Note. The position reached as a result of calibration will slightly depend on the speed of the last motion until the
selected sensor responsed. Therefore, don't change the speed parameters for further successful reaching the same
position.

The automatic Home position calibration features are described in the Programming guide chapter.
The parameters configuration commands are described in the Communication protocol specification chapter
The position calibration command is described in the Communication protocol specification chapter.
A set_zero script is supplied with XiLab software pack, providing the automatic Home position configuration. This script changes the
Standoff setting in Home position folder, making the actual position as the Home one.

Page 67 / 345

Page 68 / 345

How to use the script:
place the movement to the desired position
launch the script and wait until it's finished.
As a result, the movement will be in the same position and all the following calls of homing function will move it there. Make sure to
save the settings to controller's nonvolatile memory.

Page 68 / 345

Page 69 / 345

4.3.5. Operation with encoders
Application of encoders
Encoders are designed for creation of accurate and fast feedback according to the coordinate for all the electric motor types.The
feedback is performed by the motor shaft position, by stage's linear position, by the motorized table rotation angle or by any other
parameter related to the shaft position and measured by using the two-channel quadrature encoder complying the requirements
described in Specifications SMC5 chapter for the appropriate controller type. Controller 8SMC5 supports differential encoders and
simple (single-ended) encoders.

What is quadrature encoder?
Encoder is a mechanical motion sensor. The quadrature encoder is designed for direct detection of the shaft position. The sensor
transmits the relative shaft position by using two electric signals at СН А and СН В channels shifted relative to each other at 1/4 of
period.

The signals at СН А and СН В outputs of quadrature encoder.

An optical quadrature encoder mechanics.
An optical quadrature encoder mechanics is shown at the figure above. There are two optocouplers used. The operational principle of
an optocoupler is as following: a LED and a detector are arranged opposite to each other from different sides of a disc. The optocoupler
opens when disc's "window" coincides with the detector (the outgoing signal is logic zero). The outgoing signal is logic one if the
detector is closed by opaque part of the disc.
Number of steps per revolution (CPR) is the main parameter of the quadrature encoder. The standard resolution values for encoder are
from 24 to 1024 CPR. Each period of signal alteration is interpreted by 1, 2 or 4 codes which is corresponding to X1, X2 and X4
operating modes. This controller uses the most accurate X4 mode. The maximum frequency of each encoder's signal depends on the
applied encoder itself, since for 200 kHz in X4 mode the controller can read up to 800,000 encoder counts per second.

Controller's features
There are two operating modes with encoder available for the controller:
the encoder is used as the main position sensor (this is the main operating mode for DC motors and the optional one for stepper
motors).
slippage, backlash or steps loss detection (the recommended mode for joint operations with stepper motors, in case the encoder
is not used as a primary position sensor, see more).

Driving encoder mode
This is the mode when all parameters of the engine including position and velocity are measured directly by the encoder and are
denominated basing on counts of encoder. The position is displayed directly in the encoder counts, the speed is denominated in RPM
(revolutions per minute). The speed is calculated by the controller basing on the speed alteration data as well as on the number of
encoder pulses per one complete revolution of the motor shaft that are displayed in feedback configuration block at the Settings of
kinematics (Stepper motor), (DC motor) folder. Note that in the case of DC motor the speed maintaining mode, the mode of
movement to the predefined point as well as all their derivations use PID control algorithms and the appropriate settings are required.
The driving encoder mode optimizes stepper motor control, this leads to noise reducing and facilitates a stable passage of the resonant
speeds with no risk of steps loss when the coordinate flounders and the recurrent calibration is required.
New! New motor control algorithm is included in the latest firmware. The algorithm add encoder close-loop feedback suppressing
motor oscillations and acoustic noises. It makes almost all motors several times faster without any step loss. It all comes with a free
update of firmware and software. The new algorithm is available with firmware 4.0.7+ which can we downloaded from our Software
page or updated through XiLab. Use XiLab 1.13.13+ and set Feedback to Encoder on the Device configuration -> Stepper motor page.
Note, that position is in encoder counts now.

Page 69 / 345

Page 70 / 345

Encoder connection
The encoder is connected to the controller via D-SUB 15 pin connector, which is in all systems ( controller board, one-axis and two-axis
in box

The diagram of single-ended encoder connection using D-SUB 15 pin connector.

The diagram of differential encoder connection using D-SUB 15 pin connector.
See also the Example of a motor connection chapter.

Warning. Encoder inputs of the controller internally pulled up to logic one by using the 5.1kΩ resistors. Frequently
encoder outputs are of "open collector" type equipped with internal pull-up resistor. During the data transmission they
provide good characteristics while passing from higher logic level to lower. However, the pass from logic 0 to logic 1 is
more graduate. It passes through the RC circuit formed by pull-up resistor and cable capacitance. This is the most
important thing if the cable is long. If the internal pull-up is not sufficient, the pull-up resistor with r=1.5kΩ may be
added for every +5V to each output in order to improve the transmission speed parameters; before doing that please
check if the open collector of the encoder can transmit 5mA current. The resistors insertion diagram is shown above.
The maximum operating speed for quadrature encoder may be increased by adding a push-pull driver with the
outgoing current over 10mA to its output, providing quick 0 - 1 and 1 - 0 transmission edges.

Page 70 / 345

Page 71 / 345

4.3.6. Revolution sensor
Revolution sensor is designed for stepper motor shutdown (failure) detection and for better accuracy of Home position calibration
procedure (see Automatic Home position calibration ).
The controller may receive the actual position data from the external revolution sensor mounted on the stepper motor shaft. The
sensor transmits its signals to the controller once or many times per one revolution of the motor.
Usually the revolution sensor is a small disc with precise graduation scale mounted on the motor shaft. A light source (LED) and a
sensor of the optocoupler are placed at the opposite sides of the disc. The sensor is open if there is no interrupter between the LED
and the sensor (the logic zero is transmitted to optocoupler's output), whereas the logic one is transmitted if the light source is closed
by the interrupter.
By default, the lower logic level is interpreted by the controller as the active mode of the revolution sensor. The controller's input is
pulled to logic one level, thus, the disconnected revolution sensor means its inactive mode. The controller's input can be inverted if
necessary, in that case the logic one level will mean the active mode.

Connection diagram
The revolution sensor should be connected to the controller via 15pin D-SUB connector, which is in all systems ( controller board, oneaxis and two-axis in box).

Scheme of revolution sensor connection to the 8SMC5-USB based system

Page 71 / 345

Page 72 / 345

4.3.7. Steps loss detection
This mode is generally used while operating the stepper motor at full speed or limit loads when the shaft jam resulting to the steps loss
is possible. In this case an additional position sensor (revolution sensor) or encoder allows tracking this moment, informing the user
about it. This feature should be applied with stepper motors only and it allows detection of the steps loss. Steps and microsteps are
the measurement units for all coordinates and shaft positions.
When the encoder is used, the controller stores both number of steps and number of encoder's counts per revolution (see the Settings
of kinematics folder of XiLab program). When the feature is activated, the controller saves the current position in steps of the motor
and the current position according to the encoder data. Then, during the motion, the position data according to the encoder converts
to steps and if the difference exceeds the predefined value then the slippage is indicated and the Alarm mode turns on (if the related
option is active). For more information regarding use of encoder as the steps loss detector please refer to Operation with encoders
chapter.
If the revolution sensor is used, the position is controlled according to it. The controller stores the current position in steps according to
active and inactive edges at the sensor's input. Then, at every revolution (number of steps per one full revolution is set by Steps per
turn parameter, see the Settings of kinematics (Stepper motor) chapter) the controller checks if the shaft has been displaced and how
many steps for. If the mismatch exceeds the predefined Threshold value (which is defined in position control settings, see the Position
control chapter), the slippage is indicated by the state structure flag. If the appropriate flag is set and if the error is detected, the
controller turns the Alarm mode on and the motor shuts down, otherwise the motion is continued. If the slippage indication flag is
active, the controller turns the Alarm mode on when the appropriate parameter in the settings is active.
Also you can enable the position correction option in the position control settings. If this option is enabled and the steps loss is
detected the controller stops the movement, adjust the step position on the basis of the encoder data and try to start the movement
again. The flag of the control position error The position control error flag is set when the desynchronization of the steps and the
encoder position is detected and it will be unset automatically when the position becomes corrected. If the controller is not able to
eliminate the desynchronization the controller is set the position control error flag and goes to the Alarm mode. If the steps loss
happens during the movement the movement command status will not be changed while the position is correcting. If the steps loss
happens during holding a position the move to position command will be executed for return the motor axis to the holding position.

Note. For using the position correction function you should have the encoder with the resolution at least two counts
per the motor step.

Note. For correct operation of the position correction option you should let the controller to hold the position during 1
second for calibration before moving. It necessary to repeat the calibration after the transition to the Alarm mode or
after changing the settings.

Note. If the automatically position correction is used it is not recommend to set the Threshold value above than 3
steps because in this case not any slippage will be corrected.

Note. The soft stop and the hard stop commands could be ignored by the controller if it was sent during position
correction process. In this case you can send the soft stop command twice for power off the motor windings.

Note. If you use the software limit switches it is not recommend to use the automatic position correction because the
limit switches positions will be changed during position correction process.

Note. A hard STOP launches the the re-calibration process of the revolution sensor position, and the calibration starts
after the revolution sensor activates during the motion controlled by the motor. It means that the slippage won't be
detected if the shaft has been rotated manually right after the hard stop since the calibration hasn't been performed
yet.

Note. If the motor revolution sensor is bouncing (mechanically), the misoperations of the revolution sensor are
possible at the very low speeds.

Page 72 / 345

Page 73 / 345

Note. The position control of the revolution sensor can't detect the shaft rotation at the zero speed, i.e., if the motor
is shut down and the shaft is rotated manually, it won't be detected.

Page 73 / 345

Page 74 / 345

4.3.8. Power control
Current consumption reduction
Controller has an option to set current when idle to reduce power consumption. This mode is active by default. It is widely used to
lower stepper motor heating in hold mode while keeping position maintenance accuracy. Hold current is set as a percentage of nominal
winding current. A time delay after which current will be reduced is also defined. Current reduction mode can be disabled. To set
current reduction see set_power_settings function in Programming guide or XILab Power consumption settings page. Nominal engine
current is set by set_engine_settings function (see Programming guide) or on Settings of kinematics (Stepper motor) page in XILab.
A reasonable hold current level is 40-70%. This will lower power consumption 2-4 times, while keeping holding force sufficient. A
reasonable time to reduce power lies in 50-500 ms range. This is a sufficent time for mechanical oscillations, which might knock the
system out of the hold position, to subside.

The motor power shutdown
There is also a power shutdown mode to reduce power consumption of a stepper motor. It is mostly used to stop wasting power on
position hold, when no movements are performed for a long time. This mode is on by default, but can be disabled by the user. Time
from motor stop to power off is set in seconds. A reasonable time is 3600 seconds (one hour). To set power off options see
set_power_settings function in Programming guide or XILab Power consumption settings settings page.

Time delay calculation specifics
All timeouts work in the follwing way: on each transition to stop state time is saved with millisecond accuracy. After certain set time is
elapsed depending on PowerOff/CurrentReduce enabled state a motor will reduce winding current or turn its power off. All settings can
be changed online. For example, if you increase PowerOff timeout value after the poweroff has already happened then windings will get
powered on and a PowerOff function will activate after the new delay. Timeout countdowns cancel after each movement start.

Jerk free function
Sometimes smooth motor winding current changes are required to reduce vibrations of a mechanical system. That's why a Jerk free
option is provided, which allows one to set current ramp-up time from zero to nominal value with millisecond precision. When this
option is turned on all changes to stabilization current or winding powerdown will happen with smooth current increase or decrease. For
example, if jerk free time is set to 100ms and the controller needs to reduce current to 50% it will be reduced over the time of 50ms
(because 100ms are required to reduce current from full to zero). To setup Jerk free see set_power_settings function in Programming
guide or XILab Settings of kinematics (Stepper motor) page.
Smooth current change function activates on any change in the amplitude of the winding current, for example on nominal hold current
change. In this case current change speed is calculated based both on older and newer hold currents, whichever is higher. If controller
needs to turn off the motor windings then current is gradually ramped down, then power output circuits are disconnected. If controller
needs to power up the windings, then they are powered with zero current which increases up to nominal current.
There are exceptions to the rule, when the current is immediately reduced to zero even if Jerk free option is active. These are the
critical errors/Alarm state (see Critical parameters) and controller reset events on firmware update. These events are rare and should
not happen during normal stage operation.
A reasonable Jerk free time is 50-200ms, which merely leads to low-energy mechanical oscillations on 3-10 Hz frequencies which are
significantly lower than noise from other common sources. Higher Jerk free times will lead to constant delays when current is switched
on or off.

Page 74 / 345

Page 75 / 345

4.3.9. Critical parameters
Minimum and maximum values of currents, voltages and temperatures are used for safe controller operation. Any value out of
acceptable range leads to the motion stop, windings power-down and Alarm state for the controller. Exiting the Alarm state is possble
only after the critical parameter returns to normal and the STOP command is sent to the controller. Critical settings are used for all
motor types.
The following parameters are available:
Low voltage off defines the minimum voltage value of the controller power supply (measured in tens of mVs). The Low voltage
protection flag is used to turn this option on, otherwise the minimum unpowering threshold doesn't work. The 6000mV to
8000mV range is sensible for operating power range of 12V to 48V. This type of protection helps to determine the power-cut
moment due to activation of any sort of power supply unit protection. This may occur if the operating power consumption of the
stabilized power supply unit is exceeded.
Max current (power) defines the maximum current of the controller power supply (measured in mAs). The sensible value is twice
the maximum operating consumed current registered during the tests. Use the XiLab charts for registration of the consumed
current.
Max voltage (power) defines the maximum voltage value of the controller power supply (measured in tens of mVs). The sensible
value is 20% higher than power supply unit voltage.
Temperature defines the maximum temperature of the microprocessor (measured in tenths of degrees Celsius). The
microprocessor can operate at the working temperature of up to 75ºC and doesn't overheat by itself. Rise of its temperature
indirectly indicates the overheating of the power part of the board. The overheating threshold range from 40ºC to 75ºC is
sensible.
Flags:
ALARM_ON_DRIVER_OVERHEATING means entering the Alarm mode if the driver's critical temperature (over 125ºC) is
exceeded. The power driver indicates if its temperature is approaching the critical value. If the driver is still working then the
further heating will automatically shut it down. It is recommended to set this flag and not to rely on automatic forced shutdown.
H_BRIDGE_ALERT means turning the Alarm mode on if any fault of the power driver due to board overheating or damage is
detected. This flag should be set on.
ALARM_ON_BORDERS_SWAP_MISSET means turning the Alarm mode on if the triggering of the wrong limit switch, not
corresponding to direction, is detected (see the Limit switches chapter). This flag is intended for clear indication of the response
of the limit switch swap detection subsystem. The flag is recommended to be set on.
ALARM_FLAGS_STICKING flag activates the sticking of the error indicators in the status structure of the controller, otherwise
indicators are active only during the accident that caused the error. If there was a short-time error and its cause was
independently removed, then sometimes the reason of Alarm remains uncertain. In that case the sticking is useful and the
accident cause can get diagnosed in XiLab main window.
USB_BREAK_RECONNECT - This flag configures the operation of an USB break reconnect block. When set, this unit starts to
operate and monitor the loss of communication over the USB bus (for example, in case of a static discharge).
Configuration of parameters is described in Critical board ratings menu of XiLab software. The maximum available value configuration
commands are described in Programming guide.

Page 75 / 345

Page 76 / 345

4.3.10. Saving the parameters in the controller flash memory
The controller provides an option to save all its parameters into the non-volatile memory. The configuration is restored when the
controller is powered on, after that the controller itself is instantly ready for operation. The stage requires no new adjustment every
time the power is on. The controller stores its user-defined name which is useful for its further identification.
The non-volatile memory stores all the actual operating parameters of the controller related to Device configuration section of XiLab
settings menu. Either Save to flash button of XiLab program or command_save_settings function are used for it (see the
Programming guide chapter).
All the configuration parameters can get restored to controller's RAM from the non-volatile memory, not only when the power is turned
on but also by clicking the Restore from flash button of XiLab program which provides the access to the data saved in the flash
memory. Internally it uses command_read_settings function (see the Programming guide chapter). The restored settings become
active instantly and all the modules of the controller get re-initialized.

Page 76 / 345

Page 77 / 345

4.3.11. User defined position units
Controller position is set and read in stepper motor steps or encoder counts, if encoder is available and enabled. Is it convenient to set
position in mm (in case of translation stages), in degrees (in case of rotator stages) or in any other natural units. Controller software
can translate coordinates to user-defined units: user can set a ratio, where a certain amount of controller steps is equal to the certain
amount of user-defined units. This enables one to issue movement commands and read controller position in these user units. It
applies both to XiLab interface and to usage in custom programs or scripts. Speed and acceleration are also set in units derived from
user-defined ones (for example mm/s). Zero position adjustment can be done the same way in user-defined units as in encoder counts
or step motor steps.
You can enable user-defined units in XiLab on page User units settings. You can define the name of the natural units in XiLab.
Libximc library functions operating in user defined units have a _calb suffix. They take calibration structure calibration_t as an
additional input. For more information see Programming guide.

Page 77 / 345

Page 78 / 345

4.4. Safe operation
Several controller settings are directly connected with safe operation. If these settings are set wrong it may lead to controller or stage
damage. Positioning element can be damaged by exceeded power, rotation speed, or by moving outside the allowed movement range.
Usually it is enough to load a preset profile for your stage for safe operation, where all necessary settings are already made.

Movement range bounds and limit switches
Linear stages have limited movement range, unlike circular rotators. Moving outside of the allowed physical movement range is the
main reason for stage jamming and damage. To prevent such kinds of breakages the movement range of stages is limited according to
user requirements. For this reason Limit switches are used, but in some cases when, for example, when stage is not equipped with
limit switches or has only one limit switch, movement range can be defined in software (see Limit switches). Frequently limit switches
are reversed. In this case use the mechanism of reversed limit switches detection which is described in Limit switches section because
otherwise the first motion to the border will lead to stage jamming. Motion range and limit switches is described in corresponding
section. Settings commands are described in Programming guide.

Movement range limiters
Nominal winding current is the main safety setting in stepper motors. This is the main parameter which defines power delivered to the
motor. The nominal current should not exceed maximum allowable current for given motor. For more detailed information see Motor
limiters. For DC engines nominal current is a limiting parameter and should be set according to the maximum permissible current
through DC engine. If maximum current is not known, then maximal voltage delivered to the engine may be limited. This also will
prevent engine overheat although voltage limiting is a more coarse mode than current limiting. For more detailed information see
chapter Motor limiters.
Exceeding the speed limit might damage the stage or lead to faster wearout. It is necessary to set speed limit flag and to set correct
maximum speed for the given stage. For more detailed information see chapter Motor limiters.

Critical Parameters
Controller tracks voltages and currents which appear in its circuits and can react on their suspicious values. This reaction blocks the
engine and prevents any further movement until the source of the problem is eliminated. Due to this it is possible to track windingwinding or winding-ground shortcuts which may happen because of stage cable damage or damage of the stage itself. This reaction
also has informational character because it allows to track incorrect values of source voltage or oncoming overheating. That’s why you
should read Critical Parameters chapter and set necessary protection. In case of dangerous situation controller will enter Alarm state
and the main window of Xilab program will be colored in red. If this happens, track and eliminate the source of danger before you turn
off the Alarm. If you are using your own application for engine control you should pay close attention to Alarm status flag (see
Controller status).

Operation with Encoder
If during encoder connection sensor channels are swapped, then during engine motion encoder will show direction in reverse. During
operation with DC engine this situation will appear if engine control channels (DC+ и DC-) are mixed up. To fix these errors just set
Encoder Reverse flag in Feedback section on Settings of kinematics (stepper motor) page for stepper motors and on Settings of
kinematics (DC motor) page for DC motors.
It is also possible that there is no contact with one of encoder channels. In this case during motor motion values of sensor will be
oscillating in [-1..1] range around the starting position.
During DC engine operation both of these errors will lead to malfunction in control algorithm, which is described in PID-algorithm for
DC engine control. If you have connected new DC engine for the first time it is strongly recommended to check encoder connection
before starting the operation. To do this you should set corresponding regulation factor values
and try to
make motion to the right or to the left at a low speed. After the motion please check if encoder values are changing in correspondence
with chosen directions. Set Encoder Reverse flag if it is needed.

Page 78 / 345

Page 79 / 345

4.5. Additional features
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.

Operating modes indication
Operations with magnetic brake
Joystick control
Left-Right buttons control
TTL synchronization
Design of multi-axis system
General purpose digital input-output
General purpose analog input
External driver control interface
Serial port
Saving the position in controller's FRAM memory
The Standa stages detection

Page 79 / 345

Page 80 / 345

4.5.1. Operating modes indication
Controller status
Mode indication is provided in controller. For this purpose one dual-color LED is located on the board.
Green Power indicator shows presence of 3.3 V power supply of controller.
Red Status indicator represents controller operating mode.
Simultaneous glowing of both lights looks like yellow glow.
Flicker frequency Hz Description
Lights don’t glow

the device is shut down, there is no power supply

LED is green

the device is broken or the microprogram is not loaded

LED is yellow

the device is in Alarm

0,25

the device is operating but there is no connection with USB from PC

1

the device is operating, the movement is stopped

4

the device is operating, with movement

8

the device is in re-flashing mode

10

the device is in USB bus reconnecting mode

Power/Status indicator operation modes

Indication of limit switches
Multifunctional 20 pin BPC connector is provided with limit switches activity indication. High logic level appears on the corresponding
output in the moment of limit switch activity. Active state is determined from limits switches settings (see Motion range and limit
switches)

Connection diagram

Note. In case of additional LEDs they should be designed for 4 mA operational current. There is no need in additional
current limiting resistors. Operational current for typical LEDs is about 2 mA. It is not recommended to use blue and
violet LEDs because of their high cut off voltage and as a consequence low brightness.

Controller board
Indicators Power and Status are duplicated by outputs on the multi functional 20 pin BPC connector with the next scheme of LEDs
connection:

Connection of Power и Status indicators to the controller board
Limit switches are located on the same connector. The connection diagram is shown below. To indicate the limit switches it is
convenient to use the LEDs designed for the necessary current.

Page 80 / 345

Page 81 / 345

Connection of the limit indicators to the controller board
One-axis and two-axis systems
LEDs on the front panel of controllers in the box ( one-axis and two-axis systems) are indicators for power, status and limit switches,
therefore a connection diagram is not required.

Page 81 / 345

Page 82 / 345

4.5.2. Operations with magnetic brake
There is an output pin on BPC connector for magnetic brake control, which is installed on the stepper motor shaft. Magnetic brake is
used hold motor position in unpowered state.

Description of operation
Magnetic brake consists of a magnet and a spring, which performs stops the motor shaft. In case there is no voltage applied to the
magnet the spring clamps the shaft in place which allows to keep motor position. When voltage is applied the spring releases the
shaft.
Controller operating sequence during stage shutdown.
Engine shutdown (the time of shutdown is recorded in controller) -> magnet power supply cut off, shaft fixation -> board power supply
cut off
During power-on the sequence is reversed.
Since any movement has inertia, the following parameters are set to control magnetic brake and the position fixation process:
Time
Time
Time
Time

between
between
between
between

motor power-on and brake deactivation (ms)
brake deactivation and readiness for movement (ms)
engine stop and brake activation (ms)
brake activation and power-off (ms)

If magnetic brake function is turned off then controller will constantly transmit brake release signal. This allows to move engine
equipped with magnetic brake without rotor fixation during pauses. If winding poweroff function is turned off then controller will only
pause between brake switching and movement start/stop.
All magnetic brake settings can be changed online and brake will be switched to the mode which would be active in case if the setting
would have a new value. For example a large increase of brake activation delay when the brake is already active will lead to brake
deactivation and countdown to the new delay value. It is also possible to turn on or off magnetic brake itself or winding power function.
Type

TTL

Active condition ( brake is released)

0.3 V

Passive condition (brake is not powered) 0 V
Operational current

no more than 4 mA

Output electric parameters
Magnetic brake setting in XIlab program is described in Brake settings section.

Connection diagram
For operation with the magnetic brake a special board controlled by digital signal is used. One-axis and two-axis systems, which
equipped with this board and able to work properly with magnetic brake are available separately (look below).
Controller board
A contact for the magnetic brake control is located on the BPC connector.

Connection of magnetic brake to the controller board
Power converter is a converter from digital signals to power. If magnetic brake output is high, the magnetic brake of stage has 24V on
its power input. If it is low, the magnetic brake has 0V on its power input. In the most common case a scheme with transistor and
diode is used. For more detailed information please contact us: 8SMC4@standa.lt.
One-axis and two-axis systems
In order to use magnetic brake check if your controller system is equipped with a special converter board. Models which meets this
demands can be identified by letters BR in its title, for example 8SMC5-USB-B8-1BR
Contact pin responsible for magnetic brake control in boxed versions of controller is located on the HDM26 26 pin connector . A
connection diagram is shown below. Two-axis systems are supplied with only one axis which compatible with magnetic brake.

Page 82 / 345

Page 83 / 345

Connection of magnetic brake to one-axis or two-axis systems

Page 83 / 345

Page 84 / 345

4.5.3. Joystick control
General information
Controller accepts an input from an analog joystick with voltage in 0-3 V range. Voltage in the equilibrium (central) position and
voltage in minimum and maximum position can be set to any value from the working range, if the following condition holds: minimum
position < central position < maximum position. Controller uses digital representation of joystick input values: 0 V corresponds to a
value of 0 and 3 V corresponds to a value of 10000.
To stop movement in the central position a DeadZone option is available, which is counted from the central position and measured in
percent. Any joystick position inside deadzone leads to the stopping of the movement by the controller. A larger than deadzone
deviation of the stick starts controller movement with the speed which is calculated from the deviation. One can reverse the joystick
with a reverse flag which can be useful to keep "right joystick offset means movement to the right" correspondence for any physical
orientation of the joystick and the stage.
Movement speed has an exponential dependence on joystick deviation from the center. This enables one to reach high precision
through small joystick shifts and high speed through large ones. Nonlinearity parameter can be varied. If the nonlinearity parameter is
zero, then the motor speed will linearly depend on joystick position.
The following graph shows dependence of movement speed on joystick position for the following settings:
Central deviation

4500

Minimum deviation

500

Maximum deviation

9500

Dead zone

10%

Maximum movement speed 100

An example of motion speed dependence on joystick deviation.
Sometimes exponential joystick response which combines high accuracy and high speed is not enough. That's why controller supports
maximum speed table. User can switch between these speeds using "right"/"left" buttons. In case of right key press maximum speed is
changed from Max speed[i] to Max speed[i+1]. In case of left key press maximum speed is changed from Max speed[i+1] to Max
speed[i]. Controller starts with i=0. There are 10 values in the speed array. If both integer and fractional parts of Max speed[x] are
equal to zero then it isn't possible to switch to this speed from Max speed[x-1]. This is made so that a user can limit speed array size.
An attempt to get out of array bounds will also lead to nothing.
Controller has contact debouncing on control buttons. For keypress to register button press should last longer than 3 ms.
If joystick sits within dead zone for more than 5 seconds it will be logically considered to be out of deadzone only when it has been
physically out of deadzone for more than 100 ms. This allows user to release joystick and to be confident that even occasional noise on
joystick output won't lead to unnecessary motor motion. While joystick is within Dead zone the controller can receive any commands
from computer including motion commands, home position calibration commands, etc. If during command execution joystick is brought
o f Dead zone the motion command is canceled and motor is switched to joystick control. This allows the user to turn on joystick
control mode and use it only when necessary.
Everything that is related to movement under the control of controller commands is also applicable to joystick movement. This includes
acceleration, maximum speed limit, windings poweroff delay, magnetic brake, backlash compensation, etc. For example, if you
suddenly release joystick handle and let it return into the deadzone, then, if corresponding modes are on, controller will gradually slow
the motor, make a backlash compensation motion, stop the motor, fix the motor shaft with the magnetic brake, smoothly reduce
current and switch off windings power.
"Left"\"right" button connection is described in Left-right buttons control .
MaxSpeed[i] and DeadZone parameter change is described in Settings of external control devices.

Connection diagram

IMPORTANT. Analog inputs for joystick connection are designed for a range of 0-3V. Be careful and do not exceed
voltage for joystick contacts.

Controller board
A contact for joystick control is located on the BPC connector.

Page 84 / 345

Page 85 / 345

Connection of joystick to the controller board via BPC connector
One-axis and two-axis systems
Joystick connector is available only in two-axis system. A connection diagram is shown below.

Connection of joystick to the two-axis system via D-SUB 9 pin connector

Page 85 / 345

Page 86 / 345

4.5.4. Left-Right buttons control
For each system it is possible to control the movement of a motor with the buttons. Active button state is programmable and can be
logical zero or one. Controller supports a 10-item speed array MaxSpeed[0-9], which is used both for joystick and button control.
The buttons control settings are red/written by commands SCTL/GCTL ( set_control_settings/get_control_settings).
If a left or right button is clicked then motor does a shift on an offset, specified by DeltaPosition and uDeltaPosition.
If a left or right button is pressed and held for longer than MaxClickTime, then motor starts moving with MaxSpeed[0] and
counting down to Timeout[0]. After Timeout[i] microseconds have elapsed speed is changed from MaxSpeed[i] to MaxSpeed[i+1]
for any i between 0 and 9 (inclusive).
If press the two buttons, the controller performs a stop with deceleration . Holding both buttons for 3 seconds starts the
automatic calibration of the "home" position .

Note: You can fill only the upper part of the 10-item speed array if you don't need all of them. Controller changes its
speed to the next one only if the target speed is not zero and the timeout is not zero. For example, if MaxSpeed [0]
and MaxSpeed[1] are nonzero and MaxSpeed[2] is zero (both step and microstep part), then the controller will start
moving with MaxSpeed[0], then change its speed to MaxSpeed[1] after Timeout[0] and will keep moving with
MaxSpeed[1] until the button is released. You can also set Timeout[1] to zero and leave MaxSpeed[2] set to any
value to achieve the same result.
Controller obeys its movement settings (with the exception of target speed). For example, when changing its speed
from MaxSpeed[i] to MaxSpeed[i+i] controller will either accelerate with set acceleration value or change its speed
instantly if acceleration is disabled.

The default state is set according to the voltage levels of the buttons table 4.5.4.1. The state of each button can be software inverted.
When active, the button is considered to be down. It does not matter how the condition is active (after changing the invert states, or
when changing the voltage level at the physical impact of a button). The controller uses button contact debouncing. The button is
considered pressed if active state lasts for longer than 3 ms.
Type

TTL

Logic zero level 0 V
Logic one level

3.3 V

Table 4.5.4.1 - Output parameters

WARNING. When you turn on or reboot the controller at the input voltage level of the button is present, which is
considered to be active, the controller will accept it as a button is pressed, and begin to obey the rules described
above.

Connection diagram
Controller board
"Right" and "Left" control buttons can be connected to the controller board via BPC connector for a motor motion control. There are no
integrated pull-down resistors for setting of input potential by default, that’s why it is necessary to use (pull up) and (pull down)
resistors scheme.

Scheme of buttons connection to the BPC connector
One-axis and two-axis systems
For controllers in case user buttons already placed on the front panel. However it is possible to connect custom buttons to the
corresponding contacts that located on the D-SUB 9 pin connector and available only in two-axis system. Connection diagram is shown
below.

Page 86 / 345

Page 87 / 345

Scheme of buttons connection to the HDB-26 connector

Page 87 / 345

Page 88 / 345

4.5.5. TTL synchronization
Principle of operation
TTL-synchronization is used to synchronize controller motion with external devices and/or events. For example, the controller can
output synchronization pulse each time it moves a certain distance. Vice versa, controller can shift a certain distance on incoming
synchronization pulse, for example from an experimental setup which is ready to move to the next measurement position.
To use mechanical contacts as an input synchronization signal a contact debouncing is provided. One can set minimum input pulse
length which is recognized as a valid synchronization signal. An active state is a logical one (see table 4.5.5.1), and a raising edge is
considered to be the start of a signal. However, if for some reason this is undesirable, both options may be inverted independently.
Type

TTL

Logic zero level 0 V
Logic one level

3.3 V

Table 4.5.5.1 - Input parameters

Pulse time

Pulse time

Inversion of input and output syncronization pulse illustrated

Note. If simultaneous start of several controllers in a multiaxis system is desirable, minimum input pulse length should
be the same for all controllers. Contact debouncing should not be used in systems with no mechanical contacts and
short noise pulses in synchronization input channel. One should use an RC-circuit which would filter these noise
pulses instead.

Synchronization in important in multiaxis systems because it allows one to start movement on several axes simultaneously. To do this
all axes are prepared to start the movement, all slave axes are set to start moving on input synchronization pulse, one master axis is
set to output a synchronization pulse on the start of the movement. Master axis output is connected to slave axes' input. In this setup
any movement of the master axis leads to immediate response of all connected axes.

Note. One should set minimum input sync pulse length to 0 if this kind of connection is used. This disables contact
debouncing, but since there are no mechanical contacts it is not needed. If minimum input sync pulse length is not
zero then to avoid desynchronization of master and slave axes one should set input sync pulse length the same for all
controllers, connect syncout to both master and slave inputs and issue start command by activating input manually.

Synchronization input and output are independent from each other and other means of motion control. Control through XiLab
application or any other user application, joystick control and left-right buttons control are independent of input/output synchronization
state. Last command always takes priority. For example, a movement command sent from XiLab will cancel current movement which
happened because of input sync pulse, but will not affect output sync state. Next input sync pulse will cancel current movement
initiated by user program and will replace it with movement command according to sync in settings.

Page 88 / 345

Page 89 / 345

Note. Sync in settings may be saved in controller flash (non-volatile) memory. In this case everything related to
synchronization may also be said about autonomous controller operation. For example, you may set up shift on offset
on syncin pulse with syncout pulse on movement stop and connect the controller to a standalone measurement
device, which starts measurements on its own input sync pulse and outputs a sync pulse on measurement end. Then
you can run such a system without a PC, because after the first sync pulse all measurements and movements will
happen automatically.

Connection
The controller is supplied with two TTL-sync channels on the BPC connector.

Sync in
Syncronization input has a setting, which defines minimum syncin pulse length which may be registered. This length is measured in
microseconds. Use this setting to decrease controller sensitivity to noise. Synchronization input may be turned on or off. If it is on, then
a sync in pulse will lead to a situation as if Predefined displacement mode command has taken place, which takes its Position and
Speed from syncin settings. If syncin settings are changed during the time the movement takes place it will not change current
movement parameters. Movement parameters will change on the next front on syncronization input. This designed deliberately to
allow one to set up next shift parameters in multiaxis systems during movement.

WARNING. When you turn on or reboot the controller at the input voltage level of the synchronize input is present,
which is considered to be active, the controller interprets it as if Predefined displacement mode command has taken
place.

Note. Position and Speed are two separate variables which also may be saved in non-volatilve controller memory.
They are used only with synchronization input.

Note. Syncin movement obeys acceleration, max speed settings and all other settings which are related to motion.
Their incorrect setting may disrupt coordinated movement in multiaxis system.

Pulse time

Clutter time

Motion stops

Motion starts
Moving time

Movement starts becase input pulse is longer than debounce time

Page 89 / 345

Page 90 / 345

Clutter time

Movement does not start because input pulses are shorter than debounce time

Warning. If a second syncin pulse is received while controller is still moving then the end position will be offset by
two times the shift distance from the start, if a third pulse is received, then by three times, etc.

Clutter time Clutter time

Moving time

Motion stops

Moving time

Motion starts
One-time movement with double shift length because second syncin pulse came in before the end of the movement

Page 90 / 345

Page 91 / 345

Motion stops
Clutter time

Clutter time

Moving time

Moving time
Motion starts
Two separate shifts with two start and two stop phases

Default setting is active state is one, movement on raising edge. Synchronization input may be inverted to the active state is zero,
movement on trailing edge.

Note. Inverted synchronization input setting will lead to the change in the definition of active/inactive state which may
be seen, for example, in controller status. However, programmatical inversion of the syncin state by itself will not lead
to the start of the movement, even if the transition happened into the active state.

Sync out
Output synchronization is used to control external devices tied to controller movement events. Sync out pulse can be emitted on start
and/or stop of the movement, and/or on each shift on the preset distance. ImpulseTime setting defines the length of sync pulse, either
in microseconds or in distance units. Synchronization output can be switched into general purpose digital output mode. In this mode it
is possible to set zero/one output logic level programmatically.

Movement starts

Movement stops
Pulse time

Pulse time

Sync out pulses generated on start and stop of the movement (fixed length pulse)

Page 91 / 345

Page 92 / 345

Note. If syncout pulse length is measured in distance units and, for example, is equal to 10 stepper motor steps and
"syncout pulse on stop" mode is active, then the active state on synchronization output will be set on the movement
end, but will be cleared only when the motor will move 10 more steps during the next movement.

Movement starts

Movement stops
Pulse time

Pulse time

Syncout pulses generated on start and stop of the movement (pulse is measured in distance units)

Note. If you wish to reconfigure synchronization output and are not sure which state is it in, change its state to
general purpose output and set the desired logic level.

Motion starts

Motion stops
Sync out pulses on movement with acceleration and "generate on shift" mode (pulse length measured in distance units)
Sync out pulses on movement with acceleration and "generate on shift" mode (pulse length measured in microseconds)

Note. Periodic syncout pulse generation imitates revolution sensor with reducing gear. Coordinates which trigger
syncout pulse generation are counted from zero position and not from the position the controller is in at the start of
the movement. For example, if synchronization output is set up to generate pulses every 1000 steps then pulses will
be generated in positions 0, 1000, 2000, 3000, etc. Pulse generation works when moving in both directions. Pulse is
generated when the quotient of current coordinate and pulse generation period changes. That is, pulse is generated
when position 1000 is reached when moving in the direction of increasing position and it is generated when position
1000 is left when moving in the direction of decreasing position. Also, syncout pulse is always generated when
position 0 is reached from any direction (including the case when position is reset by the ZERO button).

Page 92 / 345

Page 93 / 345

Note. Whenever syncout pulses overlap they are merged into one pulse.

_Syncout pulse merge illustrated, pulse generation on start, stop and shift on offset (pulse length measured in microseconds)
Synchronization settings setup in XiLab is described in Synchronization settings section.

Connection diagram
Controller board
Controller board contains two TTL-channels of synchronization on the BPC connector.

Scheme of connection to the synchronization channels for the controller board
One-axis and two-axis systems
Synchronization signals on the one-axis and two-axis systems are located on the HDB-26 connector.

Scheme of connection to the synchronization channels for the one-axis system

Scheme of connection to the synchronization channels for the two-axis system

Page 93 / 345

Page 94 / 345

4.5.6. Multiaxis system design
Controller axes in multiaxis systems are identified by the controller serial number. Each controller has its own unique serial number,
which may be seen in XiLab software on About controller page. One can read controller serial number using get_serial_number function
(see Programming guide).
Multiaxis systems based on this controller are assembled using an active backplane based on a USB-hub or an external USB-hub.
For proper multiaxis system functioning one should first connect all controllers to the power and USB connectors (place controllers on
the backplane).
Then, in any order, do all of the following:
Connect power to the backplane
Connect external devices
Connect master controller to the USB

Note. Additional 5 V power supply requirements: output current no less than 250 mA per axis, 400 mA per axis for full
functionality.

Multiaxis connection diagram implies connecting power supply to pins 1 and 2 of the BPC connector and connecting data lines D-/D+
from the USB hub to pins 15 and 17 of the BPC connector.
Power is connected next:
Controller №1
PSC

Power
Supply
24V-36V

PS-

1

PS-

1

PS+

2

PS+

2

PS-

3

PS+

4

Controller №2
PSC
PS-

1

PS+

2

PS-

3

PS+

4

.
.
.
.
.
Controller №N
PSC
PS-

1

PS+

2

PS-

3

PS+

4

Controller connection diagram in multiaxis configuration
PSC - Power Supply Connector, used to connect power supply to the controller
BPC - Back Panel Connector, used to connect accessories to the controller

Page 94 / 345

Page 95 / 345

4.5.7. General purpose digital input-output
Output is located on BPC connector. It allows user to configure it as input or output. Logical level one is considered to be active.
However it can be inverted so that logical level zero is considered active.
Type

TTL

Logic zero level 0 V
Logic one level

3.3 V

Table 4.5.4.1 - Input parameters
In input mode you can get information about logical level on input (see Controller status), or initiate the following actions during
transfer to active state (or during transfer to non-active state if the input is inverted):
Perform STOP command (quick stop).
Perform PWOF command (windings power supply switch off).
Perform MOVR command (shift to the given distance with last used settings).
Perform HOME command (automatic position calibration).
Enter Alarm state (turn off H-bridges and wait reinitialization).
It does not matter how the state of the input becomes active (after changing the invert states, or when changing the voltage level).
The controller uses a software debounce the input. Initiating the action takes place only when the active state of the input buttons
lasted for more than 3 ms.

WARNING. When you turn on or reboot the controller at the input voltage level of the input is present, which is
considered to be active, the controller interprets it as a signal to trigger any of the actions.

Note. Digital input has weak pull down to the ground.

In output mode it is possible to set active or inactive logic level on the following events:
EXTIO_SETUP_MODE_OUT_MOVING – Active state during motor movement.
EXTIO_SETUP_MODE_OUT_ALARM – Active state when controller is in Alarm state.
EXTIO_SETUP_MODE_OUT_MOTOR_ON – Active state while power is supplied to the motor windings.
EXTIO_SETUP_MODE_OUT_MOTOR_FOUND – Active state while motor is connected.
Logic type

TTL
V

3.3

Update frequency 1 kHz
Nominal current

5 mA

Table 4.5.7.2 - Output technical characteristic

Connection diagram
Controller board
Digital output is located on the BPC connector

Scheme of connection to digital input/output for the controller board
One-axis and two-axis systems

Page 95 / 345

Page 96 / 345

Among two box versions, only two axis system has the digital input/output. Corresponding contacts output on the

Scheme of connection to digital input/output for two-axis system

Page 96 / 345

HDB-26 connector.

Page 97 / 345

4.5.8. General purpose analog input
Analog input may be used for other purpose. For example, it can be used to measure any external signal. Value at the analog input
may be read by the GETC command and is visible in the XiLab charts.
This controller represents analog input values as a number in 0..10000 range. Analog input pin is located on BPC connector.

IMPORTANT. Analog input voltage should not go outside of 0-3 V range. If this voltage is exceeded errors in analog
input and other controller subsystems are possible! This may also damage the controller or connected motor.

Signal voltage

0-3 V

Scanning frequency 1 kHz
Table. Input parameters.

Connection diagram
Controller board
For the controller board analog input contact is located on the BPC connector.

Scheme of connection to analog input for the controller board
One-axis and two-axis systems
Only two-axis system has general purpose analog input on supplementary HDB-26 connector.

Scheme of connection to analog input for the two-axis system

Page 97 / 345

Page 98 / 345

4.5.9. External driver control interface
Interface allows to control any external driver with a help of 3 standard signals: enable, direction, clock. This mode is convenient when
controller power capability is not enough but it is desirable to use its capabilities such as limit switches, revolution sensor, position
control, scripting language, multiaxis systems, joystick/button control, magnetic brake, etc. For example, for creation of multiaxis
system with one powerful lifting axis which is controlled by external controller and two less powerful horizontal axes, you can use XiLab
with 3-axis interface and its scripts and also synchronize the motion of all three axes. I.e. external driver replaces only power part of
the controller.
Clock signal defines the quantity of signals in the given Direction (logical one to the right, logical zero to the left). Displacement is a
minimum step in the current settings of step division. For step division 1/32 there will be 32 impulses per one step. Don’t forget to set
external driver in such a way that it would use the same step division.

WARNING. Clock signal frequency in the given controller is limited by 78 kHz. That's why to reach necessary speed
one might need to reduce step division. Foe example, if rotation speed of 4000 steps per seconds is needed it is
necessary to use 1/8 step division or less.

Type

TTL

Logical zero level 0 V
Logical one level

3.3 V

Output parameters of external driver control

Connection diagram

WARNING. Outputs for external driver control are not sufficiently protected and can be damaged in case of incorrect
usage. Proper connection and necessary electric protections are a responsibility of an engineer who designs drivers'
connection system.

Controller board
For external driver connection three outputs in BPC connector are used.

WARNING. Pin 13 is the general purpose input/output (see General purpose digital input-output 8SMC5 ), but it loses
its functionality when external driver control is enabled.

Scheme of connection to the external driver for the controller board
One-axis and two-axis systems
Only two-axis system has the external driver interface. It outputs on the HDB-26 connector.

WARNING. Pins 12 and 25 are general purpose inputs/outputs (see General purpose digital input-output 8SMC5 ),
but they loses functionality when external driver control is enabled.

Page 98 / 345

Page 99 / 345

Page 99 / 345

Page 100 / 345

4.5.10. Serial port
Controller allows control through UART serial port with TTL 3.3 V logic. UART outputs are located on BPC connector. Because of
widespread availability of UART and adapters to USB, Bluetooth, Ethernet and other standard interfaces there is an option for wireless
control (Bluetooth) or control over the internet (Ethernet). UART data protocol is the same as USB data protocol. I.e. it is enough to
enable nonstandard serial port polling in XiLab or in libximc and the device will be found if response delay doesn't exceed two seconds.
It is also possible to control controller with the help of other independently programmed micro-controller, however in this case it will be
required to support controller communication protocol.
UART supports the following settings.
Transfer rate 9600-921600 bit/sec
Data bits

8

Parity

enabled or disabled

Parity type

even, odd, space, mark

Stop bits

1 or 2

Note. To connect to the controller via UART one should first connect to it via USB and set required speed, parity and
stop bits and then save settings to non-volatile memory. Standard settings are listed in Communication protocol
specification, use them if you cannot connect.

Logic type

TTL 3.3V

Maximum data transfer speed 921 kbit
Nominal output current

5 mA

Output and input parameters

Connection diagram

WARNING. High data transfer speeds through long cables in case of electromagnetic interference are impossible. If
transfer errors do occur, use RC filtering circuits and reduce transfer speeds so that characteristic time of an RCcircuit is at least 4 times less than time needed to transfer a single bit. RC-circuit characteristic time is chosen based
on the circumstances.

Controller board
For the controller board UART outputs are located on the BPC connector.

Recommended scheme of connection to serial port pins for the controller board
One-axis and two-axis systems
Two-axis and one-axis system has UART outputs. Corresponding contacts for each axis output on the HDB-26 connector.

Page 100 / 345

Page 101 / 345

Recommended scheme of connection to serial port pins for two-axis system

Page 101 / 345

Page 102 / 345

4.5.11. Saving the position in controller's FRAM memory
Controller has a function which automatically remembers its last position. This allows one to power-off the controller after it has
stopped. On the next power-on the controller will appear in the same motor position, logical position and encoder value. This will work
if during the time controller was off the motor shaft was not rotated by external means.

Note. For this function to work one should wait at least 0.5 seconds after the stop before cutting the power. Position is
saved even if the controller was powered off during movement, however in this case its saved position will not be
exact and a new calibration will be needed.

Page 102 / 345

Page 103 / 345

4.5.12. The Standa stages detection
Newest Standa positioners (please check with the manufacturer for the list of exact models) have an option to store settings and
informational parameters in the internal positioner memory. This chip is flashed with correct settings, which allows one to skip optimal
positioner configuration and to start working with the positioner right out of the box. This memory chip also holds user-defined
positioner name (see XiLab tab Positioner name).
When this kind of positioner is connected to the controller (for more information about electrical connection please see example of
motor connection and positioner connector) informational parameters are automatically loaded into the controller memory, see
Positioner specifications. If the EEPROM_PRECEDENCE flag was set, which indicates precedence of settings read from external memory
over the settings saved in the controller flash memory (see About controller), then all controller settings except UART settings and
controller name are also read and applied.
If the EEPROM_PRECEDENCE flag is set then you don't need to check and/or set positioner settings (for example limit switches
orientation and position, nominal current, encoder and magnetic brake parameters, etc). All of this will be done automatically when a
positioner with internal memory chip is connected. However, if this flag is set then settings from positioner memory will be loaded
every time a positioner with memory chip is connected and every time the controller is powered on. That is why if you need to change
some settings you need to clear this flag, change required settings and save them to controller flash memory.

Note. There is a simple rule for this flag preferred state: This flag should be true on early stages of work to embrace
the simplicity of automatic settings. Later, as soon as the will be need for fine tuning the settings, this flag should be
set to false, not forgetting to save this to FRAM.

Note. If a positioner with internal memory is disconnected from the controller no settings are changed.

For developers
Positioner data is stored in DS28EC20 chip connected by 1-wire interface.
Controller periodically sends reset signal to the EEPROM chip during positioner detection. If a response is received, then controller
reads data from the positioner into RAM, applies settings and sets STATE_EEPROM_CONNECTED bit in status structure. In XiLab this is
shown by EEPR indicator in the main window. The EEPROM is then regularly polled. In case connection with EEPROM is lost (no
response to the reset signal) EEPR XiLab indicator is cleared.

Connection diagram
Outputs for connection to the memory chip are located on the D-SUP 15 pin connector for all systems ( controller board, one-axis and
two-axis in box.

Connection diagram for external memory test

Page 103 / 345

Page 104 / 345

4.6. Secondary features
1.
2.
3.
4.

Zero position adjustment
User-defined position adjustment
Controller status
USB connection autorecovery

Page 104 / 345

Page 105 / 345

4.6.1. Zero position adjustment
Controller supports setting of zero position. This function should be used for anchor marked stages, so that anchor position matches
logical zero. Also, this function is convenient to use in case there is a single chosen physical position.
To set zero position a special command is used. This will zero step/microstep position and encoder count values. Setting of zero
position happens simultaneously for all position counters and will not lead to their desynchronization. Current movement command is
not affected. If controller was moving to some physical position when logical position was reset to zero by this command then the
movement will still end in that physical position. For example, if the controller moved towards logical position 1000 and set zero
position command was sent when it was passing 200, then logical position counter will be decremented by 200 and movement will end
in logical position 800.

Note. Setting of zero position when using shift on offset (see Predefined displacement mode) will not change target
physical position. Next shift will happen towards the same physical position which would have happened without zero
position command.

Page 105 / 345

Page 106 / 345

4.6.2. User-defined position adjustment
A SPOS command can be used if it is necessary to set position and/or encoder value to some user-defined position instead of zero.
New step/microstep position and encoder count values are passed as parameters to this command. If only one of these counters is
needed one should use ignore flags to filter required fields.
This command is different from set zero command in that it doesn't set target position used by MOVE and MOVR commands to zero.
During movement and stopping its behavior is the same. If you issue SPOS command during movement the controller will end in the
same physical position it would move to if this command was not sent.

Page 106 / 345

Page 107 / 345

4.6.3. Controller status
Controller tracks its own status and can transfer it in the status structure of the GETS command. Controller status contains information
about performed movement, its result, state of power supply, state of encoder, state of motor windings, digital input-output states,
numeric information about position and powering voltage and currents and also error flags.
Movement status
MoveSts contains:
Movement flag which is set when controller changes motor position.
"Target speed reached" flag which is set if current speed is equal to the speed controller should be moving with.
Backlash compensation flag, which is set during backlash compensation in the final stage of the movement (see
compensation).

Backlash

MvCmdSts contains information about the command being executed. All motor movements are initiated by movement commands to
the MOVE target position, MOVR shift relative to the last target position, RIGT movement to the right, LEFT movement to the left,
smooth stop SSTP or fast stop STOP, HOME home position calibration and LOFT forced backlash compensation. Control by buttons,
joystick, sync in pulses, etc. is also performed by these commands. For example, joystick calls right and left movement commands
during deflection or smooth stop command in central position (see Joystick control). Current movement command or last command
and command status (running/completed) are located in MvCmdSts variable. If the command is completed then another bit shows its
result (successful or not). Unsuccessfully completed command means controller could not reach desired position or backlash
compensation could not be performed. The reason for this can be a sudden stop due to limit switches or Alarm state. Initial state of
this field contains unknown command and successful completion status.
Motor power supply status
PWRSts contains information about supply voltage. Windings' status can be:
Disabled
Powered
Powered
Powered

(in this case no voltage is applied).
by reduced current relative to nominal current (for example if winding current reduction option is used).
by nominal current.
by an voltage insufficient to reach nominal current in the windings.

Last status frequently appears with high rotation speeds, because for higher step switching speed one needs higher voltage to ensure
current rise in motor winding inductance. Insufficient voltage does not mean the motor won't move, it will merely emit excess noise
and its torque will drop (see Power control).
Encoder status
EncSts contains information about connected encoder if feedback is disabled (for example for stepper motors). Encoder state can be
one of the following:
Not connected
Unknown state, when there is not enough data to define encoder state.
Connected and working.
Connected and reversed, in this case it is necessary to enable reverse in encoder settings.
Connected and defective.
The last state is realized when switch signals come to encoder inputs but they don't correspond to the motor rotor movement. State
change happens after sufficient statistical data is collected. That's why detection doesn't happen immediately. It is also impossible to
define encoder status without movement (see Operation with encoders ).
Motor windings status
WindSts contains information about windings state. State of each of the two windings is shown separately. They can be:
Disconnected from controller
Connected
Short-circuited
In an unknown state.
A state with very small resistance and inductance is considered to be a short-circuit. A state with very high load resistance is
considered to be disconnected.
Position status.
All data about stage position and speed is reflected in status structure. Fields of primary position (CurPosition, uStep), secondary
position (EncPosition), speeds (CurSpeed, uCurSpeed) are used for this. Primary position is counted in steps and microsteps of stepper
motor if control without feedback is used. In case of leading encoder mode
encoder counts are stored in CurPosition and uStep contains 0. Secondary position contains encoder coordinate if no feedback is used
for stepper motor, contains steps if a stepper motor with encoder feedback is used and contains 0 if DC motor is used. Speed is always
displayed for the primary position and is measured in the same units as the current set speed.
Controller power supply status and temperature.
Status structure reflects:
Power current (in mA)

Page 107 / 345

Page 108 / 345

Power voltage (in tens of mV)
USB current (in mA)
USB voltage (in tens of mV)
Microprocessor temperature (tenths of degrees Celsius)
Status flags
There are several types of flags: control command error flags, critical parameter flags, general error flags and state flags. Many flags
do not remove themselves and should be reset by the STOP command.
Protocol command errors:
errc – Unknown protocol command. This error should not appear if the used software corresponds to the used controller protocol
version. Flag can’t be removed by itself.
errd – Data integrity command check code is incorrect. This error appears in case of data transfer failure. The flag can’t be
removed by itself.
errv – One or more values sent in the command could not be applied. It appears when command was received and successfully
recognized but transferred data were incorrect or out of range. This error can also mean that necessary operation is impossible
because of hardware failure. For example, this error appears if you set microstep mode which is not in supported list or if you set
zero steps per motor revolution. The flag can’t be removed by itself.
Critical parameter exceeded errors:
Flag which means that controller is in Alarm state.
Flag which means that power driver gives overheat signal. The flag is removed by itself depending on critical parameters settings
Flag which means that microprocessor temperature is out of acceptable range. The flag is removed by itself depending on critical
parameters settings
Flag which means that power supply exceeded acceptable value. The flag is removed by itself depending on critical parameters
settings
Flag which means that power supply voltage is lower than acceptable value. The flag is removed by itself depending on critical
parameters settings
Flag which means that current drawn from the power unit exceeded acceptable value. The flag is removed by itself depending on
critical parameters settings
Flag which means that USB voltage exceeded acceptable value. The flag is removed by itlsef depending on critical parameters
settings
Flag which means that USB voltage is under acceptable value. The flag is removed by itself depending on critical parameters
settings
Flag which means that current drawn from the USB exceeded acceptable value. The flag is removed by itself depending on
critical parameters settings
Flag which means that limit switches are mixed up. The flag can’t be removed by itself.
General error flag:
Flag which means that position control system detected steps counter and position sensor desynchronization. The flag can’t be
removed by itself (except the case of using position correction ).
State flags:
Presence of connected stage equipped by EEPROM memory.
Presence of external power supply. Otherwise power supply is internal. Is always set.
Digital signals status.
Controller reflects input and output digital signal status as active state flags or as current logical level. Active state corresponds to one
or to zero depending on specific block settings, for example on inverting settings. Flags can be:
Right limit switch state (one if limit switch is active)
Left limit switch state (one if limit switch is active)
Right button state (one if button is pressed)
Left button state (one if button is pressed)
1 if EXTIO pin operates as output. Otherwise - as input.
EXTIO pin state (1 if state is active on input or on output)
Hall A sensor state (1 if logical one is on input)
Hall B sensor state (1 if logical one is on input)
Hall C sensor state (1 if logical one is on input)
Magnetic brake state (1 if power supply is applied to brake)
Complete revolution sensor state (1 if sensor is active)
Input synchronization pin state (1 if synchronization pin is in active state).
Output synchronization pin state (1 if synchronization pin is in active state).
Input encoder A channel state (1 if logical one is on input)
Input encoder B channel state (1 if logical one is on input)

Page 108 / 345

Page 109 / 345

4.6.4. USB connection autorecovery
This unit is designed to reboot the USB in the event of loss of communication (for example, this may occur in the event of electrostatic
discharge or when the USB is disconnected without powering down the controller). The on/off state of this unit is determined by the
USB_BREAK_RECONNECT flag (see Critical parameters). If the unit is turned on, it monitors the connection loss on the USB. In the
case of communication loss on the USB after 500 ms the firmware reconnects the device and then checks the state of the USB bus. If
for a certain time there is no recovery of connection (i.e. data communication), then this unti reconnects the USB again. Thus, in case
USB connection is not restored, the controller will continuously reconnect to the USB bus until connection is restored or until the time
between reconnection attempts exceeds 1 minute. So, in the case the USB is disconnected without powering down the controller (for
example, in the case of motor control with buttons or joystick) controller will remain in USB reconnection mode for about 5 minutes.

Note. USB reconnection mode does not affect other controller functions (for example movement or winding current
maintenance) in any way.

To avoid simultaneous reconnect to the USB bus from both the controller and the computer side, the time between the reconnections
changes exponentially (see Table 1).
Restart number

timeout, ms

0 (after communication is lost) 500
1

483

2

622

3

802

4

1034

5

1333

6

1718

The status of the unit can be determined by LED flashing frequency. In the case controller is in reconnection mode the LED will flash
with a frequency of 10 Hz (see Operating_modes_indication).

Warning. Because of the structure of the program unit, as well as USB bus specification, unit doesn`t guarantee
100% recovery of the communication with the computer after a static discharge.

Xilab software also tries to reconnect to the controller when it is running. On connection loss, which is defined as "result_nodevice"
libximc library call error, Xilab waits for 1000 milliseconds, then attempts to reopen device port. On Windows operating systems Xilab
uses WINAPI functions to check if corresponding COM-port device is present. If it is, then after two unsuccessful attempts to reopen it
calls libximc ximc_fix_usbser_sys function, which resets the usbser.sys driver to fix the driver error. On Linux or MacOS Xilab simply
tries to reopen the device every 1000 ms. After the device is opened Xilab sends several commands to read serial number, firmware
version and controller settings which are needed to set up user interface.
Libximc library considers device lost (return error code result_nodevice) on critical errors from system calls ReadFile/WriteFile
(Windows OS) or read/write (Linux/Mac OS).

Page 109 / 345

Page 110 / 345

5. XILab application User's guide
1. About XILab
2. Main windows of the XILab application
1. XILab Start window
2. XILab Main window in single-axis control mode
3. XILab Main window in multi-axis control mode
4. Application Settings
5. Charts
6. Scripts
7. XiLab Log
3. Controller Settings
1. Settings of kinematics (Stepper motor)
2. Motion range and limit switches
3. Critical board ratings
4. Power consumption settings
5. Home position settings
6. Synchronization settings
7. Brake settings
8. Position control
9. Settings of external control devices
10. UART settings
11. General purpose input-output settings
12. Motor type settings
13. Settings of kinematics (DC motor)
14. Settings of PID control loops
15. About controller
16. Settings of kinematics (BLDC motor)
4. XILab application settings
1. XILab general settings
2. General motor settings
3. Attenuator settings
4. Cyclical motion settings
5. Log settings
6. Charts general settings
7. Charts customization
8. User units settings
9. About the application
5. Positioner specifications
1. Positioner name
2. Positioner general characteristics
3. Motor characteristics
4. Encoder specifications
5. Hall sensor characteristics
6. Reducing gear specifications
7. Accessories specifications
6. Correct shutdown
7. Working over network
8. XILab installation
1. Installation on Windows
1. Installation on Windows XP
2. Installation on Windows 7
3. Installation on Windows 8
2. Installation on Linux
3. Installation on MacOS

Page 110 / 345

Page 111 / 345

5.1. About XILab
XILab features a user-friendly graphical interface, which is designed for stages control, diagnostic and fine tuning of the motors driven
by the controllers. XILab allows quick adjustment of connected stage by loading of previously prepared configuration files. The control
process can be automated with script language that can be used either directly or to speed up the process of customized control
program development. XiLab supports multiaxial mode and multidimensional control scripts. It is possible to output the data about
controller and motor status in form of charts and save them to a file, or export tabular data for external processing. The software is
compatible with Windows XP SP3, Windows Vista, Windows 7, MacOS X and Linux operating systems. Depending on the OS of your
computer, appearance of some windows may vary.
Here you can find the Quick Installation Guide for the application. This chapter provides a detailed manual for the XILab software.

Page 111 / 345

Page 112 / 345

5.2. Main windows of the XILab application
1.
2.
3.
4.
5.
6.
7.

XILab Start window
XILab Main window in single-axis control mode
XILab Main window in multi-axis control mode
Application Settings
Charts
Scripts
XiLab Log

Page 112 / 345

Page 113 / 345

5.2.1. XILab Start window
When started, XILab opens a controllers detection window. By means of libximc library, XILab queries controllers connected to the
system and displays a list of found and successfully identified controllers.

XILab Start Window, 0 controllers found

XILab Start Window, 1 controller found

XILab Start Window, 2 controllers found
The list of found controllers is displayed on the start screen. Here you can select one or more controllers and open them using the Open
selected button. If one controller is chosen, then XILab Main window in single-axis control mode will be opened, if more than one
controller is chosen the XILab Main window in multi-axis control mode window will be opened. You could repeat the search by clicking
the Rescan button or exit the program by clicking Exit. If the Open last button is active it means that all the controllers that had been
opened in the previous run of XILab were found. Clicking the Open last button will then open the last saved configuration.
XILab can work with virtual XIMC controllers, which support the request-response protocol of a real controller. Virtual controllers may
be useful for testing and getting used to the XILab interface, if no real hardware controllers are connected to the system. The Virtual
devices field contains the number of virtual controllers which will appear in the list of available controllers after you press the Rescan
button or restart the XILab.

Page 113 / 345

Page 114 / 345

Note: Since the libximc library opens XIMC devices in the exclusive access mode, when you start subsequent copies of
XILab application, only free controllers will be found and available for selection.

Page 114 / 345

Page 115 / 345

5.2.2. XILab Main window in single-axis control mode
5.2.2. XILab Main window in single-axis control
mode
Motion Control Unit
Movement without specifying the final position
Movement to the target point
Target position for motion commands
Attenuator Control Unit
Controller and motor status
Controller Power Supply
Motor status
Program status
Group of application control buttons
Status bar

XILab Main Window in General Motor mode

Page 115 / 345

Page 116 / 345

XILab Main Window in Attenuator mode
In the left part of the window in Power and Motor groups of parameters status of the controller and the motor is available. In the
central part of the window there is the Control group, containing the elements of motor motion control. On the right there is a group
of buttons to control the application as a whole. At the bottom there is a log, which is hidden as the window is resized to its minimum
size and a status bar. Below we consider these groups in more detail.

Motion Control Unit

Control Unit
In the central part of the block there is an indicator of the current position. Below it, in case the encoder is enabled, is located an
encoder position indicator. In the closed loop mode (see Operation with encoders section) the main and the secondary indicators swap
their places.
Below is the Control unit, containing the elements of motor motion control. Let us examine them in greater detail:
Movement without specifying the final position

Movement control buttons
The buttons Left, Stop and Right trigger movement to the left without specifying the final position, stop with deceleration any
previously started movement, and start the movement to the right without specifying the final position, respectively.

Page 116 / 345

Page 117 / 345

Button Left to the border will make the motor rotate to the left border of the slider. Right to the border , respectively, will do it to
the right edge of the slider.
When you press and hold the keyboard buttons Right or Left and the slider block has input focus, the movement starts in the
direction of increasing or decreasing coordinate. When you release the button the movement stop as if the Stop button on the
main window have been pressed.
Movement to the target point

Movement control to the given point
Move to button starts the process of moving to the given position.
Shift on button starts the process of shift to a given distance from the target position.
Target position for motion commands
Commands Move to and Shift on use the target position to calculate the movement. The target position is changed by the following
commands:
Move to 
Target position = 
Shift on 
Target position = target position + 
Zero (provided there is no movement at the moment of sending the command)
Target position = 0
Commands Stop, Left, Right, Left up to the border and Right up to the border do not alter the target position.

Attenuator Control Unit

Attenuator Control Unit
At the top of the attenuator control block a Transmittance window and a Calibrate button are located. Transmittance window contains a
control to select desired transmittance coefficient. Calibrate button does manual calibration, or location of the initial position, of the
attenuator - first it initiates one revolution of attenuator with current controller settings to determine relative position of attenuator
wheels and then does Automatic Home position calibration . Calibrate button is optional - if the attenuator did not perform the
calibration or it was reset, for example by pressing Cancel during movement, calibration will be performed before the next movement
automatically.
Attenuator has one or two wheels, each wheel contains 8 optical filters. Below these filters are visualized as bars with circles. Below a
Current Transmittance window is located. This window contains trasmittance coefficient which is the closest to desired one that can be
achieved with the current filters.
Move button performs movement toward the filters corresponding to the Current Transmittance, that is, the highlighted ones.
Reset button deactivates all filters.

Controller and motor status

Page 117 / 345

Page 118 / 345

Controller Power Supply
Power group of parameters contains the following indicators:
Source - source of power supply for controller. The controller may be powered by USB or by External power source.
Power voltage - voltage supplied to the power module.
Power current - current consumption of the power module.
USB voltage - voltage on USB connector.
USB current - current consumed by the controller via USB
Temp. - Temperature of the controller processor.
If the color of the indicator Power voltage changes to blue or red, it shows that voltage power supply exceeds the allowed value range
over the acceptable value, which is defined in the Critical board ratings. In this case, the controller switches to Alarm state. It is
possible to quit the Alarm state after terminating of the events that caused Alarm, provided that the flag Sticky Alarm is not set. If the
flag Sticky Alarm is on, use the Stop button to quit the Alarm state.
If color of the indicator Power current turns red, it shows that the current consumed by the controller from the power supply is over
the acceptable value, which is defined in the Critical board ratings. In this case, the controller switches to Alarm state. It is possible to
quit the Alarm state after terminating of the events that caused Alarm, provided that the flag Sticky Alarm is not set. If the flag Sticky
Alarm is on, use the Stop button to quit the Alarm state.
If the color of the indicator USB voltage turns blue or red, it shows that the USB voltage goes out of the allowed value range towards
lower and higher voltage respectively. In this case, the controller switches to Alarm state. It is possible to quit the Alarm state after
terminating of the events that caused Alarm, provided that the flag Sticky Alarm is not set. If the flag Sticky Alarm is on, use the Stop
button to quit the Alarm state.
If the color of the indicator USB current turns red, it shows that the USB current supply exceeds the acceptable value, which is defined
in the Critical board ratings. In this case, the controller switches to Alarm state. It is possible to quit the Alarm state after terminating
of the events that caused Alarm, provided that the flag Sticky Alarm is not set. If the flag Sticky Alarm is on, use the Stop button to
quit the Alarm state.
If the color of the indicator Temp. turns red, it shows that the temperature of the controller board exceeds the acceptable value, which
is defined in the Critical board ratings. In this case, the controller switches to Alarm state. It is possible to quit the Alarm state after
terminating of the events that caused Alarm, provided that the flag Sticky Alarm is not set. If the flag Sticky Alarm is on, use the Stop
button to quit the Alarm state.
Motor status
Motor group of parameters contains the following indicators:
Speed - rotation speed of the motor.
Command - the last performing (bold font) or executed (plain font) controller command. Controller command appears in black if
the flag of the motion error MVCMD_ERROR is not set, in red otherwise. Can be one of the following options:
Move to position - move to the set position
Shift on offset - offset for a predetermined distance
Move left - move left
Move right - move right
Stop - stop
Homing - find the home position
Loft - backlash compensation
Soft stop - smooth stop
Unknown - unknown command (it may appear immediately after the controller starts)
Power - state of stepper motor power supply. Can be one of the following options:
Off - motor winding is disconnected and not controlled by the driver,
Short - winding is short-circuited through the driver,
Norm - winding is powered with nominal current,
Reduc - winding is deliberately powered with reduced current relatively to operational one to reduce the power
consumption,
Max - winding is powered with maximum available current, which a scheme with a given voltage supply can output.

Page 118 / 345

Page 119 / 345

Program status
Program group of parameters contains the following indicators:
Sync buf free - free slots in the syncin command buffer (see description of

ASIA command).

Group of application control buttons
Settings... button opens controller settings, see Application Settings.
Chart... button opens a window with charts, see Charts.
Scripting... button opens scripting window, see Scripts.
Go home button searches for the home position, see Home position settings.
Cyclic button turns on the cyclic motion, see Cyclical motion settings.
Zero button resets the current position of the motor and the encoder value.
Stop button sends the command of emergency stop, resets the Alarm state, clears the command buffer for synchronous motion
and stops a script if it is running.
Save log button saves the contents of the log to a file in
CSV format (opens a file selection dialog window).
Clear log button clears the contents of the log.
Exit button performs safe shutdown, see Correct shutdown.

Status bar
Status bar contains current controller status indicators. From left to right these are 7 flags,
L - Left button state.
R - Right button state.
G - State of external GPIO pin.
B - State of brake pin.
S - State or revolution sensor pin.
I - State of sync in pin.
O - State of sync out pin.
and separate indicators
EEPR - EEPROM is connected.
HOMD - Controller is in "homed" state (calibration performed).
WndA - Winding A state.
WndB - Winding B state.
ENCD - Encoder state (none/active/inverted/failed).
PWHT - Power driver overheat.
SLIP - Motor slip detected.
ErrC - Command error encountered.
ErrD - Data integrity error encountered.
ErrV - Value error encountered.

Page 119 / 345

Page 120 / 345

5.2.3. XILab Main window in multi-axis control mode

XILab Main window
In the top left part of the screen in the Position parameter group there are indicators of the current position. In the bottom left part of
the window there is the Joystick and Control blocks, which are a graphical control element for several axes and a button block
respectively. In the top right part, in the Motor blocks data on the current status of controllers and connected motors is located. In the
bottom right part of the window there is a group of buttons for application control as a whole. Let us consider these groups in more
detail.

Motion control block

Motion control block
In the Current position column indicators of the current position in steps or calibrated units (see below) for the axes X, Y and Z (from
left to right) are located. The Move to button performs movement to the coordinate given by the controls of its column, and the Shift
on button performs shift on relative offset for a predefined distance. If one of the controllers is temporarily absent or disabled, the
corresponding line becomes grayed out.

Virtual joystick block

Page 120 / 345

Page 121 / 345

Virtual joystick block
In this block, the current coordinate of the controllers is visualized as a dot with two lines on the plane for X-Y axes and the line for the
Z axis.
There are several possible ways to control movement of the controllers:
When you click anywhere on the X-Y plane or in the Z column, the corresponding controller or controllers start to move to the
selected coordinate in accordance to its own movement settings.
When you press and hold the screen buttons with up, down, left and right arrows, the corresponding axis starts to move in that
direction. The movement stops with deceleration when you release the button (soft stop command is sent).
When you press and hold the keyboard buttons Right, Left, Up, Down, PageUp or PageDown when the joystick block has input
focus, the axis X, Y or Z, respectively, starts to move in the direction of increasing or decreasing coordinate. The movement
stops with deceleration when you release the button (soft stop command is sent). On receiving input focus the widget
background color changes from white to light-green.
The scales of the axes are set in "Slider settings" on Program configuration page in Settings window separately for each controller. If
user units are being used, then the corresponding axis scale is measured in these units. If the position read from any controller is out
of its axis range, then the corresponding indicator will not appear on the screen.

Control block

Page 121 / 345

Page 122 / 345

Control block
The Go home button searches for the home position independently for each of the controllers; see Home position settings.
The Zero button resets the current position of the motor and value of the encoder for each controller.
The Soft stop button executes a soft stop for each of the controllers.
The STOP button sends an emergency stop command to each controller, resets their Alarm statuses, clears their command buffers for
synchronous motion and stops a script if one is running.
T h e Log button opens a window with log information. Here you can find diagnostic information (errors, warnings, informational
messages) from XiLab, libximc and script sources.
The Scripts button opens a scripting window, see Scripts.

Block of status indicators for controllers and motors

Page 122 / 345

Page 123 / 345

Block of status indicators for controllers and motors
Here are the three blocks of indicators of controllers and motors for axes X, Y and Z. In the title of the block the serial number of
corresponding controller is displayed. Each block contains the following indicators:
Voltage - the voltage at the power section of the motor.
Current - current power consumption of the motor.
Speed - current speed of the motor.
Command - the last command of the controller that was executed, or is being executed.
Power - the state of the motor power supply.
The buttons Settings X, Y, Z open the configurations of a controller, which corresponds to this axis, see Application Settings.
Below the indicator blocks Common settings и Exit buttons are located.
The Common settings button opens a dialog window with general settings. Here you can choose which controller serial numbers are
considered "X", "Y" and "Z" axes, also this window contains logging settings.
The Exit button performs proper shutdown, see Correct shutdown.

Page 123 / 345

Page 124 / 345

Common settings dialog window
Common settings window contains axis order settings, curve drawing options and logging settings.
You can reorder axes by choosing the axis serial, then pressing "up" or "down" buttons on the right.
First axis in the list, that is, an axis with serial number listed to the right of "X axis SN = " label will be referred to as "X axis", the
second one as "Y axis", the third one, if it is available, as "Z axis".
If you enter a greater than zero value of N seconds in the "curve erase delay" control in the "Drawing options", then last N seconds of X
and Y axis controller motion will be displayed as a trajectory in 2D-space overlaid on the virtual joystick window.
Common logging settings are completely identical to single-axis version logging settings .
Here you can configure logging detail ("None" for no logging, "Error" to only log errors, "Error, Warning" to log errors and warnings,
"Error, Warning, Info" to log errors, warnings and informational messages) for each source: XiLab itself, libximc library and Scripts
module.
If the autosave option is enabled the log is saved to the file, which is flushed every 5 seconds. It has a name of type
"xilab_log_YYYY.MM.DD.csv", where YYYY, MM and DD are current year, month and day respectively. The log is saved in CSV format.

Page 124 / 345

Page 125 / 345

5.2.4. Application settings
Settings button from the main window opens the Settings window.

XILab Settings Main Window
Application settings are presented as a hierarchical tree and are divided into three groups: controller settings - "Device configuration",
XILab application settings - "Program configuration", characteristics of a stage - "Stage confuguration".
The first group Device configuration contains the parameters that can be stored directly in the device (in the flash memory or in the
RAM of controller).
The second group Program configuration contains the XILab application settings, which are not written into the controller, and are
used to control the XILab itself.
The third group Stage confuguration contains information about the parameters of the stage and is read from its ROM chip.
Description of Restore from flash and Save to flash buttons is located in the Saving the parameters in the controller flash memory .
All application settings from the first two groups can be saved to an external file when you click Save to file.
When you click the Restore from file button you can pick a file with application settings to be loaded into Settings window.
When you click the Compare two files button, a dialog window with file selection is opened. If you select two files all their settings
are compared and a list of differences is displayed. Missing keys in one of the files are marked in the table as "".

Page 125 / 345

Page 126 / 345

The OK Button closes the Settings window and saves all changes to the settings to the controller. The
window without saving. The Apply button saves the settings without closing the window.

Cancel button closes the

The Reset button resets all setting changes that were made since the Apply button was pressed, or after opening the Settings, if the
Apply button was not pressed.

Note. Only Device configuration settings can be saved into the flash memory of the controller.

Page 126 / 345

Page 127 / 345

5.2.5. Charts
Button Chart of the main window opens a window for working with charts.
5.2.5. Charts
Values displayed
charts
Button functions

on

the

XILab Charts window
In the left part of the window there are Charts of variables, in the right side of the window there is the Control block, which contains
the charts control elements. Above the Control block there are flags which enable different charts, below the Control block there is a
group of buttons to control the stored charts data.

Values displayed on the charts
Position is the primary field in which the current position is stored, no matter how feedback is arranged. In the case of a DCmotor this field has the current position according to the encoder, in the case of a SM (stepping motor) this field contains the
current position in steps;
Speed is the current speed;
Encoder is the position according to the secondary position sensor;
Power voltage is voltage of the power section;
Power current is current consumption of the power section;
USB voltage is voltage on the USB;
USB current is current consumption by USB;
Winding A current - in the case of stepper motor, the current in winding A; in the case of a brushless motor, the current in the
first winding and in the case of DC motor, the current in its only winding;
Winding B current - in the case of stepper motor, the current in the winding B; in the case of brushless motor, the current in the
second winding, unused in the case of DC motor;
Winding C current - in the case of a brushless motor, the current in the third winding, unused in the case of DC or stepper
motor;
Winding A voltage - in the case of stepper motor, the voltage on winding A; in the case of a brushless motor, the voltage on the
first winding and in the case of DC motor, the voltage on its the only winding;
Winding B voltage - in the case of stepper motor, the voltage on the winding B; in the case of brushless motor, the voltage on
the second winding, unused in the case of DC motor;
Winding C voltage - in the case of a brushless motor, the voltage on the third winding, unused in the case of DC or stepper

Page 127 / 345

Page 128 / 345

motor;
PWM level the PWM duty factor (only for DC motors);
Temperature is temperature of controller processor;
Joystick is value of input signal from the joystick;
Analog input is value of analog input;
Flags shows the state of the controller flags.

Button functions
Clear - clears the stored data and the Charts window;
Start - starts recording the data and displaying charts. If the option "Break data update when motor stopped" in Program
configuration -> Graph setup -> Common is turned on, no data recording and charts auto-scrolling will occur when the
motor is stopped;
Stop - stops data reading;
Save - stores chart data to a file;
Load - loads chart data from a previously saved file;
Export to CSV - exports chart data to CSV file

Page 128 / 345

Page 129 / 345

5.2.6. Scripts
The "Scripts" button on the main window opens a window for working with scripts.

XILab scripting window
On the left side of the window a text edit field is located, on the right side of the window a Control block is located, which contains
control buttons.

Button functions
Start - launches the script. The button is inactive if the script is already running. Right after the button is pressed and before the
script is interpreted the body of the script is autosaved to a temporary file (see below).
Stop - stops the script. Inactive if the script is not running.
Save - opens a file save dialog, prompting the user pick a file to save current script text to. Inactive if the script is running.
Load - opens a file load dialog, prompting the user to pick a file to load into the script window. Inactive if the script is running.
Warning! If you load a file all unsaved changes will be lost.
XILab loads last saved script text into the Scripting window on startup. Autosave runs on every script start and on XILab exit. Autosave
file is named "scratch.txt" and is located in user settings directory.

Note.
"Stop" button in XILab main window also stops script execution, acting as an emergency stop button.

Scripting language description is located in the Programming section of the manual.

Page 129 / 345

Page 130 / 345

5.2.7. XILab log

XILab log window
XILab log at the bottom part of the main window shows libximc library messages. It also shows messages from XILab application and
Scripts interpreter.
Log has 4 columns: date and time of record, the source and the message text.
Messages have a logging level indicating message importance: error, warning and informational message. Error messages are red,
warnings are yellow and informational messages are green.
You can set a filter on displayed messages on the Log settings page in the Settings window.

Page 130 / 345

Page 131 / 345

5.3. Controller Settings
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.

Settings of kinematics (Stepper motor)
Motion range and limit switches
Critical board ratings
Power consumption settings
Home position settings
Synchronization settings
Brake settings
Position control
Settings of external control devices
UART settings
General purpose input-output settings
Motor type settings
Settings of kinematics (DC motor)
Settings of PID control loops
About controller
Settings of kinematics (BLDC motor)

Page 131 / 345

Page 132 / 345

5.3.1. Settings of kinematics (stepper motor)
In the Application Settings Device configuration -> Stepper motor

Settings of stepper motor kinematics window

Motor parameters - directly related to the electric motor settings
Revers - checking this flag associate the motor rotation direction with the position counting direction. Change the flag if positive motor
rotation decreases the value on the position counter. This flag effect is similar to the motor winding reverse polarity.
Move with max speed - if this flag is checked motor ignores the preset speed and rotates at the maximum speed limit.
Limit speed with max speed - if this flag is checked the controller limits maximum speed to the value specified in the Max nominal
speed field. For example, if the speed exceeds the rated value, controller will reduce output action, until the speed come back to the
normal range. However, the controller remains operational and will continue the current task.
Max nominal speed - motor rated speed.
Nominal current - motor rated current. The controller will limit the current with this value.

Page 132 / 345

Page 133 / 345

Current as RMS - if this flag is checked engine current value is interpreted as root mean square current value. If the flag is unset, then
engine current value is interpreted as maximum amplitude value.

Motion setup - movement kinematics settings
Working speed - movement speed.
Backlash compensation - backlash compensation. Since the stage mechanics are not ideal there is a difference between approaching a
given point from the right and from the left. When the backlash compensation mode is on the stage always approaches the point from
one side. The preset value determines the number of steps which the stage takes to pass a given point in order to come back to it
from the same side. If the specified number is above zero the stage always approaches the point from the right. If it is below zero the
stage always approaches the point from the left.
Backlash compensation speed - speed of backlash compensation. When the backlash compensation mode Backlash compensation is on
the stage approaches the point from the right or from the left with a preset speed determined in the number of steps per second.
Acceleration - enables the motion in acceleration mode, the numerical value of the field is the acceleration of movement.
Deceleration - movement deceleration.
Steps per turn - determines the number of steps for one complete motor revolution. The parameter is set by user.
Microstep mode - step division mode. 9 modes are available: from a whole step to the 1/256 of a step. Description of modes is in the
Supported motor types.

Feedback settings
An encoder can be used as feedback sensor for stepper motors. The following encoder types are available: Single-ended, Differential or
Autodetect.
Encoder counts per turn - this parameter defines the number of encoder pulses per one full motor axis revolution.
Encoder reverse - interpret encoder signal as if it were reversed.

Page 133 / 345

Page 134 / 345

5.3.2. Motion range and limit switches
In the Application Settings Device configuration -> Borders

Motion range and limit switches settings window
Borders setup parameter group contains borders and limit switches parameters. These parameters are used to keep the stage in the
permissible physical movement limits or motion range limit in accordance with the user requirements. Borders can be set either by
position (internal controller step counter) or by limit switches located in the stage terminal points.
To set the borders by position select the By position and specify the Left border and Right border values, which correspond to the left
and right edge respectively.
To set the borders by the limit switches select By limit switches and set up both Limit switch 1 and Limit switch 2.
Pushed position - sets the limit switch condition when it is reached: open or closed.
Border - sets the limit switch position: on the left or on the right of the stage working range.
Check the Stop at left border and / or Stop at right border for a forced stop of motor when the border is reached. In this case the
controller will ignore any commands of movement towards the limit switch if the corresponding limit switch has already been reached.
When the border position is reached the corresponding indicator flashes in the main application window.
If the Border misset detection flag is checked, the engine stops upon reaching of each border. This setting is required to prevent
engine damage if limit switches appear to be potentially incorrectly configured. Read more about controller operation in this mode in
the limit switches location on positioners .

Page 134 / 345

Page 135 / 345

5.3.3. Critical board ratings
In the Application Settings Device configuration -> Maximum ratings

Controller critical parameters settings window
Critical board ratings - This group is responsible for the maximum values of input current Max current (power) and voltage Max
voltage (power) on the controller, the maximum current Max current (usb) and voltage Max voltage ( usb) for USB, the minimum
voltage Min voltage (usb) for USB, and the board temperature Temperature (if the temperature is measured on the given controller
version).
If the controller current consumption value, power supply voltage or the temperature goes out of the allowed range defined here then
the controller turns off all power outputs and switches to Alarm state. At the same time the Alarm state information will appear in the
main window (window background will change to red) and the out of range parameter value will be displayed in blue or red (below or
above the limit respectively).
If the Low voltage protection flag is checked the low voltage supply protection is active. Then Low voltage off and below values of input
voltage turns the controller into Alarm state.
The group Misc includes all other critical parameters settings.
Switch off power driver on overheat (> 125 ° C) - this parameter enables the Alarm state in case of power driver overheat.
Switch off power driver on H bridge alert - this parameter enables the Alarm state in case of the power driver malfunction signal.
Enter Alarm state when edge misset is detected - this parameter enables the Alarm state in case of incorrect boundary detection
(activation of right limit switch upon moving to the left, or vice versa).
Sticky Alarm flags - locking of Alarm condition. If the Sticky Alarm flags check-box is unchecked the controller removes the Alarm flag
as soon as it its cause is removed (e.g. in case of over-current the windings are disconnected, which results in the decreased current).
If the Sticky Alarm flags is enabled, the Alarm mode cause and the Alarm mode are canceled by the Stop command only.
Reconnect USB on link break - if this option is enabled, then the controller will reset USB link if the connection breaks.

Page 135 / 345

Page 136 / 345

5.3.4. Power consumption settings
In the Application Settings Device configuration -> Power Management

Power consumption settings window
Current reduction enabled - activates the reduced energy consumption mode.
Current in hold mode - it determines the current in the hold mode in % of the nominal value. Value range: 0 .. 100%.
Current reduction delay - parameter determines the delay between switching to the STOP mode and power reduction activation.
It is measured in milliseconds. Value range: 0 .. 65535 ms.
Power off when stop - it activates the function that deenergized the motor windings after switching to the STOP state.
Power off delay - parameter determines the delay in seconds between switching to the STOP mode and motor power-off. Value
range: 0 .. 65535.
Jerk free - activates the current smoothing function to eliminate the motor vibration.
Current set time - parameter determines the time for jerk free current setting in milliseconds. Value range: 0 .. 65535 ms.
Detailed description of these parameters see in the Power control section.

Page 136 / 345

Page 137 / 345

5.3.5. Home position settings
In the Application Settings Device configuration -> Home position

Home position settings window
Tab Home position sets the home position calibration parameters. Calibration comes to automatic accurate detection of the limit
switch, the revolution sensor signal or moment of getting the external signal, which determines the zero position, and grading from it
by a specified offset. It is helpful when the current location of the stage is unknown but we know the base point position relative to
limit switch or some other signal, which is called home position.
Homing comes to the motor movement towards the predetermined 1st move direction (left or right) at Working speed until the signal
from the source stop after don't happen. Then the motor movement towards the opposite direction with the same speed until the
signal from the source stop after in the active state and continue half turn in the same direction. Then begins the precise movement in
a given direction 1st move direction at 1st move speed. The speed is usually set low enough to keep the next signal. Motor stops,
depending on the stop after value, upon getting a sync input signal, signal from RPM sensor or reaching of the limit switch.
If the flag Use second phase of homing is checked the homing algorithm rotates the motor in a predetermined 2nd move direction (left
or right) with the 2nd move speed.
If the flag Blind half turn is checked the motor ignores the end of the second phase signal during half a turn. It helps to set an
unambiguous detection order for the sensors that have the first and the second movement phases signals close each other.
The third phase of homing is the absolute offset to the distance standoff.
The resulting point is called a home position. It is important that its location on the stage does not depend on the calibration starting
point.
Use fast homing algorithm option uses Working speed (see Settings of kinematics (stepper motor) page) for the first phase of homing
to speed up the process.
Configuration commands are described in the Communication protocol specification section.

Page 137 / 345

Page 138 / 345

5.3.6. Synchronization settings
In the Application Settings Device configuration -> TTL sync

Synchronization settings window
Synchronization is described in details in TTL synchronization section.
Sync in
Clutter time - setting minimum synchronization pulse duration (in microseconds). Defines the minimum duration, which can be
detected (anti-chatter).
Enabled - check this box for the sync in mode enable.
Invert - checked flag shows that the operation is triggered by the falling sync pulse edge.
Absolute position - if the flag is checked, upon sync pulse the stage moves into the absolute position specified in the field Step/Micro
step. If the flag is unchecked, the shift is relative to the defined destination position.
Speed - the speed to use when moving.
Sync out
The Synchronization Output can be used as a "General purpose Output signal".
Enabled - if the flag is checked, the sync output functions according to the next settings. If the flag is unchecked, the output value is
fixed and equal to the Fixed state .
Invert - if the flag is checked the zero logic level is set to active.
Pulse width - specifies the duration of the output signal in milliseconds or steps/encoder pulses.
Fixed state - sets the logic level of output to 0 or 1, respectively.
On start - synchronizing pulse is generated at the beginning of movement.
On stop - synchronizing pulse is generated at the end of movement.
Every - synchronizing pulse is generated every n encoder pulses.
Accuracy - distance to the target position. As soon as the distance to target on approach is less than or equal to this distance a
synchronizing pulse will be generated if "on stop" option is used.

Page 138 / 345

Page 139 / 345

5.3.7. Brake settings
In the Application Settings Device configuration -> Brake control

Magnetic brake settings window
Check the Brake control flag to enable magnetic brake.
Parameters:
Time between motor power on and brake off - time between switching the motor on and switching off the brake (ms).
Time between brake off and readiness to move - time between switching off the brake and motion readiness (ms). All motion
commands will be executed only after this time.
Time between motor stop and brake on - time between stopping the motor and turning on the brake(ms).
Time between brake on and motor power off - time between turning on the brake and motor power-off (ms).
Value range is from 0 to 65535 ms.
Motor power off enabled flag means that when magnetic brake is powered off, the brake turns off motor power supply.
Configuration commands are described in Communication protocol specification .

Page 139 / 345

Page 140 / 345

5.3.8. Position control
In the Application Settings Device configuration -> Position control

Window of Position control
Check the Position control checkbox to activate the position control.
Base - selection of the position control device. You can select an encoder (see Operation with encoders ) or revolution sensor in the
drop-down list.
Minimal error - determines the number of missed steps (0 .. 255), which is considered to be an error. If the amount of missed steps
exceeds the specified number of steps the SLIP error flag is set. Further actions depend on the Error action setting:
If Alarm on errors is active then the controller will enter Alarm state.
If Correct errors is active then the controller will try to correct slip error (see Steps loss detection).
If Ignore errors is active then the controller will do nothing.
Inverted revolution sensor - if the flag is checked the revolution sensor is triggered by the level 1. Unchecked flag means usual logic is
valid - 0 is the trigger/activation/active state.
Configuration commands are described in the Communication protocol specification .

Page 140 / 345

Page 141 / 345

5.3.9. Settings of external control devices
In the Application Settings Device configuration -> Control

Settings of external control devices window
Control mode - range of external motor control devices.
Control disabled - external devices are not used
Joystick - joystick is used
Buttons - buttons are used
Joystick block contains joystick settings.
Low end, Center and High end determine the lower border, the middle and the upper border of joystick range respectively. Hence the
joystick ADC normalized value equal to or less than Low end corresponds to the maximum joystick deflection towards lower values.
Exp factor - exponential nonlinearity parameter. See Joystick control.
Dead zone - dead zone of joystick deviation from the center position. Minimum step of variation: 0.1%, the maximum value is 25.5%.
The joystick deviation from Center position by less than Dead zone value corresponds to zero speed.

Page 141 / 345

Page 142 / 345

Reverse joystick - Reverse the joystick effects. Joystick deviation to large values results in negative speed and vice versa.
Button Joystick calibration opens calibration dialog box.

Dialog box of Joystick Calibration
Calibration is automatic border and the dead zone detection. Below is the process description:
Move the joystick to extremes to determine the borders. The range of all measured values is represented in a green line.
Release the joystick and press the Start to initiate detection of the dead zone. Within 5 seconds imitate accidental influences on the
joystick, which should not be recognized as deviation from the joystick zero position. The dead zone range is represented in red.
Pressing the Apply button will send the computed values into the Settings window. Pressing OK button will send the values and close
the calibration dialog box.
Left button and Right button blocks contain button settings.
Pushed Position - determines the state (pressed or released button) which is considered the motion signal by the controller.
Open - released button is considered to be a motion command.
Close - depressed button is considered to be a motion command.
Click settings block lets one to set up button "click" behaviour. A rapid press of a button is interpreted as a "click".
Max click time - Maximum click time. Until this amount of time is elapsed controller will not start moving with first speed (see below).
Delta - Relative position offset. Controller will do a shift on offset with each click.
Speed settings block contains timeout and speed settings.
Timeout [i] - the time after which the speed switches from Speed[i] to Speed[i+1]. If any of the Timeout[i] is equal to zero, no
switching to the next speeds will occur.
Speed[i] - speed of the motor after time equal to Timeout[i-1]. If any of the speeds is equal to zero, no switching to this and
subsequent speeds will occur.
Configuration commands are described in Communication protocol specification .

Page 142 / 345

Page 143 / 345

5.3.10. UART Settings
In the Application Settings Device configuration -> UART

UART settings tab
Speed - Select the UART speed from the preset values in the range from 9600 bit/s to 921600 bit/s.
Use parity bit - use of parity bit.
Parity type - Types of parity:
Even - this bit type is set when total number of bits is odd
Odd - this bit type is set when total number of bits is even
Space - parity bit is always 0
Mark - parity bit is always 1
Stop bits - number of stop bits (1 or 2).

Page 143 / 345

Page 144 / 345

5.3.11. General purpose input-output settings
In the Application Settings Device configuration -> EXTIO settings

General purpose input-output settings tab
For detailed information, please see General purpose digital input-output .
ExtIO setup
IO pin is output - if the flag is checked the needle of ExtIO works in output mode, otherwise - in the input mode.
Invert - if the flag is checked the rising edge is ignored and the falling edge is active.
ExtIO mode - mode selection
If ExtIO configured for input mode the choice of controller action settings by the input pulse is active:
Do nothing - do nothing.
Stop on input - run STOP command.
Power off on input - run PWOF.
Movr on input - run MOVR.
Home on input - run HOME.
Alarm on input - enter ALARM state.
If ExtIO configured for output mode the choice of the output state depending on the controller status is active:
Out
Out
Out
Out
Out
Out

always off - always in inactive state.
always on - always in active state.
active when moving - in active state during motion.
active in Alarm - in active state if the controller is in the Alarm state.
active when motor is on - in active state if the motor windings are powered.
active when motor is found - in active state if the motor is connected.

Page 144 / 345

Page 145 / 345

5.3.12. Motor type settings
In the Application Settings Device configuration -> Motor type

Motor type settings window
Stepper motor or DC-motor - motor type indication. Control power driver should be selected as well:
Integrated. This type is used for this controller modification.
On discrete keys. Will be used in future versions.
External driver. Designed to control stepper motors using three standard signals (see External driver control interface )

Warning. Driver type or motor type change is a critical operation that should not be performed while motor rotates.
To implement the change correctly the motor winding should be de-energized and turned off, after that motor type
can be changed and motor of another type can be connected. The same applies to changing of integrated driver to
external one and vice versa.

Note. Available motor types are determined by your firmware upgrade. Available control drivers depend on the
controller board type, except for the external driver.

Page 145 / 345

Page 146 / 345

5.3.13. Settings of kinematics (DC motor)
In the Application Settings Device configuration -> DC Motor

Settings of kinematics (DC motor) window

Motor parameters - electric motor settings
Revers - checking this flag associate the motor rotation direction with the current position counting direction. Change the status of the
flag if positive motor rotation decreases the value on the position counter register. This flag effect is similar to connecting the motor
winding to reverse polarity.
Move with max speed - if this flag is checked motor ignores the preset speed and rotates at the maximum speed limit.
Limit speed with max speed - if this flag is checked the controller limits the maximum speed to the number of steps per second,
specified in the Max nominal speed field.
Max nominal speed, Max voltage, Max current - are motor nominal parameters. If they are active and applicable for given type of
motor, the controller limits these parameters within the specified values. For example, if the motor speed and voltage exceeds the
nominal values, the controller will reduce output action until both values are within the normal range. However, the controller remains
in operational condition, and will execute the current task.

Page 146 / 345

Page 147 / 345

Motion setup - settings related to the movement kinematics
Working speed - movement speed.
Backlash compensation - backlash compensation. Since the stage mechanics are not ideal there is a difference between approaching a
given point from the right and from the left. When the backlash compensation mode is on the stage always approaches the point from
one side. The preset value determines the number of steps which the stage takes to pass a given point in order to come back to it
from the same side. If the specified number is above zero the stage always approaches the point from the right. If it is below zero the
stage always approaches the point from the left.
Backlash compensation speed - speed of backlash compensation. When the backlash compensation mode Backlash compensation is on
the stage approaches the point from the right or from the left with a preset speed determined in the number of steps per second.
Acceleration - enables the motion in acceleration mode, the numerical value of the field is the acceleration of movement.
Deceleration - movement deceleration.

Feedback settings
Encoder - use of encoder as a feedback sensor. The following encoder types are available: Single-ended, Differential or Autodetect.
Encoder counts per turn - this parameter defines the number of encoder pulses per one motor axis full rotation.

Page 147 / 345

Page 148 / 345

5.3.14. Settings of PID control loops
In the Application settings Device configuration -> PID control

Settings of PID control loops window
In this section, you can change the PID coefficients.
A voltage PID is used, K_p, K_i and K_d coefficients can vary in 0..65535 range for DC motors.
Fractional PID coefficients (on right) are only for BLDC motor (supported in firmware 4.1.x and older).

Warning. Do not change the settings of PID controllers, if you are not sure you know what you are doing!

Configuration commands are described in the Communication protocol specification . PID tuning is described in detail in the PIDalgorithm for DC engine control section.

Page 148 / 345

Page 149 / 345

5.3.15. About controller
In the Application Settings Device configuration -> About device

About device tab
The Board section displays information about the controller:
Serial number - device serial number.
Bootloader version - bootloader version.
Firmware version - firmware version.
Latest firmware - latest available firmware version for this device (downloaded from the internet if internet connection is available).
The Update button opens firmware update dialog box.
Select the firmware file with the .cod extension and click Open. XILab will start the firmware update and will display "Please wait while
firmware is updating". Do not power off the controller during the upgrade. Upon completion of the update the "Firmware updated
successfully" dialog will be displayed.
The Choose Firmware button opens a dialog with firmware version numbers. Pick a number and press "Update firmware" to update to
selected version. An appropriate firmware file will be downloaded from the internet and loaded into the controller. This feature requires
an active internet connection.
The Autoupdate button automatically updates firmware from the internet to the latest available version.
Friendly name - an arbitrary user-defined name for the controller. If this string is not empty, then it will replace device id and serial
number in window titles. This is a convenience feature for situations with multiple controllers connected to the same PC.
EEPROM precedence - this flag works only for stages with autodetection feature. If this flag is set, then settings from external EEPROM
memory take precedence and are applied every controller start up or positioner connection. Otherwise settings from FRAM are used. If
this option is turned on then "Save to flash" button is displayed in red. This serves as a warning to the user that settings in flash
memory will be overwritten when a device with external memory is plugged into the controller.

Page 149 / 345

Page 150 / 345

Information block contains information about the device: the manufacturer, device ID, device type. The data are read from the
internal memory of the controller.
All of this data is reported to the XILab application when the device is connected.

Page 150 / 345

Page 151 / 345

5.3.16. Settings of kinematics (BLDC motor)
In the Application Settings Device configuration -> DC Motor

Settings of kinematics (DC motor) window

IMPORTANT. Only firmwares 4.1.x (and older) support BLDC control

Motor parameters - electric motor settings
Revers - checking this flag associate the motor rotation direction with the current position counting direction. Change the status of the
flag if positive motor rotation decreases the value on the position counter register. This flag effect is similar to connecting the motor
winding to reverse polarity.
Move with max speed - if this flag is checked motor ignores the preset speed and rotates at the maximum speed limit.
Limit speed with max speed - if this flag is checked the controller limits the maximum speed to the number of steps per second,
specified in the Max nominal speed field.
Max nominal speed, Max voltage, Max current - are motor nominal parameters. If they are active and applicable for given type of
motor, the controller limits these parameters within the specified values. For example, if the motor speed and current exceeds the
nominal values, the controller will reduce output action until both values are within the normal range. However, the controller remains
in operational condition, and will execute the current task.

Page 151 / 345

Page 152 / 345

IMPORTANT. BLDC controller always use max current and don't use max voltage because main characteristic for
BLDC is max current, max voltage usually more than 8SMC5 supply voltage.

Motion setup - settings related to the movement kinematics
Working speed - movement speed.
Backlash compensation - backlash compensation. Since the stage mechanics are not ideal there is a difference between approaching a
given point from the right and from the left. When the backlash compensation mode is on the stage always approaches the point from
one side. The preset value determines the number of steps which the stage takes to pass a given point in order to come back to it
from the same side. If the specified number is above zero the stage always approaches the point from the right. If it is below zero the
stage always approaches the point from the left.
Backlash compensation speed - speed of backlash compensation. When the backlash compensation mode Backlash compensation is on
the stage approaches the point from the right or from the left with a preset speed determined in the number of steps per second.
Acceleration - enables the motion in acceleration mode, the numerical value of the field is the acceleration of movement.
Deceleration - movement deceleration.
Number of poles - number of poles per revolution

Feedback settings
Encoder - use of encoder as a feedback sensor. The following encoder types are available: Single-ended, Differential or Autodetect.
Encoder counts per turn - this parameter defines the number of encoder pulses per one motor axis full rotation.

Page 152 / 345

Page 153 / 345

5.4. XILab application settings
1.
2.
3.
4.
5.
6.
7.
8.
9.

XILab general settings
General motor settings
Attenuator settings
Cyclical motion settings
Log settings
Charts general settings
Charts customization
User units settings
About the application

Page 153 / 345

Page 154 / 345

5.4.1. XILab general settings
Program configuration in the Application Settings

XILab general settings tab
This tab configures the Xilab interface type and XIMC devices detection options.
Skin Type group includes Xilab interface type settings. There are two interface types available: "General Motor" and "Attenuator".
General Motor option enables general motor interface. In this mode current motor position is displayed in main window numerically and
graphically as a slider. Controls to move the motor to specified coordinate (in steps) and to shift on specified offset (in steps) are also
available. General motor interface settings are located on the General motor settings page.
Attenuator option enables Attenuator interface. In this mode current motor position is displayed in main window graphically as a series
of circles representing attenuator filters. Controls to find the combination of filters which is the best approximation to the specified
transparency are also available. Attenuator interface settings are located on the Attenuator settings page.
Device detection settings group includes XIMC device detection settings.
If Probe devices option is checked, at the start application tries to identify controllers by sending them commands GETI and GSER.
I f Enumerate non-XIMC devices option is checked the application queries all COM-port type devices in the system. If the option is
disabled, only devices with names matching the XIMC mask ("XIMC Motor Controller" in Windows; /dev/ximc/* and /dev/ttyACM* in
Linux/Mac) are queried.
If Enumerate network devices option is checked the application queries network-attached devices. A list of domain names and/or IP
addesses with XIMC server software is located below. One can add entries to the list manually or use automatic detection by pressing
Scan for local XIMC servers . Please note that in case of more than one local server automatic scan will pick a random one and it will
require several attempts to find them all.

Page 154 / 345

Page 155 / 345

Warning. If both Probe devices and Enumerate non-XIMC devices options are enabled, on startup XILab will send
data to all COM-ports.
If the PC has multiple Bluetooth COM-ports, due to the nature of Bluetooth operation, the queries will be conducted
sequentially, and connection attempts may take from a few to tens of seconds each.

Page 155 / 345

Page 156 / 345

5.4.2. General motor settings
General motor in the Application Settings

General motor settings tab
This tab configures the slider display settings and secondary position display settings for a general motor device. The position slider is
located in the main window and visually represents the stage current position relative to the borders.

Fragment of Main application window containing slider
Slider settings group contains the following slider settings:
Left slider bound and Right slider bound contain the coordinates of the left and right bounds of the slider respectively.
If Watch over ltimits is checked then upon moving out of the slider range, the scale shifts to display the current position. However, he
total distance displayed on the slider remains unchanged. This option is not used by default. It is useful when you know the stage
motion range, but do not know the relation of that position to the values displayed in XILab, e.g. for the calibration purposes. The
option is often used together with the settings of the tab Home position settings.
Position settings group contains the position display settings.
If Show secondary position is checked then a secondary position is shown in the main application window.

Page 156 / 345

Page 157 / 345

5.4.3. Attenuator settings
In the Application Settings Program configuration -> Attenuator settings

Attenuator settings tab
This tab is used to configure attenuator interface. An attenuator is a device used to reduce the power level of an optical signal by
passing light through one or several optical filters. This tab becomes active when an "Attenuator" skin type is selected in "Program
configuration" tab.
Attenuator type group contains radio buttons which allow one to choose one- or two-wheel configuration of the attenuator.
Depending on the choice here one or two Wheel groups become available. They should be filled with attenuator filters' transparency
values on the corresponding wheel, in order.

Page 157 / 345

Page 158 / 345

5.4.4. Cyclical motion settings
In the Application Settings Program configuration -> Cyclic motion

Cyclic motion tab
Use this tab to configure the cyclic motion between two preset positions. It is used mainly for demonstration purposes. This mode is
activated by Cyclic button in the main window, and deactivated by Stop button in the main window.
Cyclic motion mode settings:
Border to border - cyclical motion between the borders configured in the Motion range and limit switches . The motion begins towards
the left edge.
Point to point - cyclical motion between points specified in the Point to point setup group. The stage moves to the left point, stops,
then moves to the right point, stops, and then the cycle repeats.

Page 158 / 345

Page 159 / 345

5.4.5. Log settings

XILab log settings window
On this page (Program configuration -> Log settings) you can configure the logging detail level.
I n Display messages by loglevel box you can choose an option to log nothing (None), log only errors (Error), errors and warning
messages (Error, Warning), errors, warnings and information messages (Error, Warning, Info) for each source: XILab application,
libximc library and Scripts module.
If the Enable log autosave checkbox is checked then the log is saved into file. Directory where the log file will be saved is set below.
Log file is flushed to the disk every 5 seconds.
File has a name of type "xilab_log_YYYY.MM.DD.csv", where YYYY, MM and DD are current year, month and day, respectively. Data is
stored in CSV format. Messages that are saved into the log file are not filtered by logging options.

Page 159 / 345

Page 160 / 345

5.4.6. Charts general settings
Program configuration -> Graph setup in the Application Settings

Charts general settings tab
Visible interval - the time interval displayed in charts on the horizontal axis.
Update interval - chart data update interval.
Break data update when motor stopped - stops drawing charts when the motor stops. This option provides the possibility to use the
chart space more rationally, removing the areas when there is no motor motion.
Autostart charts on window open - starts displaying chart data automatically on window open. If you wish to start charts update
manually, then uncheck this option.

Page 160 / 345

Page 161 / 345

5.4.7. Charts customization
In the Application Settings Program configuration -> Graph setup -> ...
This section equally applies to the individual appearance settings of speed, voltage, current, PWM duty factor, temperature, and other
parameter charts, which can be displayed in the XILab application.

Charts customization on the example of the position chart tab
Charts display settings include line style and chart vertical axis scale adjustment.
Position curve setup group changes curve parameters. It includes the Line width, Color and Line style.
Scaling group changes curve display range on the vertical axis by setting values in Scale min and Scale max.
Checked Autoscale flag results in auto-scaling of the scale limits in accordance with the change limits of the variable on the axis Y. In
this case, the parameters Scale min and Scale max are ignored.
Antialiasing flag enables chart lines smoothing, which provides the possibility to achieve a higher-quality display, but it slows a little the
chart drawing process.

Page 161 / 345

Page 162 / 345

5.4.8. User units settings
In the Application Settings Program configuration -> User units

User units tab
Use this tab to configure user units display. Used to replace internal controller coordinates with units familiar to the user.
User units settings:
Enable user units - enables user unit display instead of steps (in case of stepper motor) or encoder counts (in case of DC motor). User
units replace steps(counts) only in the main XILab window and do not affect any of the Settings pages.
Ratio - conversion of controller steps to position units, set as a ratio of two integer values "x steps = y user units". Values "x", "y" and
unit name string are set by user.
Precision - displayed precision.
Get from EEPROM button reads user unit settings from connected EEPROM.

Page 162 / 345

Page 163 / 345

5.4.9. About the application
Program configuration -> About in the Application Settings

About tab
This section displays the XILab application version. It also contains a link to the page with the latest Software version.

User configuration file cleanup dialog
"Remove all custom configuration files" button displays a dialog prompt to delete all custom configuration files created by XiLab. Files
to be deleted are located in XiLab configuration directory. These files are "settings.ini", which stores common program settings,
"SNnnn.cfg", which store per-controller settings, "V_nnn", which store virtual controller internal states, "scratch.txt", which stores last
run script. Here "nnn" means any number. Pressing OK in this dialog will delete all these files and close XiLab, pressing Cancel will
abort deletion and close this dialog.

Page 163 / 345

Page 164 / 345

5.5. Positioner specifications
1.
2.
3.
4.
5.
6.
7.

Positioner name
Positioner general characteristics
Motor characteristics
Encoder specifications
Hall sensor characteristics
Reducing gear specifications
Accessories specifications

Page 164 / 345

Page 165 / 345

5.5.1. Positioner name
Stage configuration -> Positioner name in the Application Settings

Positioner name window
This block contains the positioner name (defined by user).

Page 165 / 345

Page 166 / 345

5.5.2. Positioner general characteristics
Stage configuration -> Stage in the Application Settings

Positioner general characteristics window
Stage parameter prouop contains information about the stage.
Manufacturer - the manufacturer name.
Part number - the catalog number.
Lead screw pitch - lead screw pitch.
Units - stage movement measurement units (mm, degrees, steps).
Max. speed - the maximum speed.
Travel range - range of motion.
Supply voltage - acceptable supply voltage range.
Max. current consumption - the maximum current consumption.
Horizontal load capacity - the maximum horizontal load on the stage.

Page 166 / 345

Page 167 / 345

Vertical load capacity - the maximum vertical load on the stage.

Page 167 / 345

Page 168 / 345

5.5.3. Motor characteristics
Stage configuration -> Motor in the Application Settings

Motor characteristics window
This section contains motor information.
Manufacturer - motor manufacturer.
Part number - catalog number.
Motor type - motor type (stepper, DC or BLDC)

Page 168 / 345

Page 169 / 345

Poles - number of pole pairs for DС or BLDC motors, steps per revolution for stepper motors.
Phases - BLDC motor phases.
Nominal voltage - nominal winding voltage.
Nominal current - maximum continuous winding current for DC or BLDC motors, nominal current for stepper motors.
Nominal speed - nominal speed.
Nominal torque - nominal torque.
Nominal power - nominal power consumption.
Winding resistance - active resistance of the winding.
Winding inductance - inductance of the winding.
Rotor inertia - rotor inertia.
Stall torque - zero speed torque.
Detent torque - hold torque with unpowered windings.
Torque constant - torque constant.
Speed constant - speed constant.
Speed/torque gradient - speed/torque constant.
Mechanical time constant - motor time constant.
Max speed - maximum allowed speed.
Max current - maximum allowed winding current.
Max current time - maximum safe time of max current in the winding.
No load current - no-load current consumption.
No load speed - no-load motor speed.

Page 169 / 345

Page 170 / 345

5.5.4. Encoder specifications
Stage configuration -> Encoder in the Application Settings

Window Encoder specifications
This section contains information about encoder
Manufacturer - encoder manufacturer name.
Part number - the catalog number.
Max. operating frequency - the maximum operating frequency.
Supply voltage - acceptable supply voltage range.
Max. current consumption - the maximum current consumption.
Pulses per revolution - pulses per single motor shaft revolution.
Output - differential or single-ended output.
Output type - electric output type (push-pull or open drain).
Index channel - indicates if additional index channel is present.

Page 170 / 345

Page 171 / 345

Revolution sensor - indicates if revolution sensor is present.
Rev.sensor active is high - if enabled then active revolution sensor state is logical 1, else it is logical 0.

Page 171 / 345

Page 172 / 345

5.5.5. Hall sensor characteristics
Stage configuration -> Hall sensor in the Application Settings

Hall sensor properties window
This section contains information about hall sensor:
Manufacturer - sensor manufacturer name.
Part number - the catalog number.
Max. operating frequency - the maximum operating frequency.
Supply voltage - acceptable supply voltage range.
Max. current consumption - the maximum current consumption.
Pulses per revolution - pulses per single motor shaft revolution.

Page 172 / 345

Page 173 / 345

5.5.6. Reducing gear specifications
Stage configuration -> Gear in the Application Settings

Reducing gear specifications window
This section contains information about the reducing gear.
Manufacturer - the manufacturer name.
Part number - the catalog number.
Reduction - gear transmission ratio.
Max. continious torgue - maximum torque at the gear input.
Max. input speed - the maximum speed at the gear input.
Output backlash - gear output backlash.
Equivalent input inertia - equivalent input inertia of the gear.
Efficiency - Gear efficiency.

Page 173 / 345

Page 174 / 345

5.5.7. Accessories specifications
Stage configuration -> Accessories in the Application Settings

Accessories specifications window
This panel contains information about various accessories.
Magnetic brake - magnetic brake section.
Information - magnetic brake manufacturer and part number.
Rated voltage - nominal magnetic brake voltage.
Rated current - nominal magnetic brake current.
Torque - hold torque.
Available - indicates if magnetic brake is available.
Powered hold - magnetic brake is in hold mode on power on if this option is enabled.
Temperature sensor - temperature sensor section.

Page 174 / 345

Page 175 / 345

Information - temperature sensor manufacturer and part number.
Temp. range - measuered temperature range.
Temp. gradient - temperature gradient.
Type - sensor type (thermocouple or semiconductor).
Available - indicates if temperature sensor is available.
Limit switches - limit switches section.
SW1 available - indicates if SW1 limit switch is available.
SW2 available - indicates if SW2 limit switch is available.
SW1 low is active - indicates if SW1 limit switch active state is low.
SW2 low is active - indicates if SW2 limit switch active state is low.
Limit switches shorted - if enabled, then limit switches are shorted.

Page 175 / 345

Page 176 / 345

5.6. Correct shutdown
Correct shutdown assumes shutdown of the motor and saving the current position by the controller. The current position is
automatically saved, see Saving the position in controller's FRAM memory .
Exit button performs correct shutdown and exit. When you click it the application sends a soft stop command to the controller, and
after the stop is complete, the application sends command of power-off. If execution of the soft stop command was interrupted by an
event like a motion command from the joystick or signal of TTL synchronization, or if while sending of soft stop command or command
of power off to the controller, the library returned an error, the exit will be canceled. In this case you need to check joystick settings
and settings of "right" and "left" buttons and Synchronization settings.

Page 176 / 345

Page 177 / 345

5.7. Working over network
XiLab is capable of interacting with remote controllers via Ethernet. However you need a special XIMC server, which can be either
obtained as a standalone program and installed on any appropriate device, or as one of the services of 8SMC4-USB-Eth1 adapter.

Getting started
Before launching, connect controllers to the device with XIMC server installed using USB cable. At the same time, it is assumed
that controllers can be connected to the motor and energized from power supply (see one axis configuration for more details).
Connect the device with XIMC server to the same subnet that contains the control computer, DHCP server. In case of 8SMC4USB-Eth1 adapter supply it with power adapter (via 5V - 2A connector) and wait for a minute to finish Linux boot on the
onboard computer.
Launch XiLab and make the following.
At first start, XiLab opens controller detection window with no devices found.

Add virtual XIMC controller by increasing the number of Virtual Devices in the bottom part of window and click Rescan. Then choose
Virtual XIMC, SN1 and click Open selected.

XiLab main window with single axis mode will appear. Go to Settings... and choose Program configuration (for detailed information
please refer to XiLab general settings). Check Enumerate network devices in Device detection settings and press "Scan for local XIMC
servers" button. XiLab will use broadcast request to find available XIMC servers in your LAN and for each detected instance an entry in
the "IP/hosts" list will be created. You can also edit address list manually if desired.
Click OK and close XiLab.

Page 177 / 345

Page 178 / 345

When you restart XiLab it will find all axis connected to the system. In controller detection window choose an axis you need. You can
control it in single-axis mode or in multi-axis mode if more than one axis was chosen. For additional information please refer to Getting
started with XiLab software and XILab application User's guide

Note. Once the device IP address has been found, it should be understood that moving the device to another location
may lead to a change in its IP.

Page 178 / 345

Page 179 / 345

Note. Working with multiple adapters may cause a problem when the same board responds in a broadcast requests.
You can find a new device by two different ways :
Disconnect other axes, find the device on the network, connect all again.
Press Scan for local XIMC servers button until you find sought-for device.

Page 179 / 345

Page 180 / 345

5.8. XILab installation
1. Installation on Windows
1. Installation on Windows XP
2. Installation on Windows 7
3. Installation on Windows 8
2. Installation on Linux
3. Installation on MacOS

Page 180 / 345

Page 181 / 345

5.8.1. Installation on Windows
1. Installation on Windows XP
2. Installation on Windows 7
3. Installation on Windows 8

Page 181 / 345

Page 182 / 345

5.8.1.1. Installation on Windows XP
Copy the installer program file to your computer. The installer file name is "xilab-.exe". It automatically detects
whether it is running on 32-bit or 64-bit version of Windows and installs the appropriate version of XiLab.

Note: Only Windows XP SP3 is supported. Please update your Windows XP to the latest service pack.

Run the installer and follow the on-screen instructions.

Page 182 / 345

Page 183 / 345

All the necessary software including drivers, packages and programs will be installed automatically.

After the installation is complete the XiLab application will be started by default.

Page 183 / 345

Page 184 / 345

Connect the stage to the controller. Connect regulated power supply to the controller. Ground the controller or the power supply unit.
Connect the controller to the computer using a USB-A - mini-USB-B cable.
LED indicator on the controller board will start to flash. New Hardware Wizard will start after the first controller is connected to the
computer. Wait until Windows detects the new device and installs the drivers for it.

If the driver was not automatically installed select "No, not this time" and click "Next>" in the pop-up window.

Page 184 / 345

Page 185 / 345

In the next window select "Install from a list or specific location (Advanced)" and click "Next>".

Select the *.inf file on the disk with the software supplied with the controller or in the program directory (by default the path is
C:\Program Files\XiLab\driver\) and click "Next".

Page 185 / 345

Page 186 / 345

Click "Next".

Click "Continue anyway".

Page 186 / 345

Page 187 / 345

Click "Finish". Driver installation is complete.

Click Retry or run the Xilab application again if it was closed. The system will detect the connected controller and open the main Xilab
window.

Page 187 / 345

Page 188 / 345

Page 188 / 345

Page 189 / 345

5.8.1.2. Installation on Windows 7
Copy the installer program file to your computer. The installer file name is "xilab-.exe". It automatically detects
whether it is running on 32-bit or 64-bit version of Windows and installs the appropriate version of XiLab.

Run the installer and follow the on-screen instructions.

Page 189 / 345

Page 190 / 345

Page 190 / 345

Page 191 / 345

All the necessary software including drivers, packages and programs will be installed automatically.

After the installation is complete the XiLab application will be started by default.

Connect the stage to the controller. Connect regulated power supply to the controller. Ground the controller or the power supply unit.
Connect the controller to the computer using a USB-A - mini-USB-B cable.
LED indicator on the controller board will start to flash. New Hardware Wizard will start after the first controller is connected to the
computer.

Page 191 / 345

Page 192 / 345

Wait until Windows detects the new device and installs the drivers for it. After the driver is successfully installed click Retry or run the
Xilab application again if it was closed. The system will detect the connected controller and open the main Xilab window.

Page 192 / 345

Page 193 / 345

Page 193 / 345

Page 194 / 345

5.8.1.3. Installation on Windows 8
Copy the installer program file to your computer. The installer file name is "xilab-.exe". It automatically detects
whether it is running on 32-bit or 64-bit version of Windows and installs the appropriate version of XiLab. Run the installer and follow
the on-screen instructions.

All the necessary software including drivers, packages and programs will be installed automatically.

Page 194 / 345

Page 195 / 345

After the installation is complete the XiLab application will be started by default.

Connect the stage to the controller. Connect regulated power supply to the controller. Ground the controller or the power supply unit.
Connect the controller to the computer using a USB-A - mini-USB-B cable.
LED indicator on the controller board will start to flash. New Hardware Wizard will start after the first controller is connected to the
computer. Wait until Windows detects the new device and installs the drivers for it. After the driver is successfully installed, click Retry,
or run the Xilab application again, if it was closed. The system will detect the connected controller and open the main Xilab window.

Page 195 / 345

Page 196 / 345

5.8.2. Installation on Linux
5.8.2. Installation on Linux
Debian / Ubuntu
Installing in graphical mode
The text installer
RedHat / OpenSUSE
The text installer

XILab package installs its files in the following directories:
/usr/bin/xilab - executable file
/usr/share/icons/xilab.png - Icon
/usr/share/xilab/scripts/ - directory scripts
/usr/share/xilab/profiles/ - directory with profiles
/usr/share/xilab/xilabdefault.cfg - file with the default settings

Debian / Ubuntu
Installing in graphical mode
Click on the file libximc6_x.y.z-1_i386.deb (for 32-bit versions of Linux) or libximc6_x.y.z-1_amd64.deb (for 64-bit versions of Linux).
Installation window will appear. Click the Install package. This will install the libximc library.

Page 196 / 345

Page 197 / 345

Click on the file xilab_x.y.z-1_i386.deb (for 32-bit versions of Linux) or xilab_x.y.z-1_amd64.deb (for 64-bit versions of Linux).
Installation window will appear. Click the Install package. Dependencies and Xilab application will be installed.

The text installer
Execute the following commands as super-user (root):
gdebi "/libximc6_-1_.deb"
gdebi "/xilab--1_.deb"
where  is the path to package files (eg "/home/user/Downloads/"),  and  are the version
numbers of libximc library and xilab application respectively (for example, "2.0.2" and "1.8.12") and  is the identifier of
architecture ("i386" for 32-bit systems and "amd64" for 64-bit systems).
Example:
gdebi "/home/user/Downloads/libximc6-2.0.2-1_amd64.deb"
gdebi "/home/user/Downloads/xilab-1.8.12-1_amd64.deb"
Xilab application requires X-server (graphic mode) for operation.

RedHat / OpenSUSE
The text installer
Execute the following commands as super-user (root):
zypper install "/libximc6--1..rpm"
zypper install "/xilab--1..rpm"
where  is the path to package files (eg "/home/user/Downloads/"),  and  are the version
numbers of libximc library and Xilab application respectively (for example, "2.0.2" and "1.8.12") and  is the identifier of
architecture ("i386" for 32-bit systems and "amd64" for 64-bit systems).
Example:
zypper install "/home/user/Downloads/libximc6-2.0.2-1.x86_64.rpm"
zypper install "/home/user/Downloads/xilab-1.8.12-1.x86_64.rpm"
Xilab application requires X-server (graphic mode) for operation.

Page 197 / 345

Page 198 / 345

5.8.3. Installation on MacOS

Copy the file with the installer archive to your computer. The archive with the installation program is named "xilab-osx64.tar.gz".

Unpack the archive by a mouse click.

Make right button click on installer.pkg.

Page 198 / 345

Page 199 / 345

Choose "Open".

Choose "Open".

Select "Continue" in the main window of the installer.

Page 199 / 345

Page 200 / 345

Now select "Install."

Enter the password.

Wait until the installation is complete.

Page 200 / 345

Page 201 / 345

Select the XILab application in the Programs block

Start it.

Page 201 / 345

Page 202 / 345

6. Programming
1. Programming guide
1. Working with controller in Labview
2. Working with controller in Matlab
2. Communication protocol specification
3. 8SMC1-USBhF software compatibility
4. Libximc library timeouts
5. XILab scripts

Page 202 / 345

Page 203 / 345

6.1. Programming guide
Programming guide is included in development kit libximc 2.X.X, where 2.X.X is the version number. It is located in /ximc2.X.X/ximc/doc-en/libximc7-en.pdf. Also the programming guide can be downloaded from this link. Development kit can be
downloaded on Software page. Programming guide is Doxygen-based.
Working with controller in Labview
Working with controller in Matlab

Page 203 / 345

Page 204 / 345

6.1.1. Working with controller in Labview
Download Labview example from the Software page.
Extract the archive and run "XImc Example One axis" file using Labview.

LabView environment will start. You will see graphical user interface of the front panel of the example, which looks like a simplified
XILab interface.
In the left part of the window you can find a "Find controllers" button to rescan available controllers, a field to pick the controller by its
serial port name and an information block which displays current open controller state (power and usb voltage and current,
temperature and movement speed).
In the central part of the window you will find indication and control block. This block contains a numeric field with current position,
left, right and soft stop buttons, controls to move to specified coordinate and shift on specified offset.
To the right of this block you can find "HOME", "ZERO", "STOP" and "Exit" buttons, which perform homing, zero current controller
position, perform fast stop and exit the example, respectively.
The rightmost block is a "Move settings" dialog, which demonstrates how you can load and save settings to the controller. When you
press its "GET" button current movement settings are loaded into the fields below this button and the "SET" button sends values from
its edit fields to the controller.

Example source can be viewed by entering edit mode. The example queries the controller status in an infinite loop and outputs the
results. If you press any button on the front panel the corresponding functional block of the example is run.

Page 204 / 345

Page 205 / 345

The example uses libximc library functions. Each function has a corresponding subVI module, which has inputs and outputs
corresponding to input and output parameters of this function. To call any libximc function one should first enumerate devices by using
"device_enumerate", then pick any device from the list and open it using "open_device" function, then pass resulting handle to desired
libximc function. After you're finished using the device it should be closed with "close_device" function.

Page 205 / 345

Page 206 / 345

Let's review how to create a simple Labview program with libximc library using "Ximc simple example.vi".

The program starts by calling enumerate_devices function and passing it the enumerate flags parameter (for details see Programming
guide). Result of the enumerate_devices function call is an opaque pointer and is passed to the get_device_name function together
with device number, whose name we want to find out (one can get total number of found devices by passing the same opaque pointer
to the get_device_count function). Result of the get_device_name function call is a string, which is passed to the open_device function.
This function call sequence is not mandatory (though recommended) - one can manually form device name string and pass it to the
open_device function directly.
Result of the open_device function call is a device handle, or a ximc.h header constant device_undefined, which is returned if libximc
could not open specified device. Device handle is passed to all functions which read data from the controller, write data to the
controller or send commands to the controller, together with appropriate parameters if necessary by function prototype. "Ximc simple
example.vi" calls command_left, command_wait_for_stop and command_stop as an example. After you stop using the controller you
need to close its handle by passing it to the close_device function. After you stop using enumerate_devices result you need to free
allocated memory pointed to by this opaque pointer by passing it to the free_enumerate_devices function (not shown in this example).

Note. Libximc library opens controllers in exclusive access mode. Any controller opened by libximc needs to be closed
before it may be used by another process. Do not stop this Labview example or any other Labview program which
uses libximc with the "Abort execution" button - this doesn't give the running program a chance to call the
close_device() function, thus all open controllers will become locked and inaccessible until you close Labview
environment entirely.

Page 206 / 345

Page 207 / 345

6.1.2. Working with controller in Matlab
Libximc library can be used to work with controller in Matlab.

Note: SDK requires Microsoft Visual C++ Redistributable Package 9.0.307291 (provided with SDK - vcredist_x86 or
vcredist_x64).

Extract files from libximc development kit. Copy ximc.h, win64\libximc.dll, win64\bindy.dll, win64\xiwrapper.dll,
win64\wrappers\matlab\libximc_thunk_pcwin64.dll and win64\wrappers\matlab\ximc.m to examples\testmatlab if you are
using 64-bit Matlab environment or copy ximc.h, win32\libximc.dll, win32\bindy.dll, win32\xiwrapper.dll and
win32\wrappers\matlab\ximcm.h if you are using 32-bit one. Connect the controller to the PC and run the file testximc.m.

Page 207 / 345

Page 208 / 345

In the command window you will see the output of the example which reports controller status.
You can call libximc functions from Matlab program this way: define the path to the libximc.dll, bindy.dll and xiwrapper.dll
dynamic link libraries and its header ximc.h and additional to libximc_thunk_pcwin64.dll and ximc.m files if you are using 64-bin
environment. Use loadlibrary Matlab function once to load libximc library, then use calllib Matlab function to call desired libximc
function. You will find a list of libximc functions and their input and output parameters in the Programming guide.

Page 208 / 345

Page 209 / 345

6.2. Communication protocol specification (v17.5)
6.2. Communication protocol specification (v17.5)
Protocol description
Command execution
Controller-side error processing
Wrong command or data
CRC calculation
Transmission errors
Timeout resynchronization
Zero byte resynchronization
Library-side error processing
Library return codes
Zero byte synchronization procedure
Controller settings setup
Command SFBS
Command GFBS
Command SHOM
Command GHOM
Command SMOV
Command GMOV
Command SENG
Command GENG
Command SENT
Command GENT
Command SPWR
Command GPWR
Command SSEC
Command GSEC
Command SEDS
Command GEDS
Command SPID
Command GPID
Command SSNI
Command GSNI
Command SSNO
Command GSNO
Command SEIO
Command GEIO
Command SBRK
Command GBRK
Command SCTL
Command GCTL
Command SJOY
Command GJOY
Command SCTP
Command GCTP
Command SURT
Command GURT
Command SCAL
Command GCAL
Command SNMF
Command GNMF
Command SNVM
Command GNVM
Group of commands movement control
Command STOP
Command ASIA
Command PWOF
Command MOVE
Command MOVR
Command HOME
Command LEFT
Command RIGT
Command LOFT
Command SSTP
Group of commands set the current position
Command GPOS
Command SPOS
Command ZERO
Group of commands to save and load settings

Page 209 / 345

Page 210 / 345

Group of commands to save and load settings
Command SAVE
Command READ
Command SARS
Command RERS
Command EESV
Command EERD
Group of commands get the status of the controller
Command GETS
Command STMS
Command GETM
Command GETC
Command GETI
Command GSER
Group of commands to work with the controller
firmware
Command GFWV
Command UPDF
Service commands
Command SSER
Command RDAN
Command DBGR
Command DBGW
Group of commands to work with EEPROM
Command SNME
Command GNME
Command SSTI
Command GSTI
Command SSTS
Command GSTS
Command SMTI
Command GMTI
Command SMTS
Command GMTS
Command SENI
Command GENI
Command SENS
Command GENS
Command SHSI
Command GHSI
Command SHSS
Command GHSS
Command SGRI
Command GGRI
Command SGRS
Command GGRS
Command SACC
Command GACC
Bootloader commands
Command GBLV
Command IRND
Command GUID
Command CHMT
Controller error response types
ERRC
ERRD
ERRV

Protocol description
Controller can be controlled from the PC using serial connection (COM-port). COM-port parameters are fixed controller-side:
Speed: 115200 baud;
Frame size: 8 bits;
Stop-bits: 2 bits;
Parity: none;
Flow control: none;
Byte receive timeout: 400 ms;
Bit order: little endian;
Byte order: little endian.

Command execution

Page 210 / 345

Page 211 / 345

All data transfers are initiated by the PC, meaning that the controller waits for incoming commands and replies accordingly. Each
command is followed by the controller response, with rare exceptions of some service commands. One should not send another
command without waiting for the previous command answer.
Commands are split into service, general control and general information types.
Commands are executed immediately. Parameters which are set by Sxxx commands are applied no later than 1ms after
acknowledgement.
Command processing does not affect real-time engine control (PWM, encoder readout, etc).
Both controller and PC have an IO buffer. Received commands and command data are processed once and then removed from buffer.
Each command consists of 4-byte identifier and optionally a data section followed by its 2-byte CRC. Data can be transmitted in both
directions, from PC to the controller and vice versa. Command is scheduled for execution if it is a legitimate command and (in case of
data) if its CRC matches. After processing a correct command controller replies with 4 bytes - the name of processed command,
followed by data and its 2-byte CRC, if the command is supposed to return data.

Controller-side error processing
Wrong command or data
If the controller receives a command that cannot be interpreted as a legitimate command, then controller ignores this command,
replies with an "errc" string and sets "command error" flag in the current status data structure. If the unreconized command contained
additional data, then it can be interpreted as new command(s). In this case resynchronization is required.
If the controller receives a valid command with data and its CRC doesn't match the CRC computed by the controller, then controller
ignores this command, replies with an "errd" string and sets "data error" flag in the current status data structure. In this case
synchronization is not needed.
CRC calculation
CRC is calculated for data only, 4-byte command identifier is not included. CRC algorithm in C is as follows:
unsigned short CRC16(INT8U *pbuf, unsigned short n)
{
unsigned short crc, i, j, carry_flag, a;
crc = 0xffff;
for(i = 0; i < n; i++)
{
crc = crc ^ pbuf[i];
for(j = 0; j < 8; j++)
{
a = crc;
carry_flag = a & 0x0001;
crc = crc >> 1;
if ( carry_flag == 1 ) crc = crc ^ 0xa001;
}
}
return crc;
}

This function receives a pointer to the data array, pbuf, and data length in bytes, n. It returns a two byte CRC code.
Transmission errors
Most probable transmission errors are missing, extra or altered byte. In usual settings transmission errors happen rarely, if at all.
Frequent errors are possible when using low-quality or broken USB-cable or board interconnection cable. Protocol is not designed for
use in noisy environments and in rare cases an error may match a valid command code and get executed.
Missing byte, controller side
A missing byte on the controller side leads to a timeout on the PC side. Command is considered to be sent unsuccessfully by the PC.
Synchronization is momentarily disrupted and restored after a timeout.
Missing byte, PC side
A missing byte on the PC side leads to a timeout on PC side. Synchronization is maintained.
Extra byte, controller side
An extra byte received by the controller leads to one or several "errc" or "errd" responses. Command is considered to be sent
unsuccessfully by the PC. Receive buffer may also contain one or several "errc" or "errd" responses. Synchronization is disrupted.
Extra byte, PC side
An extra byte received by the PC leads to an incorrectly interpreted command or CRC and an extra byte in the receive buffer.
Synchronization is disrupted.
Altered byte, controller side
An altered byte received by the controller leads to one or several "errc" or "errd" responses. Command is considered to be sent
unsuccessfully by the PC. Receive buffer may also contain one or several "errc" or "errd" responses. Synchronization can rarely be
disrupted, but is generally maintained.
Altered byte, PC side
An altered byte received by the PC leads to an incorrectly interpreted command or CRC. Synchronization is maintained.

Page 211 / 345

Page 212 / 345

Timeout resynchronization
If during packet reception next byte wait time exceeds timeout value, then partially received command is ignored and receive buffer is
cleared. Controller timeout should be less than PC timeout, taking into account time it takes to transmit the data.
Zero byte resynchronization
There are no command codes that start with a zero byte ('\0'). This allows for a following synchronization procedure: controller always
answers with a zero byte if the first command byte is zero, PC ignores first response byte if it is a zero byte. Then, if synchronization is
disrupted on either side the following algorithm is used:
In case PC receives "errc", "errd" or a wrong command answer code, then PC sends 4 to 250 zeroes to the controller (250 byte limit is
caused by input buffer length and usage of I2C protocol, less than 4 zeroes do not guarantee successful resynchronization). During this
time PC continuously reads incoming bytes from the controller until the first zero is received and stops sending and receiving right after
that.
Received zero byte is likely not a part of a response to a previous command because on error PC receives "errc"/"errd" response. It is
possible in rare cases, then synchronization procedure will start again. Therefore first zero byte received by the PC means that
controller input buffer is already empty and will remain so until any command is sent. Right after receiving first zero byte from the
controller PC is ready to transmit next command code. The rest of zero bytes in transit will be ignored because they will be received
before controller response.
This completes the zero byte synchronization procedure.

Library-side error processing
Nearly every library function has a return status of type result_t.
After sending command to the controller library reads incoming bytes until a non-zero byte is received. All zero bytes are ignored.
Library reads first 4 bytes and compares them to the command code. It then waits for data section and CRC, if needed. If first 4
received bytes do not match the sent command identifier, then zero byte synchronization procedure is launched, command is
considered to be sent unsuccessfully. If first 4 received bytes match the sent command identifier and command has data section, but
the received CRC doesn't match CRC calculated from the received data, then zero byte synchronization procedure is launched,
command is considered to be sent unsuccessfully. If a timeout is reached while the library is waiting for the controller response, then
zero byte synchronization procedure is launched, command is considered to be sent unsuccessfully.
If no errors were detected, then command is considered to be successfully completed and result_ok is returned.

Library return codes
result_ok. No errors detected.
result_error. Generic error. Can happen because of hardware problems, empty port buffer, timeout or successfull
synchronization after an error. Another common reason for this error is protocol version mismatch between controller firmware

Page 212 / 345

Page 213 / 345

and PC library.
result_nodevice. Error opening device, lost connection or failed synchronization. Device reopen and/or user action is required.
If a function returns an error values of all parameters it writes to are undefined. Error code may be accompanied by detailed error
description output to system log (Unix-like OS) or standard error (Windows-like OS).
Zero byte synchronization procedure
Synchronization is performed by means of sending zero ('\0') bytes and reading bytes until a zero byte is received. Optionally one may
clear port buffer at the end of synchronization procedure. Initially 64 zero bytes are sent. If there were no zero bytes received during
the timeout, then a string of 64 bytes is sent 3 more times. After 4 unsuccessful attempts and no zero bytes received device is
considered lost. In this case library should return result_nodevice error code. In case of successful syncronization library returns
result_error.

Controller settings setup
Functions for adjusting engine read/write almost all controller settings.
Command SFBS
result_t set_feedback_settings (device_t id, const feedback_settings_t* feedback_settings)
Command code (CMD): "sfbs" or 0x73626673.
Request: (18 bytes)
INT32U CMD

Command

INT16U IPS

The number of encoder counts per shaft revolution. Range: 1..655535. The field is obsolete, it is
recommended to write 0 to IPS and use the extended CountsPerTurn field. You may need to update the
controller firmware to the latest version.

INT8U

FeedbackType Type of feedback
0x01 - FEEDBACK_ENCODER (Feedback by encoder.)
0x03 - FEEDBACK_ENCODERHALL (Feedback by Hall detector.)
0x04 - FEEDBACK_EMF (Feedback by EMF.)
0x05 - FEEDBACK_NONE (Feedback is absent.)

INT8U

FeedbackFlags Flags
0x01 - FEEDBACK_ENC_REVERSE (Reverse count of encoder.)
0x02 - FEEDBACK_HALL_REVERSE (Reverce count position on the Hall sensor.)
0xC0 - FEEDBACK_ENC_TYPE_BITS (Bits of the encoder type.)
0x00 - FEEDBACK_ENC_TYPE_AUTO (Auto detect encoder type.)
0x40 - FEEDBACK_ENC_TYPE_SINGLE_ENDED (Single ended encoder.)
0x80 - FEEDBACK_ENC_TYPE_DIFFERENTIAL (Differential encoder.)

INT16U HallSPR

The number of hall steps per revolution.

INT8S

HallShift

Phase shift between output signal on BLDC engine and hall sensor input(0 - when only active the Hall sensor,
the output state is a positive voltage on the winding A and a negative voltage on the winding B).

INT8U

Reserved [5]

Reserved (5 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Feedback settings.
Command GFBS
result_t get_feedback_settings (device_t id, feedback_settings_t* feedback_settings)
Command code (CMD): "gfbs" or 0x73626667.
Request: (4 bytes)
INT32U CMD Command

Page 213 / 345

Page 214 / 345

Answer: (18 bytes)
INT32U CMD

Command (answer)

INT16U IPS

The number of encoder counts per shaft revolution. Range: 1..655535. The field is obsolete, it is
recommended to write 0 to IPS and use the extended CountsPerTurn field. You may need to update the
controller firmware to the latest version.

INT8U

FeedbackType Type of feedback
0x01 - FEEDBACK_ENCODER (Feedback by encoder.)
0x03 - FEEDBACK_ENCODERHALL (Feedback by Hall detector.)
0x04 - FEEDBACK_EMF (Feedback by EMF.)
0x05 - FEEDBACK_NONE (Feedback is absent.)

INT8U

FeedbackFlags Flags
0x01 - FEEDBACK_ENC_REVERSE (Reverse count of encoder.)
0x02 - FEEDBACK_HALL_REVERSE (Reverce count position on the Hall sensor.)
0xC0 - FEEDBACK_ENC_TYPE_BITS (Bits of the encoder type.)
0x00 - FEEDBACK_ENC_TYPE_AUTO (Auto detect encoder type.)
0x40 - FEEDBACK_ENC_TYPE_SINGLE_ENDED (Single ended encoder.)
0x80 - FEEDBACK_ENC_TYPE_DIFFERENTIAL (Differential encoder.)

INT16U HallSPR

The number of hall steps per revolution.

INT8S

HallShift

Phase shift between output signal on BLDC engine and hall sensor input(0 - when only active the Hall sensor,
the output state is a positive voltage on the winding A and a negative voltage on the winding B).

INT8U

Reserved [5]

Reserved (5 bytes)

INT16U CRC

Checksum

Description:
Feedback settings.
Command SHOM
result_t set_home_settings (device_t id, const home_settings_t* home_settings)
Command code (CMD): "shom" or 0x6D6F6873.
Request: (33 bytes)

Page 214 / 345

Page 215 / 345

INT32U CMD

Command

INT32U FastHome

Speed used for first motion. Range: 0..100000.

INT8U

Part of the speed for first motion, microsteps.

uFastHome

INT32U SlowHome
INT8U

Speed used for second motion. Range: 0..100000.

uSlowHome Part of the speed for second motion, microsteps.

INT32S HomeDelta

Distance from break point.

INT16S uHomeDelta Part of the delta distance, microsteps. Range: -255..255.
INT16U HomeFlags

Set of flags specify direction and stopping conditions.
0x001 - HOME_DIR_FIRST (Flag defines direction of 1st motion after execution of home command. Direction is
right, if set; otherwise left.)
0x002 - HOME_DIR_SECOND (Flag defines direction of 2nd motion. Direction is right, if set; otherwise left.)
0x004 - HOME_MV_SEC_EN (Use the second phase of calibration to the home position, if set; otherwise the
second phase is skipped.)
0x008 - HOME_HALF_MV (If the flag is set, the stop signals are ignored in start of second movement the first
half-turn.)
0x030 - HOME_STOP_FIRST_BITS (Bits of the first stop selector.)
0x010 - HOME_STOP_FIRST_REV (First motion stops by revolution sensor.)
0x020 - HOME_STOP_FIRST_SYN (First motion stops by synchronization input.)
0x030 - HOME_STOP_FIRST_LIM (First motion stops by limit switch.)
0x0C0 - HOME_STOP_SECOND_BITS (Bits of the second stop selector.)
0x040 - HOME_STOP_SECOND_REV (Second motion stops by revolution sensor.)
0x080 - HOME_STOP_SECOND_SYN (Second motion stops by synchronization input.)
0x0C0 - HOME_STOP_SECOND_LIM (Second motion stops by limit switch.)
0x100 - HOME_USE_FAST (Use the fast algorithm of calibration to the home position, if set; otherwise the
traditional algorithm.)

INT8U

Reserved
[9]

INT16U CRC

Reserved (9 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set home settings. This function send structure with calibrating position settings to controller's memory.
Command GHOM
result_t get_home_settings (device_t id, home_settings_t* home_settings)
Command code (CMD): "ghom" or 0x6D6F6867.
Request: (4 bytes)
INT32U CMD Command
Answer: (33 bytes)

Page 215 / 345

Page 216 / 345

INT32U CMD

Command (answer)

INT32U FastHome

Speed used for first motion. Range: 0..100000.

INT8U

Part of the speed for first motion, microsteps.

uFastHome

INT32U SlowHome
INT8U

Speed used for second motion. Range: 0..100000.

uSlowHome Part of the speed for second motion, microsteps.

INT32S HomeDelta

Distance from break point.

INT16S uHomeDelta Part of the delta distance, microsteps. Range: -255..255.
INT16U HomeFlags

Set of flags specify direction and stopping conditions.
0x001 - HOME_DIR_FIRST (Flag defines direction of 1st motion after execution of home command. Direction is
right, if set; otherwise left.)
0x002 - HOME_DIR_SECOND (Flag defines direction of 2nd motion. Direction is right, if set; otherwise left.)
0x004 - HOME_MV_SEC_EN (Use the second phase of calibration to the home position, if set; otherwise the
second phase is skipped.)
0x008 - HOME_HALF_MV (If the flag is set, the stop signals are ignored in start of second movement the first
half-turn.)
0x030 - HOME_STOP_FIRST_BITS (Bits of the first stop selector.)
0x010 - HOME_STOP_FIRST_REV (First motion stops by revolution sensor.)
0x020 - HOME_STOP_FIRST_SYN (First motion stops by synchronization input.)
0x030 - HOME_STOP_FIRST_LIM (First motion stops by limit switch.)
0x0C0 - HOME_STOP_SECOND_BITS (Bits of the second stop selector.)
0x040 - HOME_STOP_SECOND_REV (Second motion stops by revolution sensor.)
0x080 - HOME_STOP_SECOND_SYN (Second motion stops by synchronization input.)
0x0C0 - HOME_STOP_SECOND_LIM (Second motion stops by limit switch.)
0x100 - HOME_USE_FAST (Use the fast algorithm of calibration to the home position, if set; otherwise the
traditional algorithm.)

INT8U

Reserved
[9]

INT16U CRC

Reserved (9 bytes)
Checksum

Description:
Read home settings. This function fill structure with settings of calibrating position.
Command SMOV
result_t set_move_settings (device_t id, const move_settings_t* move_settings)
Command code (CMD): "smov" or 0x766F6D73.
Request: (30 bytes)
INT32U CMD

Command

INT32U Speed

Target speed (for stepper motor: steps/s, for DC: rpm). Range: 0..100000.

INT8U

Target speed in microstep fractions/s. Using with stepper motor only.

uSpeed

INT16U Accel

Motor shaft acceleration, steps/s^2(stepper motor) or RPM/s(DC). Range: 1..65535.

INT16U Decel

Motor shaft deceleration, steps/s^2(stepper motor) or RPM/s(DC). Range: 1..65535.

INT32U AntiplaySpeed

Speed in antiplay mode, full steps/s(stepper motor) or RPM. Range: 0..100000.

INT8U

uAntiplaySpeed Speed in antiplay mode, 1/256 microsteps/s. Used with stepper motor only.

INT8U

Reserved [10]

INT16U CRC

Reserved (10 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set command setup movement (speed, acceleration, threshold and etc).

Page 216 / 345

Page 217 / 345

Command GMOV
result_t get_move_settings (device_t id, move_settings_t* move_settings)
Command code (CMD): "gmov" or 0x766F6D67.
Request: (4 bytes)
INT32U CMD Command
Answer: (30 bytes)
INT32U CMD

Command (answer)

INT32U Speed

Target speed (for stepper motor: steps/s, for DC: rpm). Range: 0..100000.

INT8U

Target speed in microstep fractions/s. Using with stepper motor only.

uSpeed

INT16U Accel

Motor shaft acceleration, steps/s^2(stepper motor) or RPM/s(DC). Range: 1..65535.

INT16U Decel

Motor shaft deceleration, steps/s^2(stepper motor) or RPM/s(DC). Range: 1..65535.

INT32U AntiplaySpeed

Speed in antiplay mode, full steps/s(stepper motor) or RPM. Range: 0..100000.

INT8U

uAntiplaySpeed Speed in antiplay mode, 1/256 microsteps/s. Used with stepper motor only.

INT8U

Reserved [10]

INT16U CRC

Reserved (10 bytes)
Checksum

Description:
Read command setup movement (speed, acceleration, threshold and etc).
Command SENG
result_t set_engine_settings (device_t id, const engine_settings_t* engine_settings)
Command code (CMD): "seng" or 0x676E6573.
Request: (34 bytes)

Page 217 / 345

Page 218 / 345

INT32U CMD

Command

INT16U NomVoltage

Rated voltage in tens of mV. Controller will keep the voltage drop on motor below this value if
ENGINE_LIMIT_VOLT flag is set (used with DC only).

INT16U NomCurrent

Rated current. Controller will keep current consumed by motor below this value if ENGINE_LIMIT_CURR flag
is set. Range: 15..8000

INT32U NomSpeed

Nominal speed (in whole steps/s or rpm for DC and stepper motor as a master encoder). Controller will keep
motor shaft RPM below this value if ENGINE_LIMIT_RPM flag is set. Range: 1..100000.

INT8U

The fractional part of a nominal speed in microsteps (is only used with stepper motor).

uNomSpeed

INT16U EngineFlags

Set of flags specify motor shaft movement algorithm and list of limitations
0x01 - ENGINE_REVERSE (Reverse flag. It determines motor shaft rotation direction that corresponds to
feedback counts increasing. If not set (default), motor shaft rotation direction under positive voltage
corresponds to feedback counts increasing and vice versa. Change it if you see that positive directions on
motor and feedback are opposite.)
0x02 - ENGINE_CURRENT_AS_RMS (Engine current meaning flag. If the flag is set, then engine current
value is interpreted as root mean square current value. If the flag is unset, then engine current value is
interpreted as maximum amplitude value.)
0x04 - ENGINE_MAX_SPEED (Max speed flag. If it is set, engine uses maximum speed achievable with the
present engine settings as nominal speed.)
0x08 - ENGINE_ANTIPLAY (Play compensation flag. If it set, engine makes backlash (play) compensation
procedure and reach the predetermined position accurately on low speed.)
0x10 - ENGINE_ACCEL_ON (Acceleration enable flag. If it set, motion begins with acceleration and ends with
deceleration.)
0x20 - ENGINE_LIMIT_VOLT (Maximum motor voltage limit enable flag(is only used with DC motor).)
0x40 - ENGINE_LIMIT_CURR (Maximum motor current limit enable flag(is only used with DC motor).)
0x80 - ENGINE_LIMIT_RPM (Maximum motor speed limit enable flag.)

INT16S Antiplay
INT8U

Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is
set.

MicrostepMode Settings of microstep mode(Used with stepper motor only).
0x01 - MICROSTEP_MODE_FULL (Full step mode.)
0x02 - MICROSTEP_MODE_FRAC_2 (1/2 step mode.)
0x03 - MICROSTEP_MODE_FRAC_4 (1/4 step mode.)
0x04 - MICROSTEP_MODE_FRAC_8 (1/8 step mode.)
0x05 - MICROSTEP_MODE_FRAC_16 (1/16 step mode.)
0x06 - MICROSTEP_MODE_FRAC_32 (1/32 step mode.)
0x07 - MICROSTEP_MODE_FRAC_64 (1/64 step mode.)
0x08 - MICROSTEP_MODE_FRAC_128 (1/128 step mode.)
0x09 - MICROSTEP_MODE_FRAC_256 (1/256 step mode.)

INT16U StepsPerRev
INT8U

Number of full steps per revolution(Used with stepper motor only). Range: 1..65535.

Reserved [12] Reserved (12 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set engine settings. This function send structure with set of engine settings to controller's memory. These settings specify motor shaft
movement algorithm, list of limitations and rated characteristics. Use it when you change motor, encoder, positioner etc. Please note
that wrong engine settings lead to device malfunction, can lead to irreversible damage of board.
Command GENG
result_t get_engine_settings (device_t id, engine_settings_t* engine_settings)
Command code (CMD): "geng" or 0x676E6567.
Request: (4 bytes)
INT32U CMD Command

Page 218 / 345

Page 219 / 345

Answer: (34 bytes)
INT32U CMD

Command (answer)

INT16U NomVoltage

Rated voltage in tens of mV. Controller will keep the voltage drop on motor below this value if
ENGINE_LIMIT_VOLT flag is set (used with DC only).

INT16U NomCurrent

Rated current. Controller will keep current consumed by motor below this value if ENGINE_LIMIT_CURR flag
is set. Range: 15..8000

INT32U NomSpeed

Nominal speed (in whole steps/s or rpm for DC and stepper motor as a master encoder). Controller will keep
motor shaft RPM below this value if ENGINE_LIMIT_RPM flag is set. Range: 1..100000.

INT8U

The fractional part of a nominal speed in microsteps (is only used with stepper motor).

uNomSpeed

INT16U EngineFlags

Set of flags specify motor shaft movement algorithm and list of limitations
0x01 - ENGINE_REVERSE (Reverse flag. It determines motor shaft rotation direction that corresponds to
feedback counts increasing. If not set (default), motor shaft rotation direction under positive voltage
corresponds to feedback counts increasing and vice versa. Change it if you see that positive directions on
motor and feedback are opposite.)
0x02 - ENGINE_CURRENT_AS_RMS (Engine current meaning flag. If the flag is set, then engine current
value is interpreted as root mean square current value. If the flag is unset, then engine current value is
interpreted as maximum amplitude value.)
0x04 - ENGINE_MAX_SPEED (Max speed flag. If it is set, engine uses maximum speed achievable with the
present engine settings as nominal speed.)
0x08 - ENGINE_ANTIPLAY (Play compensation flag. If it set, engine makes backlash (play) compensation
procedure and reach the predetermined position accurately on low speed.)
0x10 - ENGINE_ACCEL_ON (Acceleration enable flag. If it set, motion begins with acceleration and ends with
deceleration.)
0x20 - ENGINE_LIMIT_VOLT (Maximum motor voltage limit enable flag(is only used with DC motor).)
0x40 - ENGINE_LIMIT_CURR (Maximum motor current limit enable flag(is only used with DC motor).)
0x80 - ENGINE_LIMIT_RPM (Maximum motor speed limit enable flag.)

INT16S Antiplay
INT8U

Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is
set.

MicrostepMode Settings of microstep mode(Used with stepper motor only).
0x01 - MICROSTEP_MODE_FULL (Full step mode.)
0x02 - MICROSTEP_MODE_FRAC_2 (1/2 step mode.)
0x03 - MICROSTEP_MODE_FRAC_4 (1/4 step mode.)
0x04 - MICROSTEP_MODE_FRAC_8 (1/8 step mode.)
0x05 - MICROSTEP_MODE_FRAC_16 (1/16 step mode.)
0x06 - MICROSTEP_MODE_FRAC_32 (1/32 step mode.)
0x07 - MICROSTEP_MODE_FRAC_64 (1/64 step mode.)
0x08 - MICROSTEP_MODE_FRAC_128 (1/128 step mode.)
0x09 - MICROSTEP_MODE_FRAC_256 (1/256 step mode.)

INT16U StepsPerRev
INT8U

Number of full steps per revolution(Used with stepper motor only). Range: 1..65535.

Reserved [12] Reserved (12 bytes)

INT16U CRC

Checksum

Description:
Read engine settings. This function fill structure with set of useful motor settings stored in controller's memory. These settings specify
motor shaft movement algorithm, list of limitations and rated characteristics.
Command SENT
result_t set_entype_settings (device_t id, const entype_settings_t* entype_settings)
Command code (CMD): "sent" or 0x746E6573.
Request: (14 bytes)

Page 219 / 345

Page 220 / 345

INT32U CMD

Command

INT8U

Engine type

EngineType

0x00 - ENGINE_TYPE_NONE (A value that shouldn't be used.)
0x01 - ENGINE_TYPE_DC (DC motor.)
0x02 - ENGINE_TYPE_2DC (2 DC motors.)
0x03 - ENGINE_TYPE_STEP (Step motor.)
0x04 - ENGINE_TYPE_TEST (Duty cycle are fixed. Used only manufacturer.)
0x05 - ENGINE_TYPE_BRUSHLESS (Brushless motor.)
INT8U

DriverType

Driver type
0x01 - DRIVER_TYPE_DISCRETE_FET (Driver with discrete FET keys. Default option.)
0x02 - DRIVER_TYPE_INTEGRATE (Driver with integrated IC.)
0x03 - DRIVER_TYPE_EXTERNAL (External driver.)

INT8U

Reserved [6] Reserved (6 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set engine type and driver type.
Command GENT
result_t get_entype_settings (device_t id, entype_settings_t* entype_settings)
Command code (CMD): "gent" or 0x746E6567.
Request: (4 bytes)
INT32U CMD Command
Answer: (14 bytes)
INT32U CMD

Command (answer)

INT8U

Engine type

EngineType

0x00 - ENGINE_TYPE_NONE (A value that shouldn't be used.)
0x01 - ENGINE_TYPE_DC (DC motor.)
0x02 - ENGINE_TYPE_2DC (2 DC motors.)
0x03 - ENGINE_TYPE_STEP (Step motor.)
0x04 - ENGINE_TYPE_TEST (Duty cycle are fixed. Used only manufacturer.)
0x05 - ENGINE_TYPE_BRUSHLESS (Brushless motor.)
INT8U

DriverType

Driver type
0x01 - DRIVER_TYPE_DISCRETE_FET (Driver with discrete FET keys. Default option.)
0x02 - DRIVER_TYPE_INTEGRATE (Driver with integrated IC.)
0x03 - DRIVER_TYPE_EXTERNAL (External driver.)

INT8U

Reserved [6] Reserved (6 bytes)

INT16U CRC

Checksum

Description:
Return engine type and driver type.
Command SPWR
result_t set_power_settings (device_t id, const power_settings_t* power_settings)
Command code (CMD): "spwr" or 0x72777073.
Request: (20 bytes)

Page 220 / 345

Page 221 / 345

INT32U CMD

Command

INT8U

Current in holding regime, percent of nominal. Range: 0..100.

HoldCurrent

INT16U CurrReductDelay Time in ms from going to STOP state to reducting current.
INT16U PowerOffDelay

Time in s from going to STOP state to turning power off.

INT16U CurrentSetTime

Time in ms to reach nominal current.

INT8U

Flags with parameters of power control.

PowerFlags

0x01 - POWER_REDUCT_ENABLED (Current reduction enabled after CurrReductDelay, if this flag is set.)
0x02 - POWER_OFF_ENABLED (Power off enabled after PowerOffDelay, if this flag is set.)
0x04 - POWER_SMOOTH_CURRENT
current_set_time, if this flag is set.)
INT8U

Reserved [6]

INT16U CRC

(Current

ramp-up/down

is

performed

smoothly

during

Reserved (6 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set settings of step motor power control. Used with stepper motor only.
Command GPWR
result_t get_power_settings (device_t id, power_settings_t* power_settings)
Command code (CMD): "gpwr" or 0x72777067.
Request: (4 bytes)
INT32U CMD Command
Answer: (20 bytes)
INT32U CMD

Command (answer)

INT8U

Current in holding regime, percent of nominal. Range: 0..100.

HoldCurrent

INT16U CurrReductDelay Time in ms from going to STOP state to reducting current.
INT16U PowerOffDelay

Time in s from going to STOP state to turning power off.

INT16U CurrentSetTime

Time in ms to reach nominal current.

INT8U

Flags with parameters of power control.

PowerFlags

0x01 - POWER_REDUCT_ENABLED (Current reduction enabled after CurrReductDelay, if this flag is set.)
0x02 - POWER_OFF_ENABLED (Power off enabled after PowerOffDelay, if this flag is set.)
0x04 - POWER_SMOOTH_CURRENT
current_set_time, if this flag is set.)
INT8U

Reserved [6]

INT16U CRC

(Current

ramp-up/down

is

performed

Reserved (6 bytes)
Checksum

Description:
Read settings of step motor power control. Used with stepper motor only.
Command SSEC
result_t set_secure_settings (device_t id, const secure_settings_t* secure_settings)
Command code (CMD): "ssec" or 0x63657373.
Request: (28 bytes)

Page 221 / 345

smoothly

during

Page 222 / 345

INT32U CMD

Command

INT16U LowUpwrOff

Lower voltage limit to turn off the motor, tens of mV.

INT16U CriticalIpwr

Maximum motor current which triggers ALARM state, in mA.

INT16U CriticalUpwr

Maximum motor voltage which triggers ALARM state, tens of mV.

INT16U CriticalT

Maximum temperature, which triggers ALARM state, in tenths of degrees Celcius.

INT16U CriticalIusb

Maximum USB current which triggers ALARM state, in mA.

INT16U CriticalUusb

Maximum USB voltage which triggers ALARM state, tens of mV.

INT16U MinimumUusb Minimum USB voltage which triggers ALARM state, tens of mV.
INT8U

Flags

Critical parameter flags.
0x01 - ALARM_ON_DRIVER_OVERHEATING (If this flag is set enter Alarm state on driver overheat signal.)
0x02 - LOW_UPWR_PROTECTION (If this flag is set turn off motor when voltage is lower than LowUpwrOff.)
0x04 - H_BRIDGE_ALERT (If this flag is set then turn off the power unit with a signal problem in one of the
transistor bridge.)
0x08 - ALARM_ON_BORDERS_SWAP_MISSET (If this flag is set enter Alarm state on borders swap misset)
0x10 - ALARM_FLAGS_STICKING (If this flag is set only a STOP command can turn all alarms to 0)
0x20 - USB_BREAK_RECONNECT (If this flag is set USB brake reconnect module will be enable)

INT8U

Reserved [7]

INT16U CRC

Reserved (7 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set protection settings.
Command GSEC
result_t get_secure_settings (device_t id, secure_settings_t* secure_settings)
Command code (CMD): "gsec" or 0x63657367.
Request: (4 bytes)
INT32U CMD Command
Answer: (28 bytes)
INT32U CMD

Command (answer)

INT16U LowUpwrOff

Lower voltage limit to turn off the motor, tens of mV.

INT16U CriticalIpwr

Maximum motor current which triggers ALARM state, in mA.

INT16U CriticalUpwr

Maximum motor voltage which triggers ALARM state, tens of mV.

INT16U CriticalT

Maximum temperature, which triggers ALARM state, in tenths of degrees Celcius.

INT16U CriticalIusb

Maximum USB current which triggers ALARM state, in mA.

INT16U CriticalUusb

Maximum USB voltage which triggers ALARM state, tens of mV.

INT16U MinimumUusb Minimum USB voltage which triggers ALARM state, tens of mV.
INT8U

Flags

Critical parameter flags.
0x01 - ALARM_ON_DRIVER_OVERHEATING (If this flag is set enter Alarm state on driver overheat signal.)
0x02 - LOW_UPWR_PROTECTION (If this flag is set turn off motor when voltage is lower than LowUpwrOff.)
0x04 - H_BRIDGE_ALERT (If this flag is set then turn off the power unit with a signal problem in one of the
transistor bridge.)
0x08 - ALARM_ON_BORDERS_SWAP_MISSET (If this flag is set enter Alarm state on borders swap misset)
0x10 - ALARM_FLAGS_STICKING (If this flag is set only a STOP command can turn all alarms to 0)
0x20 - USB_BREAK_RECONNECT (If this flag is set USB brake reconnect module will be enable)

INT8U

Reserved [7]

INT16U CRC

Reserved (7 bytes)
Checksum

Page 222 / 345

Page 223 / 345

Description:
Read protection settings.
Command SEDS
result_t set_edges_settings (device_t id, const edges_settings_t* edges_settings)
Command code (CMD): "seds" or 0x73646573.
Request: (26 bytes)
INT32U CMD

Command

INT8U

Border flags, specify types of borders and motor behaviour on borders.

BorderFlags

0x01 - BORDER_IS_ENCODER (Borders are fixed by predetermined encoder values, if set; borders position on
limit switches, if not set.)
0x02 - BORDER_STOP_LEFT (Motor should stop on left border.)
0x04 - BORDER_STOP_RIGHT (Motor should stop on right border.)
0x08 - BORDERS_SWAP_MISSET_DETECTION (Motor should stop on both borders. Need to save motor then
wrong border settings is se)
INT8U

EnderFlags

Ender flags, specify electrical behaviour of limit switches like order and pulled positions.
0x01 - ENDER_SWAP (First limit switch on the right side, if set; otherwise on the left side.)
0x02 - ENDER_SW1_ACTIVE_LOW (1 - Limit switch connnected to pin SW1 is triggered by a low level on pin.)
0x04 - ENDER_SW2_ACTIVE_LOW (1 - Limit switch connnected to pin SW2 is triggered by a low level on pin.)

INT32S LeftBorder

Left border position, used if BORDER_IS_ENCODER flag is set.

INT16S uLeftBorder

Left border position in 1/256 microsteps(used with stepper motor only). Range: -255..255.

INT32S RightBorder

Right border position, used if BORDER_IS_ENCODER flag is set.

INT16S uRightBorder Right border position in 1/256 microsteps. Used with stepper motor only. Range: -255..255.
INT8U

Reserved [6] Reserved (6 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set border and limit switches settings.
Command GEDS
result_t get_edges_settings (device_t id, edges_settings_t* edges_settings)
Command code (CMD): "geds" or 0x73646567.
Request: (4 bytes)
INT32U CMD Command
Answer: (26 bytes)

Page 223 / 345

Page 224 / 345

INT32U CMD

Command (answer)

INT8U

Border flags, specify types of borders and motor behaviour on borders.

BorderFlags

0x01 - BORDER_IS_ENCODER (Borders are fixed by predetermined encoder values, if set; borders position on
limit switches, if not set.)
0x02 - BORDER_STOP_LEFT (Motor should stop on left border.)
0x04 - BORDER_STOP_RIGHT (Motor should stop on right border.)
0x08 - BORDERS_SWAP_MISSET_DETECTION (Motor should stop on both borders. Need to save motor then
wrong border settings is se)
INT8U

EnderFlags

Ender flags, specify electrical behaviour of limit switches like order and pulled positions.
0x01 - ENDER_SWAP (First limit switch on the right side, if set; otherwise on the left side.)
0x02 - ENDER_SW1_ACTIVE_LOW (1 - Limit switch connnected to pin SW1 is triggered by a low level on pin.)
0x04 - ENDER_SW2_ACTIVE_LOW (1 - Limit switch connnected to pin SW2 is triggered by a low level on pin.)

INT32S LeftBorder

Left border position, used if BORDER_IS_ENCODER flag is set.

INT16S uLeftBorder

Left border position in 1/256 microsteps(used with stepper motor only). Range: -255..255.

INT32S RightBorder

Right border position, used if BORDER_IS_ENCODER flag is set.

INT16S uRightBorder Right border position in 1/256 microsteps. Used with stepper motor only. Range: -255..255.
INT8U

Reserved [6] Reserved (6 bytes)

INT16U CRC

Checksum

Description:
Read border and limit switches settings.
Command SPID
result_t set_pid_settings (device_t id, const pid_settings_t* pid_settings)
Command code (CMD): "spid" or 0x64697073.
Request: (48 bytes)
INT32U CMD

Command

INT16U KpU

Proportional gain for voltage PID routine

INT16U KiU

Integral gain for voltage PID routine

INT16U KdU

Differential gain for voltage PID routine

FLT32

Kpf

Proportional gain for BLDC position PID routine

FLT32

Kif

Integral gain for BLDC position PID routine

FLT32

Kdf

Differential gain for BLDC position PID routine

INT8U

Reserved [24] Reserved (24 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set PID settings. This function send structure with set of PID factors to controller's memory. These settings specify behaviour of PID
routine for positioner. These factors are slightly different for different positioners. All boards are supplied with standard set of PID
setting on controller's flash memory. Please use it for loading new PID settings when you change positioner. Please note that wrong
PID settings lead to device malfunction.
Command GPID
result_t get_pid_settings (device_t id, pid_settings_t* pid_settings)
Command code (CMD): "gpid" or 0x64697067.
Request: (4 bytes)
INT32U CMD Command
Answer: (48 bytes)

Page 224 / 345

Page 225 / 345

INT32U CMD

Command (answer)

INT16U KpU

Proportional gain for voltage PID routine

INT16U KiU

Integral gain for voltage PID routine

INT16U KdU

Differential gain for voltage PID routine

FLT32

Kpf

Proportional gain for BLDC position PID routine

FLT32

Kif

Integral gain for BLDC position PID routine

FLT32

Kdf

Differential gain for BLDC position PID routine

INT8U

Reserved [24] Reserved (24 bytes)

INT16U CRC

Checksum

Description:
Read PID settings. This function fill structure with set of motor PID settings stored in controller's memory. These settings specify
behaviour of PID routine for positioner. These factors are slightly different for different positioners. All boards are supplied with
standard set of PID setting on controller's flash memory.
Command SSNI
result_t set_sync_in_settings (device_t id, const sync_in_settings_t* sync_in_settings)
Command code (CMD): "ssni" or 0x696E7373.
Request: (28 bytes)
INT32U CMD
INT8U

Command

SyncInFlags Input synchronization flags
0x01 - SYNCIN_ENABLED (Synchronization in mode is enabled, if this flag is set.)
0x02 - SYNCIN_INVERT (Trigger on falling edge if flag is set, on rising edge otherwise.)
0x04 - SYNCIN_GOTOPOSITION (The engine is go to position specified in Position and uPosition, if this flag is
set. And it is shift on the Position and uPosition, if this flag is unset)

INT16U ClutterTime Input synchronization pulse dead time (mks).
INT32S Position

Desired position or shift (whole steps)

INT16S uPosition

The fractional part of a position or shift in microsteps. Is used with stepper motor. Range: -255..255.

INT32U Speed

Target speed (for stepper motor: steps/s, for DC: rpm). Range: 0..100000.

INT8U

uSpeed

Target speed in microsteps/s. Using with stepper motor only.

INT8U

Reserved
[8]

Reserved (8 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set input synchronization settings. This function send structure with set of input synchronization settings, that specify behaviour of
input synchronization, to controller's memory. All boards are supplied with standard set of these settings.
Command GSNI
result_t get_sync_in_settings (device_t id, sync_in_settings_t* sync_in_settings)
Command code (CMD): "gsni" or 0x696E7367.
Request: (4 bytes)
INT32U CMD Command
Answer: (28 bytes)

Page 225 / 345

Page 226 / 345

INT32U CMD
INT8U

Command (answer)

SyncInFlags Input synchronization flags
0x01 - SYNCIN_ENABLED (Synchronization in mode is enabled, if this flag is set.)
0x02 - SYNCIN_INVERT (Trigger on falling edge if flag is set, on rising edge otherwise.)
0x04 - SYNCIN_GOTOPOSITION (The engine is go to position specified in Position and uPosition, if this flag is
set. And it is shift on the Position and uPosition, if this flag is unset)

INT16U ClutterTime Input synchronization pulse dead time (mks).
INT32S Position

Desired position or shift (whole steps)

INT16S uPosition

The fractional part of a position or shift in microsteps. Is used with stepper motor. Range: -255..255.

INT32U Speed

Target speed (for stepper motor: steps/s, for DC: rpm). Range: 0..100000.

INT8U

uSpeed

Target speed in microsteps/s. Using with stepper motor only.

INT8U

Reserved
[8]

Reserved (8 bytes)

INT16U CRC

Checksum

Description:
Read input synchronization settings. This function fill structure with set of input synchronization settings, modes, periods and flags,
that specify behaviour of input synchronization. All boards are supplied with standard set of these settings.
Command SSNO
result_t set_sync_out_settings (device_t id, const sync_out_settings_t* sync_out_settings)
Command code (CMD): "ssno" or 0x6F6E7373.
Request: (16 bytes)
INT32U CMD

Command

INT8U

Output synchronization flags

SyncOutFlags

0x01 - SYNCOUT_ENABLED (Synchronization out pin follows the synchronization logic, if set. It governed
by SYNCOUT_STATE flag otherwise.)
0x02 - SYNCOUT_STATE (When output state is fixed by negative SYNCOUT_ENABLED flag, the pin state
is in accordance with this flag state.)
0x04 - SYNCOUT_INVERT (Low level is active, if set, and high level is active otherwise.)
0x08 - SYNCOUT_IN_STEPS (Use motor steps/encoder pulses instead of milliseconds for output pulse
generation if the flag is set.)
0x10 - SYNCOUT_ONSTART (Generate synchronization pulse when movement starts.)
0x20 - SYNCOUT_ONSTOP (Generate synchronization pulse when movement stops.)
0x40 - SYNCOUT_ONPERIOD (Generate synchronization pulse every SyncOutPeriod encoder pulses.)
INT16U SyncOutPulseSteps

This value specifies duration of output pulse. It is measured microseconds when SYNCOUT_IN_STEPS
flag is cleared or in encoder pulses or motor steps when SYNCOUT_IN_STEPS is set.

INT16U SyncOutPeriod

This value specifies number of encoder pulses or steps between two output synchronization pulses when
SYNCOUT_ONPERIOD is set.

INT32U Accuracy

This is the neighborhood around the target coordinates, which is getting hit in the target position and
the momentum generated by the stop.

INT8U

This is the neighborhood around the target coordinates in micro steps (only used with stepper motor).

uAccuracy

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set output synchronization settings. This function send structure with set of output synchronization settings, that specify behaviour of
output synchronization, to controller's memory. All boards are supplied with standard set of these settings.
Command GSNO
result_t get_sync_out_settings (device_t id, sync_out_settings_t* sync_out_settings)

Page 226 / 345

Page 227 / 345

Command code (CMD): "gsno" or 0x6F6E7367.
Request: (4 bytes)
INT32U CMD Command
Answer: (16 bytes)
INT32U CMD

Command (answer)

INT8U

Output synchronization flags

SyncOutFlags

0x01 - SYNCOUT_ENABLED (Synchronization out pin follows the synchronization logic, if set. It governed
by SYNCOUT_STATE flag otherwise.)
0x02 - SYNCOUT_STATE (When output state is fixed by negative SYNCOUT_ENABLED flag, the pin state
is in accordance with this flag state.)
0x04 - SYNCOUT_INVERT (Low level is active, if set, and high level is active otherwise.)
0x08 - SYNCOUT_IN_STEPS (Use motor steps/encoder pulses instead of milliseconds for output pulse
generation if the flag is set.)
0x10 - SYNCOUT_ONSTART (Generate synchronization pulse when movement starts.)
0x20 - SYNCOUT_ONSTOP (Generate synchronization pulse when movement stops.)
0x40 - SYNCOUT_ONPERIOD (Generate synchronization pulse every SyncOutPeriod encoder pulses.)
INT16U SyncOutPulseSteps

This value specifies duration of output pulse. It is measured microseconds when SYNCOUT_IN_STEPS
flag is cleared or in encoder pulses or motor steps when SYNCOUT_IN_STEPS is set.

INT16U SyncOutPeriod

This value specifies number of encoder pulses or steps between two output synchronization pulses when
SYNCOUT_ONPERIOD is set.

INT32U Accuracy

This is the neighborhood around the target coordinates, which is getting hit in the target position and
the momentum generated by the stop.

INT8U

This is the neighborhood around the target coordinates in micro steps (only used with stepper motor).

uAccuracy

INT16U CRC

Checksum

Description:
Read output synchronization settings. This function fill structure with set of output synchronization settings, modes, periods and flags,
that specify behaviour of output synchronization. All boards are supplied with standard set of these settings.
Command SEIO
result_t set_extio_settings (device_t id, const extio_settings_t* extio_settings)
Command code (CMD): "seio" or 0x6F696573.
Request: (18 bytes)

Page 227 / 345

Page 228 / 345

INT32U CMD
INT8U

Command

EXTIOSetupFlags Configuration flags of the external I-O
0x01 - EXTIO_SETUP_OUTPUT (EXTIO works as output if flag is set, works as input otherwise.)
0x02 - EXTIO_SETUP_INVERT (Interpret EXTIO states and fronts inverted if flag is set. Falling front as
input event and low logic level as active state.)

INT8U

EXTIOModeFlags Flags mode settings external I-O
0x0F - EXTIO_SETUP_MODE_IN_BITS (Bits of the behaviour selector when the signal on input goes to the
active state.)
0x00 - EXTIO_SETUP_MODE_IN_NOP (Do nothing.)
0x01 - EXTIO_SETUP_MODE_IN_STOP (Issue STOP command, ceasing the engine movement.)
0x02 - EXTIO_SETUP_MODE_IN_PWOF (Issue PWOF command, powering off all engine windings.)
0x03 - EXTIO_SETUP_MODE_IN_MOVR (Issue MOVR command with last used settings.)
0x04 - EXTIO_SETUP_MODE_IN_HOME (Issue HOME command.)
0x05 - EXTIO_SETUP_MODE_IN_ALARM (Set Alarm when the signal goes to the active state.)
0xF0 - EXTIO_SETUP_MODE_OUT_BITS (Bits of the output behaviour selection.)
0x00 - EXTIO_SETUP_MODE_OUT_OFF (EXTIO pin always set in inactive state.)
0x10 - EXTIO_SETUP_MODE_OUT_ON (EXTIO pin always set in active state.)
0x20 - EXTIO_SETUP_MODE_OUT_MOVING (EXTIO pin stays active during moving state.)
0x30 - EXTIO_SETUP_MODE_OUT_ALARM (EXTIO pin stays active during Alarm state.)
0x40 - EXTIO_SETUP_MODE_OUT_MOTOR_ON (EXTIO pin stays active when windings are powered.)
0x50 - EXTIO_SETUP_MODE_OUT_MOTOR_FOUND (EXTIO pin stays active when motor is connected (first
winding).)

INT8U

Reserved [10]

INT16U CRC

Reserved (10 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set EXTIO settings. This function writes a structure with a set of EXTIO settings to controller's memory. By default input event are
signalled through rising front and output states are signalled by high logic state.
Command GEIO
result_t get_extio_settings (device_t id, extio_settings_t* extio_settings)
Command code (CMD): "geio" or 0x6F696567.
Request: (4 bytes)
INT32U CMD Command
Answer: (18 bytes)

Page 228 / 345

Page 229 / 345

INT32U CMD
INT8U

Command (answer)

EXTIOSetupFlags Configuration flags of the external I-O
0x01 - EXTIO_SETUP_OUTPUT (EXTIO works as output if flag is set, works as input otherwise.)
0x02 - EXTIO_SETUP_INVERT (Interpret EXTIO states and fronts inverted if flag is set. Falling front as
input event and low logic level as active state.)

INT8U

EXTIOModeFlags Flags mode settings external I-O
0x0F - EXTIO_SETUP_MODE_IN_BITS (Bits of the behaviour selector when the signal on input goes to the
active state.)
0x00 - EXTIO_SETUP_MODE_IN_NOP (Do nothing.)
0x01 - EXTIO_SETUP_MODE_IN_STOP (Issue STOP command, ceasing the engine movement.)
0x02 - EXTIO_SETUP_MODE_IN_PWOF (Issue PWOF command, powering off all engine windings.)
0x03 - EXTIO_SETUP_MODE_IN_MOVR (Issue MOVR command with last used settings.)
0x04 - EXTIO_SETUP_MODE_IN_HOME (Issue HOME command.)
0x05 - EXTIO_SETUP_MODE_IN_ALARM (Set Alarm when the signal goes to the active state.)
0xF0 - EXTIO_SETUP_MODE_OUT_BITS (Bits of the output behaviour selection.)
0x00 - EXTIO_SETUP_MODE_OUT_OFF (EXTIO pin always set in inactive state.)
0x10 - EXTIO_SETUP_MODE_OUT_ON (EXTIO pin always set in active state.)
0x20 - EXTIO_SETUP_MODE_OUT_MOVING (EXTIO pin stays active during moving state.)
0x30 - EXTIO_SETUP_MODE_OUT_ALARM (EXTIO pin stays active during Alarm state.)
0x40 - EXTIO_SETUP_MODE_OUT_MOTOR_ON (EXTIO pin stays active when windings are powered.)
0x50 - EXTIO_SETUP_MODE_OUT_MOTOR_FOUND (EXTIO pin stays active when motor is connected (first
winding).)

INT8U

Reserved [10]

INT16U CRC

Reserved (10 bytes)
Checksum

Description:
Read EXTIO settings. This function reads a structure with a set of EXTIO settings from controller's memory.
Command SBRK
result_t set_brake_settings (device_t id, const brake_settings_t* brake_settings)
Command code (CMD): "sbrk" or 0x6B726273.
Request: (25 bytes)
INT32U CMD

Command

INT16U t1

Time in ms between turn on motor power and turn off brake.

INT16U t2

Time in ms between turn off brake and moving readiness. All moving commands will execute after this
interval.

INT16U t3

Time in ms between motor stop and turn on brake.

INT16U t4

Time in ms between turn on brake and turn off motor power.

INT8U

Flags.

BrakeFlags

0x01 - BRAKE_ENABLED (Brake control is enabled, if this flag is set.)
0x02 - BRAKE_ENG_PWROFF (Brake turns off power of step motor, if this flag is set.)
INT8U

Reserved
[10]

INT16U CRC

Reserved (10 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set settings of brake control.
Command GBRK

Page 229 / 345

Page 230 / 345

result_t get_brake_settings (device_t id, brake_settings_t* brake_settings)
Command code (CMD): "gbrk" or 0x6B726267.
Request: (4 bytes)
INT32U CMD Command
Answer: (25 bytes)
INT32U CMD

Command (answer)

INT16U t1

Time in ms between turn on motor power and turn off brake.

INT16U t2

Time in ms between turn off brake and moving readiness. All moving commands will execute after this
interval.

INT16U t3

Time in ms between motor stop and turn on brake.

INT16U t4

Time in ms between turn on brake and turn off motor power.

INT8U

Flags.

BrakeFlags

0x01 - BRAKE_ENABLED (Brake control is enabled, if this flag is set.)
0x02 - BRAKE_ENG_PWROFF (Brake turns off power of step motor, if this flag is set.)
INT8U

Reserved
[10]

INT16U CRC

Reserved (10 bytes)
Checksum

Description:
Read settings of brake control.
Command SCTL
result_t set_control_settings (device_t id, const control_settings_t* control_settings)
Command code (CMD): "sctl" or 0x6C746373.
Request: (93 bytes)
INT32U CMD

Command

INT32U MaxSpeed [10] Array of speeds (full step) using with joystick and button control. Range: 0..100000.
INT8U

uMaxSpeed
[10]

Array of speeds (1/256 microstep) using with joystick and button control.

INT16U Timeout [9]

timeout[i] is time in ms, after that max_speed[i+1] is applying. It is using with buttons control only.

INT16U MaxClickTime

Maximum click time. Prior to the expiration of this time the first speed isn't enabled.

INT16U Flags

Flags.
0x03 - CONTROL_MODE_BITS (Bits to control engine by joystick or buttons.)
0x00 - CONTROL_MODE_OFF (Control is disabled.)
0x01 - CONTROL_MODE_JOY (Control by joystick.)
0x02 - CONTROL_MODE_LR (Control by left/right buttons.)
0x04 - CONTROL_BTN_LEFT_PUSHED_OPEN (Pushed left button corresponds to open contact, if this flag is
set.)
0x08 - CONTROL_BTN_RIGHT_PUSHED_OPEN (Pushed right button corresponds to open contact, if this flag
is set.)

INT32S DeltaPosition

Shift (delta) of position

INT16S uDeltaPosition

Fractional part of the shift in micro steps. Is only used with stepper motor. Range: -255..255.

INT8U

Reserved (9 bytes)

Reserved [9]

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)

Page 230 / 345

Page 231 / 345

Description:
Set settings of motor control. When choosing CTL_MODE = 1 switches motor control with the joystick. In this mode, the joystick to the
maximum engine tends Move at MaxSpeed [i], where i = 0 if the previous use This mode is not selected another i. Buttons switch the
room rate i. When CTL_MODE = 2 is switched on motor control using the Left / right. When you click on the button motor starts to
move in the appropriate direction at a speed MaxSpeed [0], at the end of time Timeout [i] motor move at a speed MaxSpeed [i+1]. at
Transition from MaxSpeed [i] on MaxSpeed [i +1] to acceleration, as usual.
Command GCTL
result_t get_control_settings (device_t id, control_settings_t* control_settings)
Command code (CMD): "gctl" or 0x6C746367.
Request: (4 bytes)
INT32U CMD Command
Answer: (93 bytes)
INT32U CMD

Command (answer)

INT32U MaxSpeed [10] Array of speeds (full step) using with joystick and button control. Range: 0..100000.
INT8U

uMaxSpeed
[10]

Array of speeds (1/256 microstep) using with joystick and button control.

INT16U Timeout [9]

timeout[i] is time in ms, after that max_speed[i+1] is applying. It is using with buttons control only.

INT16U MaxClickTime

Maximum click time. Prior to the expiration of this time the first speed isn't enabled.

INT16U Flags

Flags.
0x03 - CONTROL_MODE_BITS (Bits to control engine by joystick or buttons.)
0x00 - CONTROL_MODE_OFF (Control is disabled.)
0x01 - CONTROL_MODE_JOY (Control by joystick.)
0x02 - CONTROL_MODE_LR (Control by left/right buttons.)
0x04 - CONTROL_BTN_LEFT_PUSHED_OPEN (Pushed left button corresponds to open contact, if this flag is
set.)
0x08 - CONTROL_BTN_RIGHT_PUSHED_OPEN (Pushed right button corresponds to open contact, if this flag
is set.)

INT32S DeltaPosition

Shift (delta) of position

INT16S uDeltaPosition

Fractional part of the shift in micro steps. Is only used with stepper motor. Range: -255..255.

INT8U

Reserved (9 bytes)

Reserved [9]

INT16U CRC

Checksum

Description:
Read settings of motor control. When choosing CTL_MODE = 1 switches motor control with the joystick. In this mode, the joystick to
the maximum engine tends Move at MaxSpeed [i], where i = 0 if the previous use This mode is not selected another i. Buttons switch
the room rate i. When CTL_MODE = 2 is switched on motor control using the Left / right. When you click on the button motor starts to
move in the appropriate direction at a speed MaxSpeed [0], at the end of time Timeout [i] motor move at a speed MaxSpeed [i+1]. at
Transition from MaxSpeed [i] on MaxSpeed [i +1] to acceleration, as usual.
Command SJOY
result_t set_joystick_settings (device_t id, const joystick_settings_t* joystick_settings)
Command code (CMD): "sjoy" or 0x796F6A73.
Request: (22 bytes)

Page 231 / 345

Page 232 / 345

INT32U CMD

Command

INT16U JoyLowEnd

Joystick lower end position. Range: 0..10000.

INT16U JoyCenter

Joystick center position. Range: 0..10000.

INT16U JoyHighEnd Joystick higher end position. Range: 0..10000.
INT8U

ExpFactor

Exponential nonlinearity factor.

INT8U

DeadZone

Joystick dead zone.

INT8U

JoyFlags

Joystick control flags.
0x01 - JOY_REVERSE (Joystick action is reversed. Joystick deviation to the upper values correspond to negative
speeds and vice versa.)

INT8U

Reserved
[7]

INT16U CRC

Reserved (7 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set settings of joystick. If joystick position is outside DeadZone limits from the central position a movement with speed, defined by the
joystick DeadZone edge to 100% deviation, begins. Joystick positions inside DeadZone limits correspond to zero speed (soft stop of
motion) and positions beyond Low and High limits correspond MaxSpeed [i] or -MaxSpeed [i] (see command SCTL), where i = 0 by
default and can be changed with left/right buttons (see command SCTL). If next speed in list is zero (both integer and microstep
parts), the button press is ignored. First speed in list shouldn't be zero. The DeadZone ranges are illustrated on the following picture.
The relationship between the deviation and the rate is exponential, allowing no switching speed combine high mobility and accuracy.
The following picture illustrates this:
The nonlinearity parameter is adjustable. Setting it to zero makes deviation/speed relation linear.
Command GJOY
result_t get_joystick_settings (device_t id, joystick_settings_t* joystick_settings)
Command code (CMD): "gjoy" or 0x796F6A67.
Request: (4 bytes)
INT32U CMD Command
Answer: (22 bytes)
INT32U CMD

Command (answer)

INT16U JoyLowEnd

Joystick lower end position. Range: 0..10000.

INT16U JoyCenter

Joystick center position. Range: 0..10000.

INT16U JoyHighEnd Joystick higher end position. Range: 0..10000.
INT8U

ExpFactor

Exponential nonlinearity factor.

INT8U

DeadZone

Joystick dead zone.

INT8U

JoyFlags

Joystick control flags.
0x01 - JOY_REVERSE (Joystick action is reversed. Joystick deviation to the upper values correspond to negative
speeds and vice versa.)

INT8U

Reserved
[7]

INT16U CRC

Reserved (7 bytes)
Checksum

Page 232 / 345

Page 233 / 345

Description:
Read settings of joystick. If joystick position is outside DeadZone limits from the central position a movement with speed, defined by
the joystick DeadZone edge to 100% deviation, begins. Joystick positions inside DeadZone limits correspond to zero speed (soft stop of
motion) and positions beyond Low and High limits correspond MaxSpeed [i] or -MaxSpeed [i] (see command SCTL), where i = 0 by
default and can be changed with left/right buttons (see command SCTL). If next speed in list is zero (both integer and microstep
parts), the button press is ignored. First speed in list shouldn't be zero. The DeadZone ranges are illustrated on the following picture.
The relationship between the deviation and the rate is exponential, allowing no switching speed combine high mobility and accuracy.
The following picture illustrates this:
The nonlinearity parameter is adjustable. Setting it to zero makes deviation/speed relation linear.
Command SCTP
result_t set_ctp_settings (device_t id, const ctp_settings_t* ctp_settings)
Command code (CMD): "sctp" or 0x70746373.
Request: (18 bytes)
INT32U CMD

Command

INT8U

CTPMinError

Minimum contrast steps from step motor encoder position, wich set STATE_CTP_ERROR flag. Measured in steps
step motor.

INT8U

CTPFlags

Flags.
0x01 - CTP_ENABLED (Position control is enabled, if flag set.)
0x02 - CTP_BASE (Position control is based on revolution sensor, if this flag is set; otherwise it is based on
encoder.)
0x04 - CTP_ALARM_ON_ERROR (Set ALARM on mismatch, if flag set.)
0x08 - REV_SENS_INV (Sensor is active when it 0 and invert makes active level 1. That is, if you do not invert,
it is normal logic - 0 is the activation.)
0x10 - CTP_ERROR_CORRECTION (Correct errors which appear when slippage if the flag is set. It works only
with the encoder. Incompatible with flag CTP_ALARM_ON_ERROR.)

INT8U

Reserved
[10]

INT16U CRC

Reserved (10 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set settings of control position(is only used with stepper motor). When controlling the step motor with encoder (CTP_BASE 0) it is
possible to detect the loss of steps. The controller knows the number of steps per revolution (GENG :: StepsPerRev) and the encoder
resolution (GFBS :: IPT). When the control (flag CTP_ENABLED), the controller stores the current position in the footsteps of SM and
the current position of the encoder. Further, at each step of the position encoder is converted into steps and if the difference is greater
CTPMinError, a flag STATE_CTP_ERROR. When controlling the step motor with speed sensor (CTP_BASE 1), the position is controlled by
him. The active edge of input clock controller stores the current value of steps. Further, at each turn checks how many steps shifted.
When a mismatch CTPMinError a flag STATE_CTP_ERROR.
Command GCTP
result_t get_ctp_settings (device_t id, ctp_settings_t* ctp_settings)
Command code (CMD): "gctp" or 0x70746367.
Request: (4 bytes)
INT32U CMD Command
Answer: (18 bytes)

Page 233 / 345

Page 234 / 345

INT32U CMD

Command (answer)

INT8U

CTPMinError

Minimum contrast steps from step motor encoder position, wich set STATE_CTP_ERROR flag. Measured in steps
step motor.

INT8U

CTPFlags

Flags.
0x01 - CTP_ENABLED (Position control is enabled, if flag set.)
0x02 - CTP_BASE (Position control is based on revolution sensor, if this flag is set; otherwise it is based on
encoder.)
0x04 - CTP_ALARM_ON_ERROR (Set ALARM on mismatch, if flag set.)
0x08 - REV_SENS_INV (Sensor is active when it 0 and invert makes active level 1. That is, if you do not invert,
it is normal logic - 0 is the activation.)
0x10 - CTP_ERROR_CORRECTION (Correct errors which appear when slippage if the flag is set. It works only
with the encoder. Incompatible with flag CTP_ALARM_ON_ERROR.)

INT8U

Reserved
[10]

INT16U CRC

Reserved (10 bytes)
Checksum

Description:
Read settings of control position(is only used with stepper motor). When controlling the step motor with encoder (CTP_BASE 0) it is
possible to detect the loss of steps. The controller knows the number of steps per revolution (GENG :: StepsPerRev) and the encoder
resolution (GFBS :: IPT). When the control (flag CTP_ENABLED), the controller stores the current position in the footsteps of SM and
the current position of the encoder. Further, at each step of the position encoder is converted into steps and if the difference is greater
CTPMinError, a flag STATE_CTP_ERROR. When controlling the step motor with speed sensor (CTP_BASE 1), the position is controlled by
him. The active edge of input clock controller stores the current value of steps. Further, at each turn checks how many steps shifted.
When a mismatch CTPMinError a flag STATE_CTP_ERROR.
Command SURT
result_t set_uart_settings (device_t id, const uart_settings_t* uart_settings)
Command code (CMD): "surt" or 0x74727573.
Request: (16 bytes)
INT32U CMD

Command

INT32U Speed

UART speed

INT16U UARTSetupFlags UART setup flags
0x03 - UART_PARITY_BITS (Bits of the parity.)
0x00 - UART_PARITY_BIT_EVEN (Parity bit 1, if even)
0x01 - UART_PARITY_BIT_ODD (Parity bit 1, if odd)
0x02 - UART_PARITY_BIT_SPACE (Parity bit always 0)
0x03 - UART_PARITY_BIT_MARK (Parity bit always 1)
0x04 - UART_PARITY_BIT_USE (None parity)
0x08 - UART_STOP_BIT (If set - one stop bit, else two stop bit)
INT8U

Reserved [4]

INT16U CRC

Reserved (4 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set UART settings. This function send structure with UART settings to controller's memory.
Command GURT
result_t get_uart_settings (device_t id, uart_settings_t* uart_settings)
Command code (CMD): "gurt" or 0x74727567.
Request: (4 bytes)
INT32U CMD Command

Page 234 / 345

Page 235 / 345

Answer: (16 bytes)
INT32U CMD

Command (answer)

INT32U Speed

UART speed

INT16U UARTSetupFlags UART setup flags
0x03 - UART_PARITY_BITS (Bits of the parity.)
0x00 - UART_PARITY_BIT_EVEN (Parity bit 1, if even)
0x01 - UART_PARITY_BIT_ODD (Parity bit 1, if odd)
0x02 - UART_PARITY_BIT_SPACE (Parity bit always 0)
0x03 - UART_PARITY_BIT_MARK (Parity bit always 1)
0x04 - UART_PARITY_BIT_USE (None parity)
0x08 - UART_STOP_BIT (If set - one stop bit, else two stop bit)
INT8U

Reserved [4]

Reserved (4 bytes)

INT16U CRC

Checksum

Description:
Read UART settings. This function fill structure with UART settings.
Command SCAL
result_t set_calibration_settings (device_t id, const calibration_settings_t* calibration_settings)
Command code (CMD): "scal" or 0x6C616373.
Request: (118 bytes)
INT32U CMD

Command

FLT32

CSS1_A

Scaling factor for the analogue measurements of the winding A current.

FLT32

CSS1_B

Shift factor for the analogue measurements of the winding A current.

FLT32

CSS2_A

Scaling factor for the analogue measurements of the winding B current.

FLT32

CSS2_B

Shift factor for the analogue measurements of the winding B current.

FLT32

FullCurrent_A Scaling factor for the analogue measurements of the full current.

FLT32

FullCurrent_B Shift factor for the analogue measurements of the full current.

INT8U

Reserved [88] Reserved (88 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set calibration settings. This function send structure with calibration settings to controller's memory.
Command GCAL
result_t get_calibration_settings (device_t id, calibration_settings_t* calibration_settings)
Command code (CMD): "gcal" or 0x6C616367.
Request: (4 bytes)
INT32U CMD Command
Answer: (118 bytes)

Page 235 / 345

Page 236 / 345

INT32U CMD

Command (answer)

FLT32

CSS1_A

Scaling factor for the analogue measurements of the winding A current.

FLT32

CSS1_B

Shift factor for the analogue measurements of the winding A current.

FLT32

CSS2_A

Scaling factor for the analogue measurements of the winding B current.

FLT32

CSS2_B

Shift factor for the analogue measurements of the winding B current.

FLT32

FullCurrent_A Scaling factor for the analogue measurements of the full current.

FLT32

FullCurrent_B Shift factor for the analogue measurements of the full current.

INT8U

Reserved [88] Reserved (88 bytes)

INT16U CRC

Checksum

Description:
Read calibration settings. This function fill structure with calibration settings.
Command SNMF
result_t set_controller_name (device_t id, const controller_name_t* controller_name)
Command code (CMD): "snmf" or 0x666D6E73.
Request: (30 bytes)
INT32U CMD

Command

CHAR

ControllerName
[16]

User conroller name. Can be set by user for his/her convinience. Max string length: 16 chars.

INT8U

CtrlFlags

Internal controller settings.
0x01 - EEPROM_PRECEDENCE (If the flag is set settings from external EEPROM override controller
settings.)

INT8U

Reserved [7]

INT16U CRC

Reserved (7 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Write user controller name and flags of setting from FRAM.
Command GNMF
result_t get_controller_name (device_t id, controller_name_t* controller_name)
Command code (CMD): "gnmf" or 0x666D6E67.
Request: (4 bytes)
INT32U CMD Command
Answer: (30 bytes)
INT32U CMD

Command (answer)

CHAR

ControllerName
[16]

User conroller name. Can be set by user for his/her convinience. Max string length: 16 chars.

INT8U

CtrlFlags

Internal controller settings.
0x01 - EEPROM_PRECEDENCE (If the flag is set settings from external EEPROM override controller
settings.)

INT8U

Reserved [7]

INT16U CRC

Reserved (7 bytes)
Checksum

Description:
Read user controller name and flags of setting from FRAM.
Command SNVM

Page 236 / 345

Page 237 / 345

result_t set_nonvolatile_memory (device_t id, const nonvolatile_memory_t* nonvolatile_memory)
Command code (CMD): "snvm" or 0x6D766E73.
Request: (36 bytes)
INT32U CMD

Command

INT32U

UserData User data. Can be set by user for his/her convinience. Each element of the array stores only 32 bits of user data.
[7]
This is important on systems where an int type contains more than 4 bytes. For example that all amd64 systems.

INT8U

Reserved
Reserved (2 bytes)
[2]

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Write userdata into FRAM.
Command GNVM
result_t get_nonvolatile_memory (device_t id, nonvolatile_memory_t* nonvolatile_memory)
Command code (CMD): "gnvm" or 0x6D766E67.
Request: (4 bytes)
INT32U CMD Command
Answer: (36 bytes)
INT32U CMD

Command (answer)

INT32U

UserData User data. Can be set by user for his/her convinience. Each element of the array stores only 32 bits of user data.
[7]
This is important on systems where an int type contains more than 4 bytes. For example that all amd64 systems.

INT8U

Reserved
Reserved (2 bytes)
[2]

INT16U CRC

Checksum

Description:
Read userdata from FRAM.

Group of commands movement control
Command STOP
result_t command_stop (device_t id)
Command code (CMD): "stop" or 0x706F7473.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Immediately stop the engine, the transition to the STOP, mode key BREAK (winding short-circuited), the regime "retention" is
deactivated for DC motors, keeping current in the windings for stepper motors (with Power management settings).
Command ASIA
result_t command_add_sync_in_action (device_t id, const command_add_sync_in_action_t* the_command_add_sync_
in_action)
Command code (CMD): "asia" or 0x61697361.

Page 237 / 345

Page 238 / 345

Request: (22 bytes)
INT32U CMD

Command

INT32S Position

Desired position or shift (whole steps)

INT16S uPosition

The fractional part of a position or shift in microsteps. Is only used with stepper motor. Range: -255..255.

INT32U Time

Time for which you want to achieve the desired position in microseconds.

INT8U

Reserved [6] Reserved (6 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
This command adds one element of the FIFO commands that are executed when input clock pulse. Each pulse synchronization or
perform that action, which is described in SSNI, if the buffer is empty, or the oldest loaded into the buffer action to temporarily replace
the speed and coordinate in SSNI. In the latter case this action is erased from the buffer. The number of remaining empty buffer
elements can be found in the structure of GETS.
Command PWOF
result_t command_power_off (device_t id)
Command code (CMD): "pwof" or 0x666F7770.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Immediately power off motor regardless its state. Shouldn't be used during motion as the motor could be power on again automatically
to continue movement. The command is designed for manual motor power off. When automatic power off after stop is required, use
power management system.
Command MOVE
result_t command_move (device_t id, int Position, int uPosition)
Command code (CMD): "move" or 0x65766F6D.
Request: (18 bytes)
INT32U CMD

Command

INT32S Position

Desired position (whole steps).

INT16S uPosition

The fractional part of a position in microsteps. Is only used with stepper motor. Range: -255..255.

INT8U

Reserved [6] Reserved (6 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Upon receiving the command "move" the engine starts to move with pre-set parameters (speed, acceleration, retention), to the point
specified to the Position, uPosition. For stepper motor uPosition sets the microstep, for DC motor this field is not used.
Command MOVR
result_t command_movr (device_t id, int DeltaPosition, int uDeltaPosition)
Command code (CMD): "movr" or 0x72766F6D.
Request: (18 bytes)

Page 238 / 345

Page 239 / 345

INT32U CMD

Command

INT32S DeltaPosition

Shift (delta) of position

INT16S uDeltaPosition Fractional part of the shift in micro steps is only used with stepper motor. Range: -255..255.
INT8U

Reserved [6]

INT16U CRC

Reserved (6 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Upon receiving the command "movr" engine starts to move with pre-set parameters (speed, acceleration, hold), left or right
(depending on the sign of DeltaPosition) by the number of pulses specified in the fields DeltaPosition, uDeltaPosition. For stepper motor
uDeltaPosition sets the microstep, for DC motor this field is not used.
Command HOME
result_t command_home (device_t id)
Command code (CMD): "home" or 0x656D6F68.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
The positive direction is to the right. A value of zero reverses the direction of the direction of the flag, the set speed. Restriction
imposed by the trailer, act the same, except that the limit switch contact does not stop. Limit the maximum speed, acceleration and
deceleration function. 1) moves the motor according to the speed FastHome, uFastHome and flag HOME_DIR_FAST until limit switch, if
the flag is set HOME_STOP_ENDS, until the signal from the input synchronization if the flag HOME_STOP_SYNC (as accurately as
possible is important to catch the moment of operation limit switch) or until the signal is received from the speed sensor, if the flag
HOME_STOP_REV_SN 2) then moves according to the speed SlowHome, uSlowHome and flag HOME_DIR_SLOW until signal from the
clock input, if the flag HOME_MV_SEC. If the flag HOME_MV_SEC reset skip this paragraph. 3) then move the motor according to the
speed FastHome, uFastHome and flag HOME_DIR_SLOW a distance HomeDelta, uHomeDelta. description of flags and variable see in
description for commands GHOM/SHOM
Command LEFT
result_t command_left (device_t id)
Command code (CMD): "left" or 0x7466656C.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Start continous moving to the left.
Command RIGT
result_t command_right (device_t id)
Command code (CMD): "rigt" or 0x74676972.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)

Page 239 / 345

Page 240 / 345

Description:
Start continous moving to the right.
Command LOFT
result_t command_loft (device_t id)
Command code (CMD): "loft" or 0x74666F6C.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Upon receiving the command "loft" the engine is shifted from the current point to a distance GENG :: Antiplay, then move to the same
point.
Command SSTP
result_t command_sstp (device_t id)
Command code (CMD): "sstp" or 0x70747373.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Soft stop engine. The motor stops with deceleration speed.

Group of commands set the current position
Command GPOS
result_t get_position (device_t id, get_position_t* the_get_position)
Command code (CMD): "gpos" or 0x736F7067.
Request: (4 bytes)
INT32U CMD Command
Answer: (26 bytes)
INT32U CMD

Command (answer)

INT32S Position

The position of the whole steps in the engine

INT16S uPosition

Microstep position is only used with stepper motors

INT64S EncPosition

Encoder position.

INT8U

Reserved [6] Reserved (6 bytes)

INT16U CRC

Checksum

Description:
Reads the value position in steps and micro for stepper motor and encoder steps all engines.
Command SPOS
result_t set_position (device_t id, const set_position_t* the_set_position)
Command code (CMD): "spos" or 0x736F7073.
Request: (26 bytes)

Page 240 / 345

Page 241 / 345

INT32U CMD

Command

INT32S Position

The position of the whole steps in the engine

INT16S uPosition

Microstep position is only used with stepper motors

INT64S EncPosition

Encoder position.

INT8U

Flags

PosFlags

0x01 - SETPOS_IGNORE_POSITION (Will not reload position in steps/microsteps if this flag is set.)
0x02 - SETPOS_IGNORE_ENCODER (Will not reload encoder state if this flag is set.)
INT8U

Reserved [5] Reserved (5 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Sets any position value in steps and micro for stepper motor and encoder steps of all engines. It means, that changing main indicator
of position.
Command ZERO
result_t command_zero (device_t id)
Command code (CMD): "zero" or 0x6F72657A.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Sets the current position and the position in which the traffic moves by the move command and movr zero for all cases, except for
movement to the target position. In the latter case, set the zero current position and the target position counted so that the absolute
position of the destination is the same. That is, if we were at 400 and moved to 500, then the command Zero makes the current
position of 0, and the position of the destination - 100. Does not change the mode of movement that is if the motion is carried, it
continues, and if the engine is in the "hold", the type of retention remains.

Group of commands to save and load settings
Command SAVE
result_t command_save_settings (device_t id)
Command code (CMD): "save" or 0x65766173.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Save all settings from controller's RAM to controller's flash memory, replacing previous data in controller's flash memory.
Command READ
result_t command_read_settings (device_t id)
Command code (CMD): "read" or 0x64616572.
Request: (4 bytes)
INT32U CMD Command

Page 241 / 345

Page 242 / 345

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Read all settings from controller's flash memory to controller's RAM, replacing previous data in controller's RAM.
Command SARS
result_t command_save_robust_settings (device_t id)
Command code (CMD): "sars" or 0x73726173.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Save important settings (calibration coefficients and etc.) from controller's RAM to controller's flash memory, replacing previous data in
controller's flash memory.
Command RERS
result_t command_read_robust_settings (device_t id)
Command code (CMD): "rers" or 0x73726572.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Read important settings (calibration coefficients and etc.) from controller's flash memory to controller's RAM, replacing previous data in
controller's RAM.
Command EESV
result_t command_eesave_settings (device_t id)
Command code (CMD): "eesv" or 0x76736565.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Save settings from controller's RAM to stage's EEPROM memory, which spontaneity connected to stage and it isn`t change without it
mechanical reconstruction. Can be used by manufacturer only.
Command EERD
result_t command_eeread_settings (device_t id)
Command code (CMD): "eerd" or 0x64726565.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)

Page 242 / 345

Page 243 / 345

INT32U CMD Command (answer)
Description:
Read settings from controller's RAM to stage's EEPROM memory, which spontaneity connected to stage and it isn`t change without it
mechanical reconstruction.

Group of commands get the status of the controller
Command GETS
result_t get_status (device_t id, status_t* status)
Command code (CMD): "gets" or 0x73746567.
Request: (4 bytes)
INT32U CMD Command
Answer: (54 bytes)
INT32U CMD

Command (answer)

INT8U

Move state.

MoveSts

0x01 - MOVE_STATE_MOVING (This flag indicates that controller is trying to move the motor. Don't use
this flag for waiting of completion of the movement command. Use MVCMD_RUNNING flag from the
MvCmdSts field instead.)
0x02 - MOVE_STATE_TARGET_SPEED (Target speed is reached, if flag set.)
0x04 - MOVE_STATE_ANTIPLAY (Motor is playing compensation, if flag set.)
INT8U

MvCmdSts

Move command state.
0x3F - MVCMD_NAME_BITS (Move command bit mask.)
0x00 - MVCMD_UKNWN (Unknown command.)
0x01 - MVCMD_MOVE (Command move.)
0x02 - MVCMD_MOVR (Command movr.)
0x03 - MVCMD_LEFT (Command left.)
0x04 - MVCMD_RIGHT (Command rigt.)
0x05 - MVCMD_STOP (Command stop.)
0x06 - MVCMD_HOME (Command home.)
0x07 - MVCMD_LOFT (Command loft.)
0x08 - MVCMD_SSTP (Command soft stop.)
0x40 - MVCMD_ERROR (Finish state (1 - move command have finished with an error, 0 - move command
have finished correctly). This flags is actual when MVCMD_RUNNING signals movement finish.)
0x80 - MVCMD_RUNNING (Move command state (0 - move command have finished, 1 - move command
is being executed).)

INT8U

PWRSts

Power state of the stepper motor (used only with stepper motor).
0x00 - PWR_STATE_UNKNOWN (Unknown state, should never happen.)
0x01 - PWR_STATE_OFF (Motor windings are disconnected from the driver.)
0x03 - PWR_STATE_NORM (Motor windings are powered by nominal current.)
0x04 - PWR_STATE_REDUCT (Motor windings are powered by reduced current to lower power
consumption.)
0x05 - PWR_STATE_MAX (Motor windings are powered by maximum current driver can provide at this
voltage.)

INT8U

EncSts

Encoder state.
0x00 - ENC_STATE_ABSENT (Encoder is absent.)
0x01 - ENC_STATE_UNKNOWN (Encoder state is unknown.)
0x02 - ENC_STATE_MALFUNC (Encoder is connected and malfunctioning.)
0x03 - ENC_STATE_REVERS (Encoder is connected and operational but counts in other direction.)
0x04 - ENC_STATE_OK (Encoder is connected and working properly.)

INT8U

WindSts

Windings state.

Page 243 / 345

Page 244 / 345

0x00 - WIND_A_STATE_ABSENT (Winding A is disconnected.)
0x01 - WIND_A_STATE_UNKNOWN (Winding A state is unknown.)
0x02 - WIND_A_STATE_MALFUNC (Winding A is short-circuited.)
0x03 - WIND_A_STATE_OK (Winding A is connected and working properly.)
0x00 - WIND_B_STATE_ABSENT (Winding B is disconnected.)
0x10 - WIND_B_STATE_UNKNOWN (Winding B state is unknown.)
0x20 - WIND_B_STATE_MALFUNC (Winding B is short-circuited.)
0x30 - WIND_B_STATE_OK (Winding B is connected and working properly.)
INT32S CurPosition

Current position.

INT16S uCurPosition

Step motor shaft position in 1/256 microsteps. Used only with stepper motor.

INT64S EncPosition

Current encoder position.

INT32S CurSpeed

Motor shaft speed.

INT16S uCurSpeed

Part of motor shaft speed in 1/256 microsteps. Used only with stepper motor.

INT16S Ipwr

Engine current.

INT16S Upwr

Power supply voltage, tens of mV.

INT16S Iusb

USB current consumption.

INT16S Uusb

USB voltage, tens of mV.

INT16S CurT

Temperature in tenths of degrees C.

INT32U Flags

Set of flags specify motor shaft movement algorithm and list of limitations.
0x00003F - STATE_CONTR (Flags of controller states.)
0x000001 - STATE_ERRC (Command error encountered.)
0x000002 - STATE_ERRD (Data integrity error encountered.)
0x000004 - STATE_ERRV (Value error encountered.)
0x000010 - STATE_EEPROM_CONNECTED (EEPROM with settings is connected.)
0x000020 - STATE_IS_HOMED (Calibration performed)
0x73FFC0 - STATE_SECUR (Flags of security.)
0x000040 - STATE_ALARM (Controller is in alarm state indicating that something dangerous had
happened. Most commands are ignored in this state. To reset the flag a STOP command must be issued.)
0x000080 - STATE_CTP_ERROR (Control position error(is only used with stepper motor).)
0x000100 - STATE_POWER_OVERHEAT (Power driver overheat.)
0x000200 - STATE_CONTROLLER_OVERHEAT (Controller overheat.)
0x000400 - STATE_OVERLOAD_POWER_VOLTAGE (Power voltage exceeds safe limit.)
0x000800 - STATE_OVERLOAD_POWER_CURRENT (Power current exceeds safe limit.)
0x001000 - STATE_OVERLOAD_USB_VOLTAGE (USB voltage exceeds safe limit.)
0x002000 - STATE_LOW_USB_VOLTAGE (USB voltage is insufficient for normal operation.)
0x004000 - STATE_OVERLOAD_USB_CURRENT (USB current exceeds safe limit.)
0x008000 - STATE_BORDERS_SWAP_MISSET (Engine stuck at the wrong edge.)
0x010000 - STATE_LOW_POWER_VOLTAGE (Power voltage is lower than Low Voltage Protection limit)
0x020000 - STATE_H_BRIDGE_FAULT (Signal from the driver that fault happened)
0x0C0000 - STATE_CURRENT_MOTOR_BITS (Bits indicating the current operating motor on boards with
multiple outputs for engine mounting.)
0x000000 - STATE_CURRENT_MOTOR0 (Motor 0.)
0x040000 - STATE_CURRENT_MOTOR1 (Motor 1.)
0x080000 - STATE_CURRENT_MOTOR2 (Motor 2.)
0x0C0000 - STATE_CURRENT_MOTOR3 (Motor 3.)
0x100000 - STATE_WINDING_RES_MISMATCH (The difference between winding resistances is too large)
0x200000 - STATE_ENCODER_FAULT (Signal from the encoder that fault happened)
0x400000 - STATE_MOTOR_CURRENT_LIMIT (Current limit exceeded)

INT32U GPIOFlags

Set of flags of gpio states

Page 244 / 345

Page 245 / 345

0xFFFF - STATE_DIG_SIGNAL (Flags of digital signals.)
0x0001 - STATE_RIGHT_EDGE (Engine stuck at the right edge.)
0x0002 - STATE_LEFT_EDGE (Engine stuck at the left edge.)
0x0004 - STATE_BUTTON_RIGHT (Button "right" state (1 if pressed).)
0x0008 - STATE_BUTTON_LEFT (Button "left" state (1 if pressed).)
0x0010 - STATE_GPIO_PINOUT (External GPIO works as Out, if flag set; otherwise works as In.)
0x0020 - STATE_GPIO_LEVEL (State of external GPIO pin.)
0x0040 - STATE_HALL_A (State of Hall_a pin.)
0x0080 - STATE_HALL_B (State of Hall_b pin.)
0x0100 - STATE_HALL_C (State of Hall_c pin.)
0x0200 - STATE_BRAKE (State of Brake pin.)
0x0400 - STATE_REV_SENSOR (State of Revolution sensor pin.)
0x0800 - STATE_SYNC_INPUT (State of Sync input pin.)
0x1000 - STATE_SYNC_OUTPUT (State of Sync output pin.)
0x2000 - STATE_ENC_A (State of encoder A pin.)
0x4000 - STATE_ENC_B (State of encoder B pin.)
INT8U

CmdBufFreeSpace This field shows the amount of free cells buffer synchronization chain.

INT8U

Reserved [4]

Reserved (4 bytes)

INT16U CRC

Checksum

Description:
Return device state. Useful function that fills structure with snapshot of controller state, including speed, position and boolean flags.
Command STMS
result_t command_start_measurements (device_t id)
Command code (CMD): "stms" or 0x736D7473.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Start measurements and buffering of speed, following error.
Command GETM
result_t get_measurements (device_t id, measurements_t* measurements)
Command code (CMD): "getm" or 0x6D746567.
Request: (4 bytes)
INT32U CMD Command
Answer: (216 bytes)
INT32U CMD

Command (answer)

INT32S Speed [25]

Current speed.

INT32S Error [25]

Current error.

INT32U Length

Length of actual data in buffer.

INT8U

Reserved [6] Reserved (6 bytes)

INT16U CRC

Checksum

Page 245 / 345

Page 246 / 345

Description:
A command to read the data buffer to build a speed graph and a sequence error. Filling the buffer starts with the command
"start_measurements". The buffer holds 25 points, the points are taken with a period of 1 ms. To create a robust system, read data
every 20 ms, if the buffer is completely full, then it is recommended to repeat the readings every 5 ms until the buffer again becomes
filled with 20 points.
Command GETC
result_t get_chart_data (device_t id, chart_data_t* chart_data)
Command code (CMD): "getc" or 0x63746567.
Request: (4 bytes)
INT32U CMD Command
Answer: (38 bytes)
INT32U CMD

Command (answer)

INT16S WindingVoltageA

In the case step motor, the voltage across the winding A; in the case of a brushless, the voltage on the
first coil, in the case of the only DC.

INT16S WindingVoltageB

In the case step motor, the voltage across the winding B; in case of a brushless, the voltage on the second
winding, and in the case of DC is not used.

INT16S WindingVoltageC In the case of a brushless, the voltage on the third winding, in the case step motor and DC is not used.
INT16S WindingCurrentA

In the case step motor, the current in the coil A; brushless if the current in the first coil, and in the case of
a single DC.

INT16S WindingCurrentB

In the case step motor, the current in the coil B; brushless if the current in the second coil, and in the
case of DC is not used.

INT16S WindingCurrentC In the case of a brushless, the current in the third winding, in the case step motor and DC is not used.
INT16U Pot

Analog input value in ten-thousandths. Range: 0..10000

INT16U Joy

The joystick position in the ten-thousandths. Range: 0..10000

INT16S DutyCycle

Duty cycle of PWM.

INT8U

Reserved (14 bytes)

Reserved [14]

INT16U CRC

Checksum

Description:
Return device electrical parameters, useful for charts. Useful function that fill structure with snapshot of controller voltages and
currents.
Command GETI
result_t get_device_information (device_t id, device_information_t* device_information)
Command code (CMD): "geti" or 0x69746567.
Request: (4 bytes)
INT32U CMD Command
Answer: (36 bytes)
INT32U CMD

Command (answer)

CHAR

Manufacturer [4]

Manufacturer

CHAR

ManufacturerId [2]

Manufacturer id

CHAR

ProductDescription [8] Product description

INT8U

Major

The major number of the hardware version.

INT8U

Minor

Minor number of the hardware version.

INT16U Release

Number of edits this release of hardware.

INT8U

Reserved (12 bytes)

Reserved [12]

INT16U CRC

Checksum

Description:
Return device information. It's available from the firmware and bootloader.

Page 246 / 345

Page 247 / 345

Command GSER
result_t get_serial_number (device_t id, unsigned int* SerialNumber)
Command code (CMD): "gser" or 0x72657367.
Request: (4 bytes)
INT32U CMD Command
Answer: (10 bytes)
INT32U CMD

Command (answer)

INT32U SerialNumber Board serial number.
INT16U CRC

Checksum

Description:
Read device serial number.

Group of commands to work with the controller firmware
Command GFWV
result_t get_firmware_version (device_t id, unsigned int* Major, unsigned int* Minor, unsigned int* Release
)
Command code (CMD): "gfwv" or 0x76776667.
Request: (4 bytes)
INT32U CMD Command
Answer: (10 bytes)
INT32U CMD

Command (answer)

INT8U

Major

Firmware major version number

INT8U

Minor

Firmware minor version number

INT16U Release Firmware release version number
INT16U CRC

Checksum

Description:
Read controller's firmware version.
Command UPDF
result_t service_command_updf (device_t id)
Command code (CMD): "updf" or 0x66647075.
Request: (4 bytes)
INT32U CMD Command
Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Command puts the controller to update the firmware. After receiving this command, the firmware board sets a flag (for loader), sends
echo reply and restarts the controller.

Service commands
Command SSER
result_t set_serial_number (device_t id, const serial_number_t* serial_number)
Command code (CMD): "sser" or 0x72657373.

Page 247 / 345

Page 248 / 345

Request: (50 bytes)
INT32U CMD

Command

INT32U SN

New board serial number.

INT8U

Key [32]

Protection key (256 bit).

INT8U

Major

The major number of the hardware version.

INT8U

Minor

Minor number of the hardware version.

INT16U Release
INT8U

Number of edits this release of hardware.

Reserved [4] Reserved (4 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Write device serial number and hardware version to controller's flash memory. Along with the new serial number and hardware version
a "Key" is transmitted. The SN and hardware version are changed and saved when keys match. Can be used by manufacturer only.
Command RDAN
result_t get_analog_data (device_t id, analog_data_t* analog_data)
Command code (CMD): "rdan" or 0x6E616472.
Request: (4 bytes)
INT32U CMD Command
Answer: (76 bytes)

Page 248 / 345

Page 249 / 345

INT32U CMD

Command (answer)

INT16U A1Voltage_ADC

"Voltage on pin 1 winding A" raw data from ADC.

INT16U A2Voltage_ADC

"Voltage on pin 2 winding A" raw data from ADC.

INT16U B1Voltage_ADC

"Voltage on pin 1 winding B" raw data from ADC.

INT16U B2Voltage_ADC

"Voltage on pin 2 winding B" raw data from ADC.

INT16U SupVoltage_ADC "Voltage on the top of MOSFET full bridge" raw data from ADC.
INT16U ACurrent_ADC

"Winding A current" raw data from ADC.

INT16U BCurrent_ADC

"Winding B current" raw data from ADC.

INT16U FullCurrent_ADC "Full current" raw data from ADC.
INT16U Temp_ADC

Voltage from temperature sensor, raw data from ADC.

INT16U Joy_ADC

Joystick raw data from ADC.

INT16U Pot_ADC

Voltage on analog input, raw data from ADC

INT16U L5_ADC

USB supply voltage after the current sense resistor, from ADC.

INT16U H5_ADC

Power supply USB from ADC

INT16S A1Voltage

"Voltage on pin 1 winding A" calibrated data.

INT16S A2Voltage

"Voltage on pin 2 winding A" calibrated data.

INT16S B1Voltage

"Voltage on pin 1 winding B" calibrated data.

INT16S B2Voltage

"Voltage on pin 2 winding B" calibrated data.

INT16S SupVoltage

"Voltage on the top of MOSFET full bridge" calibrated data.

INT16S ACurrent

"Winding A current" calibrated data.

INT16S BCurrent

"Winding B current" calibrated data.

INT16S FullCurrent

"Full current" calibrated data.

INT16S Temp

Temperature, calibrated data.

INT16S Joy

Joystick, calibrated data. Range: 0..10000

INT16S Pot

Analog input, calibrated data. Range: 0..10000

INT16S L5

USB supply voltage after the current sense resistor.

INT16S H5

Power supply USB

INT16U deprecated
INT32S R

Motor winding resistance in mOhms(is only used with stepper motor).

INT32S L

Motor winding pseudo inductance in uHn(is only used with stepper motor).

INT8U

Reserved (8 bytes)

Reserved [8]

INT16U CRC

Checksum

Description:
Read analog data structure that contains raw analog data from ADC embedded on board. This function used for device testing and
deep recalibraton by manufacturer only.
Command DBGR
result_t get_debug_read (device_t id, debug_read_t* debug_read)
Command code (CMD): "dbgr" or 0x72676264.
Request: (4 bytes)
INT32U CMD Command
Answer: (142 bytes)
INT32U CMD

Command (answer)

INT8U

DebugData [128] Arbitrary debug data.

INT8U

Reserved [8]

INT16U CRC

Reserved (8 bytes)
Checksum

Page 249 / 345

Page 250 / 345

Description:
Read data from firmware for debug purpose. Its use depends on context, firmware version and previous history.
Command DBGW
result_t set_debug_write (device_t id, const debug_write_t* debug_write)
Command code (CMD): "dbgw" or 0x77676264.
Request: (142 bytes)
INT32U CMD

Command

INT8U

DebugData [128] Arbitrary debug data.

INT8U

Reserved [8]

INT16U CRC

Reserved (8 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Write data to firmware for debug purpose.

Group of commands to work with EEPROM
Command SNME
result_t set_stage_name (device_t id, const stage_name_t* stage_name)
Command code (CMD): "snme" or 0x656D6E73.
Request: (30 bytes)
INT32U CMD

Command

CHAR

PositionerName [16] User positioner name. Can be set by user for his/her convinience. Max string length: 16 chars.

INT8U

Reserved [8]

INT16U CRC

Reserved (8 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Write user stage name from EEPROM.
Command GNME
result_t get_stage_name (device_t id, stage_name_t* stage_name)
Command code (CMD): "gnme" or 0x656D6E67.
Request: (4 bytes)
INT32U CMD Command
Answer: (30 bytes)
INT32U CMD

Command (answer)

CHAR

PositionerName [16] User positioner name. Can be set by user for his/her convinience. Max string length: 16 chars.

INT8U

Reserved [8]

INT16U CRC

Reserved (8 bytes)
Checksum

Description:
Read user stage name from EEPROM.
Command SSTI

Page 250 / 345

Page 251 / 345

result_t set_stage_information (device_t id, const stage_information_t* stage_information)
Command code (CMD): "ssti" or 0x69747373.
Request: (70 bytes)
INT32U CMD

Command

CHAR

Manufacturer [16] Manufacturer. Max string length: 16 chars.

CHAR

PartNumber [24]

Series and PartNumber. Max string length: 24 chars.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set stage information to EEPROM. Can be used by manufacturer only.
Command GSTI
result_t get_stage_information (device_t id, stage_information_t* stage_information)
Command code (CMD): "gsti" or 0x69747367.
Request: (4 bytes)
INT32U CMD Command
Answer: (70 bytes)
INT32U CMD

Command (answer)

CHAR

Manufacturer [16] Manufacturer. Max string length: 16 chars.

CHAR

PartNumber [24]

Series and PartNumber. Max string length: 24 chars.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Description:
Read stage information from EEPROM.
Command SSTS
result_t set_stage_settings (device_t id, const stage_settings_t* stage_settings)
Command code (CMD): "ssts" or 0x73747373.
Request: (70 bytes)
INT32U CMD

Command

FLT32

LeadScrewPitch

Lead screw pitch (mm). Data type: float.

CHAR

Units [8]

Units for MaxSpeed and TravelRange fields of the structure (steps, degrees, mm, ...). Max string
length: 8 chars.

FLT32

MaxSpeed

Max speed (Units/c). Data type: float.

FLT32

TravelRange

Travel range (Units). Data type: float.

FLT32

SupplyVoltageMin

Supply voltage minimum (V). Data type: float.

FLT32

SupplyVoltageMax

Supply voltage maximum (V). Data type: float.

FLT32

MaxCurrentConsumption Max current consumption (A). Data type: float.

FLT32

HorizontalLoadCapacity

Horizontal load capacity (kg). Data type: float.

FLT32

VerticalLoadCapacity

Vertical load capacity (kg). Data type: float.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Page 251 / 345

Page 252 / 345

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set stage settings to EEPROM. Can be used by manufacturer only
Command GSTS
result_t get_stage_settings (device_t id, stage_settings_t* stage_settings)
Command code (CMD): "gsts" or 0x73747367.
Request: (4 bytes)
INT32U CMD Command
Answer: (70 bytes)
INT32U CMD

Command (answer)

FLT32

LeadScrewPitch

Lead screw pitch (mm). Data type: float.

CHAR

Units [8]

Units for MaxSpeed and TravelRange fields of the structure (steps, degrees, mm, ...). Max string
length: 8 chars.

FLT32

MaxSpeed

Max speed (Units/c). Data type: float.

FLT32

TravelRange

Travel range (Units). Data type: float.

FLT32

SupplyVoltageMin

Supply voltage minimum (V). Data type: float.

FLT32

SupplyVoltageMax

Supply voltage maximum (V). Data type: float.

FLT32

MaxCurrentConsumption Max current consumption (A). Data type: float.

FLT32

HorizontalLoadCapacity

Horizontal load capacity (kg). Data type: float.

FLT32

VerticalLoadCapacity

Vertical load capacity (kg). Data type: float.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Description:
Read stage settings from EEPROM.
Command SMTI
result_t set_motor_information (device_t id, const motor_information_t* motor_information)
Command code (CMD): "smti" or 0x69746D73.
Request: (70 bytes)
INT32U CMD

Command

CHAR

Manufacturer [16] Manufacturer. Max string length: 16 chars.

CHAR

PartNumber [24]

Series and PartNumber. Max string length: 24 chars.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set motor information to EEPROM. Can be used by manufacturer only.
Command GMTI
result_t get_motor_information (device_t id, motor_information_t* motor_information)
Command code (CMD): "gmti" or 0x69746D67.
Request: (4 bytes)

Page 252 / 345

Page 253 / 345

INT32U CMD Command
Answer: (70 bytes)
INT32U CMD

Command (answer)

CHAR

Manufacturer [16] Manufacturer. Max string length: 16 chars.

CHAR

PartNumber [24]

Series and PartNumber. Max string length: 24 chars.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Description:
Read motor information from EEPROM.
Command SMTS
result_t set_motor_settings (device_t id, const motor_settings_t* motor_settings)
Command code (CMD): "smts" or 0x73746D73.
Request: (112 bytes)

Page 253 / 345

Page 254 / 345

INT32U CMD

Command

INT8U

Motor type

MotorType

0x00 - MOTOR_TYPE_UNKNOWN (Unknown type of engine)
0x01 - MOTOR_TYPE_STEP (Step engine)
0x02 - MOTOR_TYPE_DC (DC engine)
0x03 - MOTOR_TYPE_BLDC (BLDC engine)
INT8U

ReservedField

Reserved

INT16U Poles

Number of pole pairs for DC or BLDC motors or number of steps per rotation for stepper motor.

INT16U Phases

Number of phases for BLDC motors.

FLT32

NominalVoltage

Nominal voltage on winding (B). Data type: float

FLT32

NominalCurrent

Maximum direct current in winding for DC and BLDC engines, nominal current in windings for
stepper motor (A). Data type: float.

FLT32

NominalSpeed

Nominal speed(rpm). Used for DC and BLDC engine. Data type: float.

FLT32

NominalTorque

Nominal torque(mN m). Used for DC and BLDC engine. Data type: float.

FLT32

NominalPower

Nominal power(W). Used for DC and BLDC engine. Data type: float.

FLT32

WindingResistance

Resistance of windings for DC engine, each of two windings for stepper motor or each of there
windings for BLDC engine(Ohm). Data type: float

FLT32

WindingInductance

Inductance of windings for DC engine, each of two windings for stepper motor or each of there
windings for BLDC engine(mH). Data type: float

FLT32

RotorInertia

Rotor inertia(g cm2). Data type: float

FLT32

StallTorque

Torque hold position for a stepper motor or torque at a motionless rotor for other types of engines
(mN m). Data type: float.

FLT32

DetentTorque

Holding torque position with un-powered coils (mN m). Data type: float.

FLT32

TorqueConstant

Torque constant, which determines the aspect ratio of maximum moment of force from the rotor
current flowing in the coil (mN m / A). Used mainly for DC motors. Data type: float.

FLT32

SpeedConstant

Velocity constant, which determines the value or amplitude of the induced voltage on the motion of
DC or BLDC motor (rpm / V) or stepper motor (steps/s / V). Data type: float.

FLT32

SpeedTorqueGradient

Speed torque gradient (rpm / mN m). Data type: float.

FLT32

MechanicalTimeConstant Mechanical time constant (ms). Data type: float.

FLT32

MaxSpeed

The maximum speed for stepper motors (steps/s) or DC and BLDC motors (rmp). Data type: float.

FLT32

MaxCurrent

The maximum current in the winding (A). Data type: float.

FLT32

MaxCurrentTime

Safe duration of overcurrent in the winding (ms). Data type: float.

FLT32

NoLoadCurrent

The current consumption in idle mode (A). Used for DC and BLDC motors. Data type: float.

FLT32

NoLoadSpeed

Idle speed (rpm). Used for DC and BLDC motors. Data type: float.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set motor settings to EEPROM. Can be used by manufacturer only.
Command GMTS
result_t get_motor_settings (device_t id, motor_settings_t* motor_settings)
Command code (CMD): "gmts" or 0x73746D67.
Request: (4 bytes)
INT32U CMD Command
Answer: (112 bytes)

Page 254 / 345

Page 255 / 345

INT32U CMD

Command (answer)

INT8U

Motor type

MotorType

0x00 - MOTOR_TYPE_UNKNOWN (Unknown type of engine)
0x01 - MOTOR_TYPE_STEP (Step engine)
0x02 - MOTOR_TYPE_DC (DC engine)
0x03 - MOTOR_TYPE_BLDC (BLDC engine)
INT8U

ReservedField

Reserved

INT16U Poles

Number of pole pairs for DC or BLDC motors or number of steps per rotation for stepper motor.

INT16U Phases

Number of phases for BLDC motors.

FLT32

NominalVoltage

Nominal voltage on winding (B). Data type: float

FLT32

NominalCurrent

Maximum direct current in winding for DC and BLDC engines, nominal current in windings for
stepper motor (A). Data type: float.

FLT32

NominalSpeed

Nominal speed(rpm). Used for DC and BLDC engine. Data type: float.

FLT32

NominalTorque

Nominal torque(mN m). Used for DC and BLDC engine. Data type: float.

FLT32

NominalPower

Nominal power(W). Used for DC and BLDC engine. Data type: float.

FLT32

WindingResistance

Resistance of windings for DC engine, each of two windings for stepper motor or each of there
windings for BLDC engine(Ohm). Data type: float

FLT32

WindingInductance

Inductance of windings for DC engine, each of two windings for stepper motor or each of there
windings for BLDC engine(mH). Data type: float

FLT32

RotorInertia

Rotor inertia(g cm2). Data type: float

FLT32

StallTorque

Torque hold position for a stepper motor or torque at a motionless rotor for other types of engines
(mN m). Data type: float.

FLT32

DetentTorque

Holding torque position with un-powered coils (mN m). Data type: float.

FLT32

TorqueConstant

Torque constant, which determines the aspect ratio of maximum moment of force from the rotor
current flowing in the coil (mN m / A). Used mainly for DC motors. Data type: float.

FLT32

SpeedConstant

Velocity constant, which determines the value or amplitude of the induced voltage on the motion of
DC or BLDC motor (rpm / V) or stepper motor (steps/s / V). Data type: float.

FLT32

SpeedTorqueGradient

Speed torque gradient (rpm / mN m). Data type: float.

FLT32

MechanicalTimeConstant Mechanical time constant (ms). Data type: float.

FLT32

MaxSpeed

The maximum speed for stepper motors (steps/s) or DC and BLDC motors (rmp). Data type: float.

FLT32

MaxCurrent

The maximum current in the winding (A). Data type: float.

FLT32

MaxCurrentTime

Safe duration of overcurrent in the winding (ms). Data type: float.

FLT32

NoLoadCurrent

The current consumption in idle mode (A). Used for DC and BLDC motors. Data type: float.

FLT32

NoLoadSpeed

Idle speed (rpm). Used for DC and BLDC motors. Data type: float.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Description:
Read motor settings from EEPROM.
Command SENI
result_t set_encoder_information (device_t id, const encoder_information_t* encoder_information)
Command code (CMD): "seni" or 0x696E6573.
Request: (70 bytes)
INT32U CMD

Command

CHAR

Manufacturer [16] Manufacturer. Max string length: 16 chars.

CHAR

PartNumber [24]

Series and PartNumber. Max string length: 24 chars.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)

Page 255 / 345

Page 256 / 345

INT32U CMD Command (answer)
Description:
Set encoder information to EEPROM. Can be used by manufacturer only.
Command GENI
result_t get_encoder_information (device_t id, encoder_information_t* encoder_information)
Command code (CMD): "geni" or 0x696E6567.
Request: (4 bytes)
INT32U CMD Command
Answer: (70 bytes)
INT32U CMD

Command (answer)

CHAR

Manufacturer [16] Manufacturer. Max string length: 16 chars.

CHAR

PartNumber [24]

Series and PartNumber. Max string length: 24 chars.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Description:
Read encoder information from EEPROM.
Command SENS
result_t set_encoder_settings (device_t id, const encoder_settings_t* encoder_settings)
Command code (CMD): "sens" or 0x736E6573.
Request: (54 bytes)
INT32U CMD

Command

FLT32

MaxOperatingFrequency Max operation frequency (kHz). Data type: float.

FLT32

SupplyVoltageMin

Minimum supply voltage (V). Data type: float.

FLT32

SupplyVoltageMax

Maximum supply voltage (V). Data type: float.

FLT32

MaxCurrentConsumption Max current consumption (mA). Data type: float.

INT32U PPR

The number of counts per revolution

INT32U EncoderSettings

Encoder settings flags
0x001 - ENCSET_DIFFERENTIAL_OUTPUT (If flag is set the encoder has differential output, else
single ended output)
0x004 - ENCSET_PUSHPULL_OUTPUT (If flag is set the encoder has push-pull output, else open
drain output)
0x010 - ENCSET_INDEXCHANNEL_PRESENT (If flag is set the encoder has index channel, else
encoder hasn`t it)
0x040 - ENCSET_REVOLUTIONSENSOR_PRESENT (If flag is set the encoder has revolution sensor,
else encoder hasn`t it)
0x100 - ENCSET_REVOLUTIONSENSOR_ACTIVE_HIGH (If flag is set the revolution sensor active
state is high logic state, else active state is low logic state)

INT8U

Reserved [24]

INT16U CRC

Reserved (24 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set encoder settings to EEPROM. Can be used by manufacturer only.
Command GENS

Page 256 / 345

Page 257 / 345

result_t get_encoder_settings (device_t id, encoder_settings_t* encoder_settings)
Command code (CMD): "gens" or 0x736E6567.
Request: (4 bytes)
INT32U CMD Command
Answer: (54 bytes)
INT32U CMD

Command (answer)

FLT32

MaxOperatingFrequency Max operation frequency (kHz). Data type: float.

FLT32

SupplyVoltageMin

Minimum supply voltage (V). Data type: float.

FLT32

SupplyVoltageMax

Maximum supply voltage (V). Data type: float.

FLT32

MaxCurrentConsumption Max current consumption (mA). Data type: float.

INT32U PPR

The number of counts per revolution

INT32U EncoderSettings

Encoder settings flags
0x001 - ENCSET_DIFFERENTIAL_OUTPUT (If flag is set the encoder has differential output, else
single ended output)
0x004 - ENCSET_PUSHPULL_OUTPUT (If flag is set the encoder has push-pull output, else open
drain output)
0x010 - ENCSET_INDEXCHANNEL_PRESENT (If flag is set the encoder has index channel, else
encoder hasn`t it)
0x040 - ENCSET_REVOLUTIONSENSOR_PRESENT (If flag is set the encoder has revolution sensor,
else encoder hasn`t it)
0x100 - ENCSET_REVOLUTIONSENSOR_ACTIVE_HIGH (If flag is set the revolution sensor active
state is high logic state, else active state is low logic state)

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Description:
Read encoder settings from EEPROM.
Command SHSI
result_t set_hallsensor_information (device_t id, const hallsensor_information_t* hallsensor_information)
Command code (CMD): "shsi" or 0x69736873.
Request: (70 bytes)
INT32U CMD

Command

CHAR

Manufacturer [16] Manufacturer. Max string length: 16 chars.

CHAR

PartNumber [24]

Series and PartNumber. Max string length: 24 chars.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set hall sensor information to EEPROM. Can be used by manufacturer only.
Command GHSI
result_t get_hallsensor_information (device_t id, hallsensor_information_t* hallsensor_information)
Command code (CMD): "ghsi" or 0x69736867.
Request: (4 bytes)
INT32U CMD Command

Page 257 / 345

Page 258 / 345

Answer: (70 bytes)
INT32U CMD

Command (answer)

CHAR

Manufacturer [16] Manufacturer. Max string length: 16 chars.

CHAR

PartNumber [24]

Series and PartNumber. Max string length: 24 chars.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Description:
Read hall sensor information from EEPROM.
Command SHSS
result_t set_hallsensor_settings (device_t id, const hallsensor_settings_t* hallsensor_settings)
Command code (CMD): "shss" or 0x73736873.
Request: (50 bytes)
INT32U CMD

Command

FLT32

MaxOperatingFrequency Max operation frequency (kHz). Data type: float.

FLT32

SupplyVoltageMin

Minimum supply voltage (V). Data type: float.

FLT32

SupplyVoltageMax

Maximum supply voltage (V). Data type: float.

FLT32

MaxCurrentConsumption Max current consumption (mA). Data type: float.

INT32U PPR

The number of counts per revolution

INT8U

Reserved (24 bytes)

Reserved [24]

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set hall sensor settings to EEPROM. Can be used by manufacturer only.
Command GHSS
result_t get_hallsensor_settings (device_t id, hallsensor_settings_t* hallsensor_settings)
Command code (CMD): "ghss" or 0x73736867.
Request: (4 bytes)
INT32U CMD Command
Answer: (50 bytes)
INT32U CMD

Command (answer)

FLT32

MaxOperatingFrequency Max operation frequency (kHz). Data type: float.

FLT32

SupplyVoltageMin

Minimum supply voltage (V). Data type: float.

FLT32

SupplyVoltageMax

Maximum supply voltage (V). Data type: float.

FLT32

MaxCurrentConsumption Max current consumption (mA). Data type: float.

INT32U PPR

The number of counts per revolution

INT8U

Reserved (24 bytes)

Reserved [24]

INT16U CRC

Checksum

Description:
Read hall sensor settings from EEPROM.
Command SGRI
result_t set_gear_information (device_t id, const gear_information_t* gear_information)

Page 258 / 345

Page 259 / 345

Command code (CMD): "sgri" or 0x69726773.
Request: (70 bytes)
INT32U CMD

Command

CHAR

Manufacturer [16] Manufacturer. Max string length: 16 chars.

CHAR

PartNumber [24]

Series and PartNumber. Max string length: 24 chars.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set gear information to EEPROM. Can be used by manufacturer only.
Command GGRI
result_t get_gear_information (device_t id, gear_information_t* gear_information)
Command code (CMD): "ggri" or 0x69726767.
Request: (4 bytes)
INT32U CMD Command
Answer: (70 bytes)
INT32U CMD

Command (answer)

CHAR

Manufacturer [16] Manufacturer. Max string length: 16 chars.

CHAR

PartNumber [24]

Series and PartNumber. Max string length: 24 chars.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Description:
Read gear information from EEPROM.
Command SGRS
result_t set_gear_settings (device_t id, const gear_settings_t* gear_settings)
Command code (CMD): "sgrs" or 0x73726773.
Request: (58 bytes)
INT32U CMD

Command

FLT32

ReductionIn

Input reduction coefficient. (Output = (ReductionOut / ReductionIn) * Input) Data type: float.

FLT32

ReductionOut

Output reduction coefficient. (Output = (ReductionOut / ReductionIn) * Input) Data type: float.

FLT32

RatedInputTorque

Max continuous torque (N m). Data type: float.

FLT32

RatedInputSpeed

Max speed on the input shaft (rpm). Data type: float.

FLT32

MaxOutputBacklash Output backlash of the reduction gear(degree). Data type: float.

FLT32

InputInertia

Equivalent input gear inertia (g cm2). Data type: float.

FLT32

Efficiency

Reduction gear efficiency (%). Data type: float.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set gear settings to EEPROM. Can be used by manufacturer only.

Page 259 / 345

Page 260 / 345

Command GGRS
result_t get_gear_settings (device_t id, gear_settings_t* gear_settings)
Command code (CMD): "ggrs" or 0x73726767.
Request: (4 bytes)
INT32U CMD Command
Answer: (58 bytes)
INT32U CMD

Command (answer)

FLT32

ReductionIn

Input reduction coefficient. (Output = (ReductionOut / ReductionIn) * Input) Data type: float.

FLT32

ReductionOut

Output reduction coefficient. (Output = (ReductionOut / ReductionIn) * Input) Data type: float.

FLT32

RatedInputTorque

Max continuous torque (N m). Data type: float.

FLT32

RatedInputSpeed

Max speed on the input shaft (rpm). Data type: float.

FLT32

MaxOutputBacklash Output backlash of the reduction gear(degree). Data type: float.

FLT32

InputInertia

Equivalent input gear inertia (g cm2). Data type: float.

FLT32

Efficiency

Reduction gear efficiency (%). Data type: float.

INT8U

Reserved [24]

Reserved (24 bytes)

INT16U CRC

Checksum

Description:
Read gear settings from EEPROM.
Command SACC
result_t set_accessories_settings (device_t id, const accessories_settings_t* accessories_settings)
Command code (CMD): "sacc" or 0x63636173.
Request: (114 bytes)

Page 260 / 345

Page 261 / 345

INT32U CMD

Command

CHAR

MagneticBrakeInfo [24]

The manufacturer and the part number of magnetic brake, the maximum string length is 24
characters.

FLT32

MBRatedVoltage

Rated voltage for controlling the magnetic brake (B). Data type: float.

FLT32

MBRatedCurrent

Rated current for controlling the magnetic brake (A). Data type: float.

FLT32

MBTorque

Retention moment (mN m). Data type: float.

INT32U MBSettings

Flags of magnetic brake settings
0x01 - MB_AVAILABLE (If flag is set the magnetic brake is available)
0x02 - MB_POWERED_HOLD (If this flag is set the magnetic brake is on when powered)

CHAR

TemperatureSensorInfo The manufacturer and the part number of the temperature sensor, the maximum string length: 24
[24]
characters.

FLT32

TSMin

The minimum measured temperature (degrees Celsius) Data type: float.

FLT32

TSMax

The maximum measured temperature (degrees Celsius) Data type: float.

FLT32

TSGrad

The temperature gradient (V/degrees Celsius). Data type: float.

INT32U TSSettings

Flags of temperature sensor settings.
0x07 - TS_TYPE_BITS (Bits of the temperature sensor type)
0x00 - TS_TYPE_UNKNOWN (Unknow type of sensor)
0x01 - TS_TYPE_THERMOCOUPLE (Thermocouple)
0x02 - TS_TYPE_SEMICONDUCTOR (The semiconductor temperature sensor)
0x08 - TS_AVAILABLE (If flag is set the temperature sensor is available)

INT32U LimitSwitchesSettings

Flags of limit switches settings.
0x01 - LS_ON_SW1_AVAILABLE (If flag is set the limit switch connnected to pin SW1 is available)
0x02 - LS_ON_SW2_AVAILABLE (If flag is set the limit switch connnected to pin SW2 is available)
0x04 - LS_SW1_ACTIVE_LOW (If flag is set the limit switch connnected to pin SW1 is triggered by a
low level on pin)
0x08 - LS_SW2_ACTIVE_LOW (If flag is set the limit switch connnected to pin SW2 is triggered by a
low level on pin)
0x10 - LS_SHORTED (If flag is set the Limit switches is shorted)

INT8U

Reserved [24]

INT16U CRC

Reserved (24 bytes)
Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Set additional accessories information to EEPROM. Can be used by manufacturer only.
Command GACC
result_t get_accessories_settings (device_t id, accessories_settings_t* accessories_settings)
Command code (CMD): "gacc" or 0x63636167.
Request: (4 bytes)
INT32U CMD Command
Answer: (114 bytes)

Page 261 / 345

Page 262 / 345

INT32U CMD

Command (answer)

CHAR

MagneticBrakeInfo [24]

The manufacturer and the part number of magnetic brake, the maximum string length is 24
characters.

FLT32

MBRatedVoltage

Rated voltage for controlling the magnetic brake (B). Data type: float.

FLT32

MBRatedCurrent

Rated current for controlling the magnetic brake (A). Data type: float.

FLT32

MBTorque

Retention moment (mN m). Data type: float.

INT32U MBSettings

Flags of magnetic brake settings
0x01 - MB_AVAILABLE (If flag is set the magnetic brake is available)
0x02 - MB_POWERED_HOLD (If this flag is set the magnetic brake is on when powered)

CHAR

TemperatureSensorInfo The manufacturer and the part number of the temperature sensor, the maximum string length: 24
[24]
characters.

FLT32

TSMin

The minimum measured temperature (degrees Celsius) Data type: float.

FLT32

TSMax

The maximum measured temperature (degrees Celsius) Data type: float.

FLT32

TSGrad

The temperature gradient (V/degrees Celsius). Data type: float.

INT32U TSSettings

Flags of temperature sensor settings.
0x07 - TS_TYPE_BITS (Bits of the temperature sensor type)
0x00 - TS_TYPE_UNKNOWN (Unknow type of sensor)
0x01 - TS_TYPE_THERMOCOUPLE (Thermocouple)
0x02 - TS_TYPE_SEMICONDUCTOR (The semiconductor temperature sensor)
0x08 - TS_AVAILABLE (If flag is set the temperature sensor is available)

INT32U LimitSwitchesSettings

Flags of limit switches settings.
0x01 - LS_ON_SW1_AVAILABLE (If flag is set the limit switch connnected to pin SW1 is available)
0x02 - LS_ON_SW2_AVAILABLE (If flag is set the limit switch connnected to pin SW2 is available)
0x04 - LS_SW1_ACTIVE_LOW (If flag is set the limit switch connnected to pin SW1 is triggered by a
low level on pin)
0x08 - LS_SW2_ACTIVE_LOW (If flag is set the limit switch connnected to pin SW2 is triggered by a
low level on pin)
0x10 - LS_SHORTED (If flag is set the Limit switches is shorted)

INT8U

Reserved [24]

INT16U CRC

Reserved (24 bytes)
Checksum

Description:
Read additional accessories information from EEPROM.

Bootloader commands
Command GBLV
result_t get_bootloader_version (device_t id, unsigned int* Major, unsigned int* Minor, unsigned int* Relea
se)
Command code (CMD): "gblv" or 0x766C6267.
Request: (4 bytes)
INT32U CMD Command
Answer: (10 bytes)
INT32U CMD

Command (answer)

INT8U

Major

Bootloader major version number

INT8U

Minor

Bootloader minor version number

INT16U Release Bootloader release version number
INT16U CRC

Checksum

Description:
Read controller's firmware version.

Page 262 / 345

Page 263 / 345

Command IRND
result_t get_init_random (device_t id, init_random_t* init_random)
Command code (CMD): "irnd" or 0x646E7269.
Request: (4 bytes)
INT32U CMD Command
Answer: (24 bytes)
INT32U CMD

Command (answer)

INT8U

key [16]

Random key.

INT8U

Reserved [2] Reserved (2 bytes)

INT16U CRC

Checksum

Description:
Read random number from controller.
Command GUID
result_t get_globally_unique_identifier (device_t id, globally_unique_identifier_t* globally_unique_identif
ier)
Command code (CMD): "guid" or 0x64697567.
Request: (4 bytes)
INT32U CMD Command
Answer: (40 bytes)
INT32U CMD

Command (answer)

INT32U UniqueID0

Unique ID 0.

INT32U UniqueID1

Unique ID 1.

INT32U UniqueID2

Unique ID 2.

INT32U UniqueID3

Unique ID 3.

INT8U

Reserved [18] Reserved (18 bytes)

INT16U CRC

Checksum

Description:
This value is unique to each individual die but is not a random value. This unique device identifier can be used to initiate secure boot
processes or as a serial number for USB or other end applications.
Command CHMT
result_t command_change_motor (device_t id, const command_change_motor_t* the_command_change_motor)
Command code (CMD): "chmt" or 0x746D6863.
Request: (22 bytes)
INT32U CMD

Command

INT8U

Motor

Motor number which it should be switch relay on [0..1]

INT8U

Reserved [15] Reserved (15 bytes)

INT16U CRC

Checksum

Answer: (4 bytes)
INT32U CMD Command (answer)
Description:
Change motor - command for switching output relay.

Controller error response types

Page 263 / 345

Page 264 / 345

ERRC
Answer: (4 bytes)
Code: "errc" or 0x63727265
INT32U "errc" Command error
Description:
Controller answers with "errc" if the command is either not recognized or cannot be processed and sets the correspoding bit in status
data structure.
ERRD
Answer: (4 bytes)
Code: "errd" or 0x64727265
INT32U "errd" Data error
Description:
Controller answers with "errd" if the CRC of the data section computed by the controller doesn't match the received CRC field and sets
the correspoding bit in status data structure.
ERRV
Answer: (4 bytes)
Code: "errv" or 0x76727265
INT32U "errv" Value error
Description:
Controller answers with "errv" if any of the values in the command are out of acceptable range and can not be applied. Inacceptable
value is replaced by a rounded, truncated or default value. Controller also sets the correspoding bit in status data structure.

Page 264 / 345

Page 265 / 345

6.3. 8SMC1-USBhF software compatibility
New motor controllers can be used with the software written for the 8SMC1-USBhF series. There are two options available to control
new motor controllers using 8SMC1-USBhF-compatible software:
1. Recommended. Use MicroSMC software with support for both 8SMC1-USBhF and new motor controllers. In this case MicroSMC
process will open all found motor controllers in exclusive mode to arbitrate access and it will be possible to control them through
USMCDLL, which uses MicroSMC.
Download MicroSMC with support for new motor controllers on the Software page.
2. Use USMCDLL/libximc compatibility library to control motor controllers without MicroSMC software. Use this option if you need to
simultaneously run MicroSMC and work with some motor controllers using libximc library.
Download USMCDLL/libximc compatibility library here.
The table below shows the mapping from 8SMC1-USBhF to new motor controller functions: first column lists USMCDLL library
functions, second column lists corresponding paragraph in 8SMC1-USBhF controller user's manual, third column contains this function
features in the migration library.
Function call

8SMC1New motor controller
USBhF

USMC_Init

7.5.3

Uses
libximc enumerate_devices,
get_enumerate_device_information,
get_enumerate_device_serial, get_device_count, get_device_name, open_device functions.
Queries all COM-ports present in the system.

USMC_GetState

7.5.4

Uses libximc get_status and get_engine_settings functions. AReset, EMReset, RotTrErr flags
in USMC_State structure are always set to false.

USMC_SaveParametersToFlash 7.5.5

Uses libximc command_save_settings function.

USMC_GetMode

7.5.6

Uses
libximc get_edges_settings,
get_power_settings,
get_control_settings,
get_ctp_settings, get_sync_out_settings functions. EMReset, ResetRT, SyncOUTR,
EncoderEn, EncoderInv, ResBEnc, ResEnc flags in USMC_Mode are always set to false,
SyncINOp flag is always set to true.

USMC_SetMode

7.5.7

Uses all functions used by USMC_GetMode and their "set_" equivalents. Ignores RotTeEn,
RotTrOp, ResetRT, SyncOUTR, SyncINOp, EncoderEn flags.

USMC_GetParameters

7.5.8

Uses
libximc get_secure_settings,
get_engine_settings,
get_move_settings,
get_feedback_settings,
get_power_settings,
get_control_settings,
get_ctp_settings,
get_home_settings, get_sync_out_settings functions. Returns zeroes in BTimeoutR,
BTimeoutD, MinP, MaxLoft, StartPos fields.

USMC_SetParameters

7.5.9

Uses all functions used by USMC_GetParameters and their "set_" equivalents. Ignores
BTimeoutR, BTimeoutD, MinP, MaxLoft, StartPos parameters.

USMC_GetStartParameters

7.5.10

Uses libximc get_move_settings, get_engine_settings functions. WSyncIN, SyncOUTR,
ForceLoft flags in USMC_StartParameters structure are always set to false.

USMC_Start

7.5.11

Uses
libximc get_move_settings,
get_engine_settings,
set_engine_settings, command_move functions.

USMC_Stop

7.5.12

Uses libximc command_stop function.

USMC_SetCurrentPosition

7.5.13

Uses libximc set_position function.

USMC_GetEncoderState

7.5.14

Uses libximc get_status function.

USMC_GetLastErr

7.5.15

Does not modify its arguments. Error status is indicated by the nonzero return code of the
corresponding USMC_ function.

USMC_Close

7.5.16

Uses libximc close_device function.

set_move_settings,

Migration library does not require and does not interact with background MicroSMC.exe process. It uses libximc.dll library to interface
with new motor controllers.
All composite USMC_ functions containing several libximc function calls terminate if any of the underlying libximc functions returns an
error. In this case controller may be left with partially saved settings. Nonzero return code of USMC_ functions is equal to the return
code of the libximc function which returned an error.
Application example: usmcdll_libximc_test.zip

Page 265 / 345

Page 266 / 345

6.4. Libximc library timeouts
A number of timeouts and wait times are used when working with XiLab program or your own application using libximc library to detect
errors and support robust controller operation. A list of times is provided below, together with reasons. Times are optimized for the
USB connection on a modern PC. It is important to take delays into account when designing your own signal transmission lines to avoid
erroneous timeouts.
Condition

Name

Time
milliseconds

Enumeration timeout. Happens if device type cannot be determined.

ENUMERATE_TIMEOUT_TIME

100

Port open timeout. Happens if library cannot open port.

DEFAULT_TIMEOUT_TIME

5000

Wait time when no data is received from device.

DEFAULT_TIMEOUT_TIME

5000

Wait time on device open.

RESET_TIME/2

50

Wait time from controller reset to device reappearance on firmware RESET_TIME*1.2
reflash.
DEFAULT_TIMEOUT_TIME

+

5120

Wait time on flash sector write.

FLASH_SECTIONWRITE_TIME

100

Reconnect timeout on flash update .

XISM_PORT_DETECT_TIME

60000

Page 266 / 345

in

Page 267 / 345

6.5. XILab scripts
XILab scripting language is implemented using QtScript,
which in turn is based on ECMAScript.
ECMAScript is the scripting language standardized by
Ecma International in the ECMA-262 specification and
ISO/IEC 16262.
QtScript (and, by extension, XILab) uses third edition
of the ECMAScript standard.

Brief description of the language
Data Types
ECMAScript supports nine primitive data types. Values of
type Reference, List, and Completion are used only as
intermediate results of expression evaluation and cannot
be stored as properties of objects. The rest of the types
are:
Undefined,
Null,
Boolean,
String,
Number,
Object.
Statements
Most common ECMAScript language statements are
summarized below:

6.5. XILab scripts
Brief description of the language
Data Types
Statements
Variable statements
Reserved words
Functions
Syntax highlighting
Additional XILab functions
XILab log
Script execution delay
New axis object creation
New file object creation
Creation of calibration structure
Get next serial
Wait for stop
libximc library functions
Examples
Cyclic movement script
A script which scans and writes data to the file
A script which moves the controller through the list of positions with
pauses
A script which enumerates all available axes and gets their coordinates
Bitmask example script

Name

Usage

Description

Block

{[]}

Several statements may be grouped into a
block using braces.

Variable
var 
declaration

Variables
keyword.

Empty
statement

Semicolon denotes an empty instruction. It
is not required to end a line with a
semicolon.

;

are

declared

using

"var"

Conditional execution is done using "if ...
else" keywords. If a condition is true, then
"if"-block instruction is executed, else an
"else"-block instruction is executed.

Conditional if () 
execution [ else  ]

Loop

Loops have several forms. A "do ... while
..." loop executes loop body and then
checks if condition is true or false to see
whether it should stop or continue running.
do  while ()
A "while ... do ..." loop repeatedly checks
while () 
the condition and executes loop body if it
for ([]; []; []) 
is true. A "for ..." loop executes an
initialization
statement
once,
then
executes an iterative statement and loop
body while the condition is true.

Return

return []

Stops function execution
expression as a result.

Exception

throw 

Generates or "throws" an exception, which
may be processed by the "try" statement
(see below).

try  catch () 
try  finally 
try  catch ()  finally 

Used together with exceptions. This
statement tries to execute its "try"-block.
If an exception is thrown in it, then a
"catch"-block is executed. Finally a
"finally"-block is executed unconditionally.
Either a "catch" or a "finally" block may be
omitted.

Try-catch
block

Variable statements

Page 267 / 345

and

returns

Page 268 / 345

Variables are declared using var keyword. A declared variable is placed within visibility scope that corresponds to the function in which
it is declared. If the variable is declared outside of functions, it is placed in the global visibility scope. Variable is created when the
function within which it was declared, or, if the variable is global, at the start of the application. When a variable is created it is
initialized with Undefined value. If a variable is created with initialization, the initialization does not occur in the moment of variable
creation, it happens when the string with the var statement executes.
Reserved words
The following words are the reserved keywords in the language and may not be used as identifiers:
break
case
catch
continue
default
delete
do

else
finally
for
function
if
in
instanceof

new
return
switch
this
throw
try
typeof

var
void
while
with

The following words are used as keywords in proposed extensions and are therefore reserved to allow
for the possibility of future adoption of those extensions:
abstract
boolean
byte
char
class
const
debugger
double

enum
export
extends
final
float
goto
implements
import

int
interface
long
native
package
private
protected
public

short
static
super
synchronized
throws
transient
volatile

Functions
Functions are objects in ECMAScript. Functions like any other objects can be stored in variables, objects and arrays, can be passed as
arguments to other functions and can be returned by functions. Functions, like any other objects may have properties. Essential specific
feature of functions is that they can be invoked.
In the application text, the most common way to define a function is:
function sum(arg1, arg2) { // a function which takes two parameters
return arg1 + arg2;
// and returns their sum
}

Syntax highlighting
Script window text has syntax highlighting. Its colors are:
Statement type

color

Arbitrary functions

purple

XILab functions

blue

Positive numbers

green

Negative numbers

red

Comments

grey

text example

The rest of the text black
During the script execution the background of line with the last executed command is changed to dark gray with update rate of once in
every 20 ms.

Additional XILab functions
This image shows XILab functions which are available from scripts, aside from standard built-in language functions.

Page 268 / 345

Page 269 / 345

XiLab functions
Green colored blocks denote functions which create objects,
yellow-colored blocks correspond to libximc functions,
the rest of the functions are colored blue.

new_calibration

new_file

file functions
open
close
size
seek
resize
remove
read
write

new_axis

libximc functions

libximc functions

axis functions

get_feedback_settings
get_home_settings
get_move_settings
get_engine_settings
get_entype_settings
...
<120+ functions total>

wait_for_stop

get_feedback_settings
get_home_settings
get_move_settings
get_engine_settings
get_entype_settings
...
<120+ functions total>

generic functions
log
msleep
wait_for_stop
get_next_serial

log(string text [, int loglevel]) – save text to the XILab log
msleep(int ms) - delay script execution
new_axis(int serial_number) - create new axis object
new_file(string filename) - create new file object
new_calibration(int A, int Microstep) - create calibration structure to pass to calibrated functions
get_next_serial(int serial) - get next serial out of an ordered list of opened controller serials
command_wait_for_stop(int refresh_period) - wait until controller stops moving
and all libximc library functions (see Programming guide)
Also, all constant values from the communication protocol are defined and can be used in scripts. Usage example.
XILab log
Logging is done by calling log(string text [, int loglevel] ) function.
This function adds the text line to the XILab log. If the second loglevel parameter is passed the message receives the appropriate
logging level and is displayed in corresponding color.
Loglevel Type
1

Error

2

Warning

3

Info

Example:
var x = 5;
log("x = " + x);
Function usage example
Note: It is not recommended to invoke functions that interact with XILab user interface (i.e. logging function) with a frequency of more
than once in 20 ms.
Script execution delay
Script is paused by calling the msleep(int ms) function, which suspends script execution for ms milliseconds.
Example:
msleep(200);
Function usage example.
New axis object creation
XILab multi-axis interface provides the ability to manage controllers via scripts. The difference from the single-axis case is that you
should specify the controller which receives the command. An "axis" object is introduced to abstract this concept. It has methods which
match the libximc library function names. Controllers are identified by their serial numbers.
Example:
var x = new_axis(123);
x.command_move(50);

Page 269 / 345

Page 270 / 345

In this example first line of the script creates an axis-type object with the variable name "x", which tries to use controller with the
serial number "123". If this controller is not connected, then the script will return an error and terminate. The second line of the script
sends a "move to position 50" command to this controller.
Function usage example.
New file object creation
XILab scripts can read from and write to files. To do this you need to create a "file" object, passing desired filename in its constructor.
File object has the following functions:
return_type
Function_name

Description

bool open()

Opens the file. File is opened in read-write mode if possible, in read-only mode otherwise.

void close()

Closes the file.

Number size()

Returns file size in bytes.

bool
pos)

Sets current position in file to pos bytes1.

bool
size)

seek(Number

resize(Number Resizes the file to size bytes. If size is less than current file size, then the file is truncated, if it is greater than
current file size, then the file is padded with zero bytes.

bool remove()

Removes the file.

String read(Number
Reads up to maxsize bytes from the file and returns result as a string. Data is read in utf-8 Unicode encoding.
maxsize)
Number write(String Writes up to maxsize btyes to the file from the string. Data is written in utf-8 unicode encoding, end-of-line
s, Number maxsize)
character should be set by user. Returns amount of written bytes or -1 if an error occurred.
All file functions which return bool type, return "true" on success and "false" on failure.
Use "/" symbol as path separator, this works on all systems (Windows/Linux/Mac).
1 Seeking beyond the end of a file: If the position is beyond the end of a file, then seek() shall not immediately extend the file. If a

write is performed at this position, then the file shall be extended. The content of the file between the previous end of file and the
newly written data is UNDEFINED and varies between platforms and file systems.
Example:
var winf = new_file("C:/file.txt"); // An example of file name and path on Windows
var linf = new_file("/home/user/Desktop/file.txt"); // An example of file name and path on Linux
var macf = new_file("/Users/macuser/file.txt"); // An example of file name and path on Mac
var f = winf; // Pick a file name
if (f.open()) { // Try to open the file
f.write( "some text" ); // If successful, then write desired data to the file
f.close(); // Close the file
} else { // If file open failed for some reason
log( "Failed opening file" ); // Log an error
}
Function usage example.
Creation of calibration structure
new_calibration(double A, int Microstep) function takes as a parameter a floating point number A, which sets the ratio of user units to
motor steps, and microstep division mode, which was either read earlier from MicrostepMode field of get_engine_settings() return
type, or set by a MICROSTEP_MODE_ constant. This function returns calibration_t structure, which should be passed to calibrated
get_/set_ functions to get or set values in user units. The following two forms are functionally equivalent:
// create calibration: type 1
var calb = new_calibration(c1, c2);
// create calibration: type 2
var calb = new Object();
calb.A = c1;
calb.MicrostepMode = c2;
Function usage example.
Get next serial

Page 270 / 345

Page 271 / 345

get_next_serial(int serial) function takes as a parameter an integer number and returns the smallest serial from a sorted list of opened
controller serials which is strictly greater than the parameter. If there are no such serials a zero is returned.
This function is a convenient shortcut for automatic creation of "axis" type objects without hardcoded serial numbers.
Example:
var first_serial = get_next_serial(0);
var x = new_axis(first_serial);
var y = new_axis(get_next_serial(first_serial));
In this example in the first line we obtain a serial, in the second line an axis-type object is created, in the third line we get the next
serial and create an axis for it.
Function usage example.
Wait for stop
The command_wait_for_stop(int refresh period) script function waits until the controller stops movement, that is, until the
MVCMD_RUNNING bit in the MvCmdSts member of the structure returned by the get_status() function becomes unset.
command_wait_for_stop script function uses command_wait_for_stop libximc function and takes as a paramater an integer denoting
time delay in milliseconds between successive queries of controller state.
This function is also present as a method of an "axis"-type object.
Function usage example.
libximc library functions
Libximc library functions with "get_" prefix read settings from the controller and return the corresponding settings structure. Libximc
library functions with "set_" prefix take as a parameter a settings data structure and write these settings to the controller. There are
two ways to set data structure contents:
1. call the corresponding get-function and modify required fields
// set settings: type 1
var m = get_move_settings();
m.Speed = 100;
set_move_settings(m);
2. create an Object and set all of its properties that are present as members of the data structure (case-sensitive).
// set settings: type 2
var m = new Object;
m.Speed = 100;
m.uSpeed = 0;
m.Accel = 300;
m.Decel = 500;
m.AntiplaySpeed = 10;
m.uAntiplaySpeed = 0;
set_move_settings(m);
Please note, that in the first case controller receives an additional command (sent by the get-function before the set-). In the second
case one should initialize all object properties corresponding to structure members. Any missing property will be initialized with zero.
Any property that does not match a structure member name will be ignored. Any property with non-matching type will be typecast
according to EcmaScript rules. All data structures are described in Communication protocol specification chapter of the manual.
Function usage example.

Examples
This section contains examples of typical tasks which can be easily automated by XILab scripts.
Cyclic movement script
var first_border = -10; // first border coordinate in mm
var second_border = 10; // second border coordinate in mm
var mm_per_step = 0.005; // steps to distance translation coefficient
var delay = 100; // delay in milliseconds
var calb = new_calibration(mm_per_step, get_engine_settings().MicrostepMode); // create calibration structu
re
command_stop(); // send STOP command (does immediate stop)
command_zero(); // send ZERO command (sets current position and encoder value to zero)
while (1) { // infinite loop
command_move_calb(first_border, calb); // move towards one border
command_wait_for_stop(delay); // wait until controller stops moving
command_move_calb(second_border, calb); // move towards another border
command_wait_for_stop(delay); // wait until controller stops moving
}

Page 271 / 345

Page 272 / 345

A script which scans and writes data to the file
var start = 0; // Starting coordinate in steps
var step = 10; // Shift amount in steps
var end = 100; // Ending coordinate in steps
var
var
var
var

speed
accel
decel
delay

=
=
=
=

300; // maximum movement speed in steps / second
100; // acceleration value in steps / second^2
100; // deceleration value in steps / second^2
100;

var m = get_move_settings(); // read movement settings from the controller
m.Speed = speed; // set movement speed
m.Accel = accel; // set acceleration
m.Decel = decel; // set deceleration
set_move_settings(m); // write movement settings into the controller
var f = new_file("C:/a.csv"); // Choose a file name and path
f.open(); // Open a file
f.seek( 0 ); // Seek to the beginning of the file
command_move(start); // Move to the starting position
command_wait_for_stop(delay); // Wait until controller stops moving
while (get_status().CurPosition < end) {
f.write( get_status().CurPosition + "," + get_chart_data().Pot + "," + Date.now() + "\n" ); // Get curren
t position, potentiometer value and date and write them to file
command_movr(step); // Move to the next position
command_wait_for_stop(delay); // Wait until controller stops moving
}
f.close(); // Close the file
A script which moves the controller through the list of positions with pauses
var axis = new_axis(get_next_serial(0)); // Use first available controller
var x; // A helper variable, represents coordinate
var ms; // A helper variable, represents wait time in milliseconds
var f = new_file("./move_and_sleep.csv"); // Choose a file name and path; this script uses a file from exam
ples in the installation directory
f.open(); // Open a file
while ( str = f.read(4096) ) { // Read file contents string by string, assuming each string is less than 4
KiB long
var ar = str.split(","); // Split the string into substrings with comma as a separator; the result is an
array of strings
x = ar[0]; // Variable assignment
ms = ar[1]; // Variable assignment
log( "Moving to coordinate " + x ); // Log the event
axis.command_move(x); // Move to the position
axis.command_wait_for_stop(100); // Wait until the movement is complete
log( "Waiting for " + ms + " ms" ); // Log the event
msleep(ms); // Wait for the specified amount of time
}
log ( "The end." );
f.close(); // Close the file
move_and_sleep.csv - a sample file for use with the above example
A script which enumerates all available axes and gets their coordinates
var i = 0; // Declare loop iteration variable
var serial = 0; // Declare serial number variable
var axes = Array(); // Declare axes array
while (true) { // The loop
serial = get_next_serial(serial); // Get next serial
if (serial == 0) // If there are no more controllers then...
break; // ...break out of the loop
var a = new Object(); // Create an object
a.serial = serial; // Assign serial number to its "serial" property
a.handle = new_axis(serial); // Assign new axis object to its "handle" property
axes[i] = a; // Add it to the array
i++; // Increment counter
}
for (var k=0; k < axes.length; k++) { // Iterate through array elements
log ( "Axis with S/N " + axes[k].serial + " is in position " + axes[k].handle.get_status().CurPosition );
// For each element print saved axis serial and call a get_status() function
}

Page 272 / 345

Page 273 / 345

Bitmask example script
/*
Bitmask example script
*/
var a = new_axis(get_next_serial(0)); // take first found axis
var gets = a.get_status(); // read status once and reuse it
var gpio = gets.GPIOFlags;
var left = STATE_LEFT_EDGE;
var right = STATE_RIGHT_EDGE;
var mask = left | right;
var result = gpio & mask;
log( to_binary(left) + " = left limit switch flag" );
log( to_binary(right) + " = right limit switch flag" );
log( to_binary(mask) + " = OR operation on flags gives the mask" );
log( to_binary(gpio) + " = gpio state" );
log( to_binary(result) + " = AND operation on state and mask gives result" );
if ( result ) {
log("At least one limit switch is on");
} else {
log("Both limit switches are off");
}
// Binary representation function
function to_binary(i)
{
bits = 32;
x = i >>> 0; // coerce to unsigned in case we need to print negative ints
str = x.toString(2); // the binary representation string
return (repeat("0", bits) + str).slice (-bits); // pad with zeroes and return
}
// String repeat function
function repeat(str, times)
{
var result="";
var pattern=str;
while (times > 0) {
if (times&1) {
result+=pattern;
}
times>>=1;
pattern+=pattern;
}
return result;
}

Page 273 / 345

Page 274 / 345

7. Files
1. Configuration files
2. Software

Page 274 / 345

Page 275 / 345

7.1. Configuration files
1.
2.
3.
4.
5.
6.
7.
8.

Translation Stages
Rotation Stages
Vertical Translation Stages
Screws and Actuators
Motorized Goniometers
Mirror Mounts
Motorized Attenuators
Motorized Iris Diaphragms

Page 275 / 345

Page 276 / 345

Translation Stages
8MT160 - Motorized Delay Line

8MT295 - Long-Travel Motorized Linear Stages

8MT195 - Long-Travel Motorized Linear Stages

8MT167 - Motorized Translation Stage

8MT173 - Motorized Translation Stages

8MT173DC - Motorized Translation Stages

8MT50 - Motorized Translation Stages

8MT30 - Narrow Motorized Translation Stages

8MT175 - Motorized Translation Stages

8MT177 - Motorized Translation Stage

8MT184 - Motorized Translation Stage

8MT193 - Motorized Translation Stage

Page 276 / 345

Page 277 / 345

8MT200 - Motorized Translation Stages

8MTF - Motorized XY Scanning Stage

8MTF2 - Motorized Fiber Coupling Stage

8MTFV - Motorized Translation Stage

8MT60 - Motorized Translation Stage

Page 277 / 345

Page 278 / 345

8MT160 - Motorized Delay Line
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner Motor

Encoder

Brake

NoEnc

Accessories Peripherals Attenuator Controller XILab

8MT160300

300

mm

8MT160300.cfg

8MT160

4247R

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT160300MEn1

300

mm

8MT160300MEn1.cfg

8MT160

4247R HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 278 / 345

Page 279 / 345

8MT295 - Long-Travel Motorized Linear Stages
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MT295X240-2.5DC

240

mm

8MT295X240-2.5DC.cfg

8MT2952.5

MaxonHEDL5540 NoBrake
370355

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT295X340-2.5

340

mm

8MT295X3402.5.cfg

8MT2952.5

5918-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT295X540-4

540

mm

8MT295X540-4.cfg

8MT295-4

5918-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT295X740-5

740

mm

8MT295X- 8MT295-55918-R
740-5.cfg
740

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT295X840-10

840

mm

8MT295X84010.cfg

5918-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT295X1040-5

1040

mm

8MT295X8MT295-510405918-R
1040
5.cfg

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT295Z340-2.5

340

mm

8MT295Z3402.5.cfg

8MT2952.5

5918-R

NoEnc

BRAKEAB41

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT295Z540-4

540

mm

8MT295Z540-4.cfg

8MT295-4

5918-R

NoEnc

BRAKEAB41

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT295Z740-5

740

mm

8MT295Z- 8MT295-55918-R
740-5.cfg
740

NoEnc

BRAKEAB41

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT295Z840-10

840

mm

8MT295Z84010.cfg

NoEnc

BRAKEAB41

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT29510

8MT29510

5918-R

Page 279 / 345

Page 280 / 345

8MT195 - Long-Travel Motorized Linear Stages
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MT195X340-2.5

340

mm

8MT195X3402.5.cfg

8MT1952.5

5918-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT195X540-4

540

mm

8MT195X540-4.cfg

8MT195-4

5918-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT195X540-10

540

mm

8MT195X54010.cfg

8MT19510

5918-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT195X740-5

740

mm

8MT195X- 8MT195-55918-R
740-5.cfg
740

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT195X840-10

840

mm

8MT195X84010.cfg

8MT19510

5918-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT195X1040-10

1040

mm

8MT195X104010.cfg

8MT19510

5918-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT195Z240-2.5DC

240

mm

8MT195Z240-2.5DC.cfg

8MT1952.5

MaxonBRAKEHEDL9140
370355
AB41

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT195Z240-2.5

240

mm

8MT195Z2402.5.cfg

8MT1952.5

5918-R

NoEnc

BRAKEAB41

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT195Z340-2.5

340

mm

8MT195Z3402.5.cfg

8MT1952.5

5918-R

NoEnc

BRAKEAB41

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT195Z540-4

540

mm

8MT195Z540-4.cfg

8MT195-4

5918-R

NoEnc

BRAKEAB41

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT195Z740-5

740

mm

8MT195Z- 8MT195-55918-R
740-5.cfg
740

NoEnc

BRAKEAB41

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT195Z840-10

840

mm

8MT195Z84010.cfg

NoEnc

BRAKEAB41

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT19510

5918-R

Page 280 / 345

Page 281 / 345

8MT167 - Motorized Translation Stage
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MT167100

100

mm

8MT167100.cfg

8MT167

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167100-28

100

mm

8MT167100-28.cfg

8MT167

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167100C28

100

mm

8MT167100C28.cfg

8MT167

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167S100

100

mm

8MT167S100.cfg

8MT167

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167S100-28

100

mm

8MT167S100-28.cfg

8MT167

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167S100C28

100

mm

8MT167S100C28.cfg

8MT167

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT16725BS1

25

mm

8MT16725BS1.cfg

8MT167BS

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT16725BS1MEn1

25

mm

8MT16725BS1MEn1.cfg

8MT167BS

28R

HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT16725LS

25

mm

8MT16725LS.cfg

8MT167LS

28R

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT16725LS-MEn1

25

mm

8MT16725LSMEn1.cfg

8MT167LS

28R

HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167M25BS1

25

mm

8MT167M25BS1.cfg

8MT167BS

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167M25LS

25

mm

8MT167M25LS.cfg

8MT167LS

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167S25BS1

25

mm

8MT167S25BS1.cfg

8MT167BS

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167S25LS

25

mm

8MT167S25LS.cfg

8MT167LS

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167S25LS-MEn1

25

mm

8MT167S25LSMEn1.cfg

8MT167LS

28R

HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167SV100-VSS42

100

mm

8MT167SV100VSS42.cfg

8MT167

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167V100-VSS42

100

mm

8MT167V100VSS42.cfg

8MT167

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167MV25LSVSS42

25

mm

8MT167MV25LSVSS42.cfg

8MT167

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167SV25LSVSS42

25

mm

8MT167SV25LSVSS42.cfg

8MT167

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT167V25LSVSS42

25

mm

8MT167V25LSVSS42.cfg

8MT167

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

NoEnc

Page 281 / 345

Page 282 / 345

8MT173 - Motorized Translation Stages
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT173-10

10

mm

8MT17310.cfg

8MT173

28R

8MT17310-MEn1

10

mm

8MT17310MEn1.cfg

8MT173

28R

8MT173-20

20

mm

8MT17320.cfg

8MT173

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT17320-E3

20

mm

8MT17320-E3.cfg

8MT173

28R

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT173D20-E3

20

mm

8MT173D20-E3.cfg

8MT173

28R

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT173D220-E3

20

mm

8MT173D220-E3.cfg

8MT173

28R

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT17320-50-E3

20

mm

8MT17320-50E3.cfg

8MT173

28R

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT17320-1-28SE3

20

mm

8MT17320-1-28SE3.cfg

8MT173

28S

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT17320-E4

20

mm

8MT17320-E4.cfg

8MT173

28R

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT17320-MEn1

20

mm

8MT17320MEn1.cfg

8MT173

28R

HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT173-25

25

mm

8MT17325.cfg

8MT173

28R

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT17325-MEn1

25

mm

8MT17325MEn1.cfg

8MT173

28R

HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT173-30

30

mm

8MT17330.cfg

8MT173

28R

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT17330-MEn1

30

mm

8MT17330MEn1.cfg

8MT173

28R

HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT173V10-VSS42

10

mm

8MT173V10VSS42.cfg

8MT173V

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT173V20-VSS42

20

mm

8MT173V20VSS42.cfg

8MT173V

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT173V25-VSS42

25

mm

8MT173V25VSS42.cfg

8MT173V

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT173V30-VSS42

30

mm

8MT173V30VSS42.cfg

8MT173V

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

NoEnc

NoEnc

Page 282 / 345

Page 283 / 345

8MT173DC - Motorized Translation Stages
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner

Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller

XILab

8MT17310DCE2

10

mm

8MT17310DCE2.cfg

8MT173DCE2

MaxonEncMRtypeS118512NoBrake
R
R

NoAcc

Buttons

NoAtten

XismusbDef XIDefDC

8MT17320DCE2

20

mm

8MT17320DCE2.cfg

8MT173DCE2

MaxonEncMRtypeS118512NoBrake
R
R

NoAcc

Buttons

NoAtten

XismusbDef XIDefDC

8MT17325DCE2

25

mm

8MT17325DCE2.cfg

8MT173DCE2

MaxonEncMRtypeS118512NoBrake
R
R

NoAcc

Buttons

NoAtten

XismusbDef XIDefDC

8MT17330DCE2

30

mm

8MT17330DCE2.cfg

8MT173DCE2

MaxonEncMRtypeS118512NoBrake
R
R

NoAcc

Buttons

NoAtten

XismusbDef XIDefDC

Page 283 / 345

Page 284 / 345

8MT50 - Motorized Translation Stages
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner

Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50100BS1

100

mm

8MT50100BS1.cfg

8MT50

4247R

8MT50100BS1MEn1

100

mm

8MT50100BS1MEn1.cfg

8MT50

4247R

8MT50100XY

100

mm

8MT50100XY.cfg

8MT50

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50100XYZ

100

mm

8MT50100XYZ.cfg

8MT50

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50150BS1

150

mm

8MT50150BS1.cfg

8MT50

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50150BS1MEn1

150

mm

8MT50150BS1MEn1.cfg

8MT50

4247R

HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50150XY

150

mm

8MT50150XY.cfg

8MT50

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50150XYZ

150

mm

8MT50150XYZ.cfg

8MT50

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50200BS1

200

mm

8MT50200BS1.cfg

8MT50

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50200BS1MEn1

200

mm

8MT50200BS1MEn1.cfg

8MT50

4247R

HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50200XY

200

mm

8MT50200XY.cfg

8MT50

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50200XYZ

200

mm

8MT50200XYZ.cfg

8MT50

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50Z100BS1

100

mm

8MT50Z100BS1.cfg

8MT50

ST4118K2V17690

NoEnc

BRAKEBKE-0405

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50Z150BS1

150

mm

8MT50Z150BS1.cfg

8MT50

ST4118K2V17690

NoEnc

BRAKEBKE-0405

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT50Z200BS1

200

mm

8MT50Z200BS1.cfg

8MT50

ST4118K2V17690

NoEnc

BRAKEBKE-0405

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 284 / 345

Page 285 / 345

8MT30 - Narrow Motorized Translation Stages
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner

Motor

Encoder

Brake

8MT3050

50

mm

8MT3050.cfg

8MT30

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef

XIDef

8MT3050-MEn1

50

mm

8MT3050MEn1.cfg

8MT30

28R

HEDM5500R

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef

XIDef

8MT3050DCE

50

mm

8MT3050DCE.cfg

8MT30DC

Maxon339152-R

EncMRtypeMLNoBrake
R

NoAcc

Buttons

NoAtten

XismusbDef XIDefDC

8MT30V50VSS42

50

mm

8MT30V50VSS42.cfg

8MT30V

VSS42-R

8MT30V50DCE

50

mm

8MT30VFAULHABER8MT30VDC
50DCE.cfg
1524T006SR

Accessories Peripherals Attenuator Controller

XILab

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef

IE2-16

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefDC

Page 285 / 345

XIDef

Page 286 / 345

8MT175 - Motorized Translation Stages
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MT175100

100

mm

8MT175100.cfg

8MT175

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT175100-E3

100

mm

8MT175100E3.cfg

8MT175

4247R

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT175100-MEn1

100

mm

8MT175100MEn1.cfg

8MT175

4247R HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT175150

150

mm

8MT175150.cfg

8MT175

4247R

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT175150-MEn1

150

mm

8MT175150MEn1.cfg

8MT175

4247R HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT175200

200

mm

8MT175200.cfg

8MT175

4247R

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT175200-MEn1

200

mm

8MT175200MEn1.cfg

8MT175

4247R HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT17550

50

mm

8MT17550.cfg

8MT175

4247R

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT17550-MEn1

50

mm

8MT17550MEn1.cfg

8MT175

4247R HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT175V100VSS42

100

mm

8MT175V100VSS42.cfg

8MT175V

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT175V150VSS42

150

mm

8MT175V150VSS42.cfg

8MT175V

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT175V200VSS42

200

mm

8MT175V200VSS42.cfg

8MT175V

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT175V50-VSS42

50

mm

8MT175V50VSS42.cfg

8MT175V

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

NoEnc

NoEnc

NoEnc

Page 286 / 345

Page 287 / 345

8MT177 - Motorized Translation Stage
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner Motor Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MT177100

100

mm

8MT177100.cfg

8MT177

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT177100-E4

100

mm

8MT177100-E4.cfg

8MT177

4247R

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT177100XY

100

mm

8MT177100XY.cfg

8MT177

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT177100XYZ

100

mm

8MT177100XYZ.cfg

8MT177

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT177100-28

100

mm

8MT177100-28.cfg

8MT177

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT17710028XY

100

mm

8MT17710028XY.cfg

8MT177

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT17710028XYZ

100

mm

8MT17710028XYZ.cfg

8MT177

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 287 / 345

Page 288 / 345

8MT184 - Motorized Translation Stage
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner

Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller

XILab

20-Rev

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef

FAULHABERIE2-256 NoBrake
1524T006SR

NoAcc

Buttons

NoAtten

XismusbDef XIDefDC

8MT18413

13

mm

8MT18413.cfg

8MT184

8MT18413DC

13

mm

8MT18413DC.cfg

8MT184DC

8MT18413XY

13

mm

8MT18413XY.cfg

8MT184

20-Rev

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef

XIDef

8MT18413XYZ

13

mm

8MT18413XYZ.cfg

8MT184

20-Rev

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef

XIDef

8MT184V13DC

13

mm

8MT184VFAULHABER8MT184DCV
13DC.cfg
1524T006SR

IE2-16

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefDC

Page 288 / 345

XIDef

Page 289 / 345

8MT193 - Motorized Translation Stage
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner Motor Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MT193100

100

mm

8MT193100.cfg

8MT193

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT193100-E4DS

100

mm

8MT193100-E4DS.cfg

8MT193

4247R

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 289 / 345

Page 290 / 345

8MT200 - Motorized Translation Stages
Update: 15 March 2018
Part
Travel
Units
number range
8MT200100

100

mm

Profile
8MT200100.cfg

Positioner Motor Encoder
8MT200

4247R

NoEnc

Brake

Accessories Peripherals Attenuator Controller XILab

NoBrake

Page 290 / 345

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 291 / 345

8MTF - Motorized XY Scanning Stage
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner Motor Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MTF102LS05

102

mm

8MTF102LS05.cfg

8MTF-102

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MTF75LS05

75

mm

8MTF75LS05.cfg

8MTF-75

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MTF75LS1

75

mm

8MTF75LS1.cfg

8MTF-75-2

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 291 / 345

Page 292 / 345

8MTF2 - Motorized Fiber Coupling Stage
Update: 15 March 2018
Part
Travel
Units
number range
8MTF2

2

mm

Profile
8MTF2.cfg

Positioner Motor Encoder
8MTF2

28

NoEnc

Brake

Accessories Peripherals Attenuator Controller XILab

NoBrake

Page 292 / 345

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 293 / 345

8MTFV - Motorized Translation Stage
Update: 15 March 2018
Part
number
8MTFV75_40LS0542.3

Travel
Units
range
40

mm

Profile
8MTFV75_40LS0542.3.cfg

Positioner Motor Encoder

8MTFV

D423

NoEnc

Brake

NoBrake

Page 293 / 345

Accessories Peripherals Attenuator Controller XILab

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 294 / 345

8MT60 - Motorized Translation Stage
Update: 15 March 2018
Part
Travel
Units
number range

Profile

8MT60200

200

mm

8MT60200.cfg

8MT60

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MT60V200

200

mm

8MT60V200.cfg

8MT60V

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Positioner Motor Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

Page 294 / 345

Page 295 / 345

Rotation Stages
8MR151 - Motorized Rotation Stages

8MR170 - Motorized Rotation Stages

8MR174 - Motorized Rotation Stage

8MR190 - Motorized Rotation Stage

8MR191 - Motorized Rotation Stage

8MRB250 - Large Motorized Rotation Stage

8MRU - Universal Motorized Rotation Stages

8MPR16-1 - Motorized Polarizer Rotator

8MRH240 - Large High Capacity Rotary Stage

Page 295 / 345

Page 296 / 345

8MR151 - Motorized Rotation Stages
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller

XILab

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

HEDM5500 NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR151-1

360

deg

8MR1511.cfg

8MR151

28

8MR1511-MEn1

360

deg

8MR1511MEn1.cfg

8MR151

28

8MR15130

360

deg

8MR15130.cfg

8MR151

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR15130-E4

360

deg

8MR15130-E4.cfg

8MR151

28

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR15130-MEn1

360

deg

8MR15130MEn1.cfg

8MR151

28

HEDM5500 NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR151E1

360

deg

8MR151E1.cfg

8MR151

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR151E30

360

deg

8MR151E30.cfg

8MR151

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR15130-E3

360

deg

8MR15130-E3.cfg

8MR151

28

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

Page 296 / 345

Page 297 / 345

8MR170 - Motorized Rotation Stages
Update: 15 March 2018
Part
Travel
Units
number range
8MR170190

6

deg

Profile
8MR170190.cfg

Positioner Motor Encoder
8MR170

28

NoEnc

Brake

Accessories Peripherals Attenuator Controller

NoBrake

Page 297 / 345

NoAcc

Buttons

NoAtten

XILab

XismusbDef XIDefRot

Page 298 / 345

8MR174 - Motorized Rotation Stage
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller

XILab

8MR17411-20

360

deg

8MR17411-20.cfg

8MR174

20

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR17411-28

360

deg

8MR17411-28.cfg

8MR174

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR17411-28-E4

360

deg

8MR17411-28E4.cfg

8MR174

28

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR17411-28S

360

deg

8MR17411-28S.cfg

8MR174

28S

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR17411-28-E3

360

deg

8MR17411-28E3.cfg

8MR174

28

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR17411-28S-E3

360

deg

8MR17411-28SE3.cfg

8MR174

28S

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR17411-28MEn1

360

deg

8MR17411-28MEn1.cfg

8MR174

28

HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR174E11-20

360

deg

8MR174E11-20.cfg

8MR174

20

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR174E11-28

360

deg

8MR174E11-28.cfg

8MR174

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR174E11-28S

360

deg

8MR174E11-28S.cfg

8MR174

28S

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR174E11-28MEn1

360

deg

8MR174E11-28MEn1.cfg

8MR174

28

HEDM5500R NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR174EV11-VSS42

360

deg

8MR174EV11VSS42.cfg

8MR174V

VSS42

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR174V11-VSS42

360

deg

8MR174V11VSS42.cfg

8MR174V

VSS42

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

Page 298 / 345

Page 299 / 345

8MR190 - Motorized Rotation Stage
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller

XILab

8MR190-228

360

deg

8MR190-228.cfg

8MR190

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190-228-E4

360

deg

8MR190-228-E4.cfg

8MR190

28

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190-2WH-28-E3

360

deg

8MR190-2WH-28E3.cfg

8MR190

28

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190-228-MEn1

360

deg

8MR190-228MEn1.cfg

8MR190

28

HEDM5500

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190-24233

360

deg

8MR190-24233.cfg

8MR190

4233

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190-24247

360

deg

8MR190-24247.cfg

8MR190

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190-2ZSS43

360

deg

8MR190-2ZSS43.cfg

8MR190

ZSS43

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190V2-VSS42

360

deg

8MR190V2VSS42.cfg

8MR190V

VSS42R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190E2-28

360

deg

8MR190E2-28.cfg

8MR190

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190E2-28-E3

360

deg

8MR190E2-28E3.cfg

8MR190

28

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190-228-E3

360

deg

8MR190-228-E3.cfg

8MR190

28

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190E2-4233

360

deg

8MR190E2-4233.cfg

8MR190

4233

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190E2-4247

360

deg

8MR190E2-4247.cfg

8MR190

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190E2-ZSS43

360

deg

8MR190E2ZSS43.cfg

8MR190

ZSS43

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190EV2-VSS42

360

deg

8MR190EV2VSS42.cfg

8MR190V

VSS42

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR19090-59

360

deg

8MR19090-59.cfg

8MR19090-59

5918-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR19090-59MEn1

360

deg

8MR19090-59MEn1.cfg

8MR19090-59

5918-R

HEDM5500R

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR19090-4247

360

deg

8MR190904247.cfg

8MR19090-4247

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR19090-4247MEn1

360

deg

8MR19090-4247MEn1.cfg

8MR19090-4247

4247R

HEDM5500R

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190V90-VSS43

360

deg

8MR190V90VSS43.cfg

8MR19090-VSS43

VSS43

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR190-2DCE

360

deg

8MR190-2- 8MR190-2- MaxonEncMRtypeML NoBrake
DCE.cfg
DCE
339152

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

Page 299 / 345

Page 300 / 345

8MR191 - Motorized Rotation Stage
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner Motor Encoder

Brake

Accessories Peripherals Attenuator Controller

XILab

8MR191-128

360

deg

8MR191-128.cfg

8MR191

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191-14233

360

deg

8MR191-14233.cfg

8MR191

4233

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191-14247

360

deg

8MR191-14247.cfg

8MR191

4247

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191-1ZSS43

360

deg

8MR191-1ZSS43.cfg

8MR191

ZSS43

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191-14209-E4

360

deg

8MR191-14209E4.cfg

8MR191

4209

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR19130-28

360

deg

8MR19130-28.cfg

8MR191

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR19130-4233

360

deg

8MR191304233.cfg

8MR191

4233

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR19130-4247

360

deg

8MR191304247.cfg

8MR191

4247

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR19130-4209E4

360

deg

8MR19130-4209E4.cfg

8MR191

4209

RevS

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR19130-ZSS43

360

deg

8MR19130ZSS43.cfg

8MR191

ZSS43

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191-28

360

deg

8MR19128.cfg

8MR191

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR1914233

360

deg

8MR1914233.cfg

8MR191

4233

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR1914247

360

deg

8MR1914247.cfg

8MR191

4247

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191ZSS43

360

deg

8MR191ZSS43.cfg

8MR191

ZSS43

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191E1-28

360

deg

8MR191E1-28.cfg

8MR191

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191E1-4233

360

deg

8MR191E1-4233.cfg

8MR191

4233

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191E1-4247

360

deg

8MR191E1-4247.cfg

8MR191

4247

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191E1-ZSS43

360

deg

8MR191E1ZSS43.cfg

8MR191

ZSS43

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191E30-28

360

deg

8MR191E30-28.cfg

8MR191

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191E30-4233

360

deg

8MR191E304233.cfg

8MR191

4233

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191E30-4247

360

deg

8MR191E304247.cfg

8MR191

4247

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191E30-ZSS43

360

deg

8MR191E30ZSS43.cfg

8MR191

ZSS43

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191E28

360

deg

8MR191E28.cfg

8MR191

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191E4233

360

deg

8MR191E4233.cfg

8MR191

4233

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191E4247

360

deg

8MR191E4247.cfg

8MR191

4247

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

Page 300 / 345

Page 301 / 345

8MR191EZSS43

360

deg

8MR191EZSS43.cfg

8MR191

ZSS43

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191V1-VSS42

360

deg

8MR191V1VSS42.cfg

8MR191V

VSS42

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191V30-VSS42

360

deg

8MR191V30VSS42.cfg

8MR191V

VSS42

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191VVSS42

360

deg

8MR191VVSS42.cfg

8MR191V

VSS42

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191EV1-VSS42

360

deg

8MR191EV1VSS42.cfg

8MR191V

VSS42

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191EV30-VSS42

360

deg

8MR191EV30VSS42.cfg

8MR191V

VSS42

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MR191EVVSS42

360

deg

8MR191EVVSS42.cfg

8MR191V

VSS42

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

Page 301 / 345

Page 302 / 345

8MRB - Large Motorized Rotation Stage
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller

XILab

8MRB240152-59

360

deg

8MRB24015259.cfg

8MRB240

5918

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MRB240152-59D

360

deg

8MRB24015259D.cfg

8MRB240

5918

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MRB450350-60MEn2

360

deg

8MRB450350-60MEn2.cfg

8MRB450

6018

WEDL5541NoBrake
B

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

Page 302 / 345

Page 303 / 345

8MRU - Universal Motorized Rotation Stages
Update: 15 March 2018
Part
Travel
Units Profile Positioner Motor Encoder
number range

Brake

Accessories Peripherals Attenuator Controller

XILab

8MRU-1

360

deg

8MRU1.cfg

8MRU

28S

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MRU1TP

360

deg

8MRU1TP.cfg

8MRU

28S

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefRot

8MRU1WA

360

deg

8MRU1WA.cfg

8MRU

28S

NoEnc

NoBrake

NoAcc

Buttons

WA

XismusbDef XIDefRot

Page 303 / 345

Page 304 / 345

8MPR16-1 - Motorized Polarizer Rotator
Update: 15 March 2018
Part
Travel
Units
number range
8MPR161-F

360

deg

Profile

Positioner

Motor

Encoder

Brake

8MPR161-F.cfg

8MPR16

FAULHABERAM1020-V3-16

NoEnc

NoBrake

Page 304 / 345

Accessories Peripherals Attenuator Controller

NoAcc

Buttons

NoAtten

XILab

XismusbDef XIDefRot

Page 305 / 345

8MRH240 - Large High Capacity Rotary Stage
Update: 15 March 2018
Part
number
8MRH24060

Travel
Units
range
360

deg

Profile
8MRH24060.cfg

Positioner Motor Encoder
8MRH240

5918

NoEnc

Brake

Accessories Peripherals Attenuator Controller

NoBrake

Page 305 / 345

NoAcc

Buttons

NoAtten

XILab

XismusbDef XIDefRot

Page 306 / 345

Vertical Translation Stages
8MVT100 - Vertical Translation Stage

8MVT120 - Vertical Translation Stage

8MVT188 - Vertical Translation Stage

8MVT40 - Vertical Translation Stage

8MVT70 - Vertical Translation Stage

Page 306 / 345

Page 307 / 345

8MVT100 - Vertical Translation Stage
Update: 15 March 2018
Part
number
8MVT10025-1

Travel
Units
range
26

mm

Profile

Positioner

Motor

Encoder

Brake

8MVT10025-1.cfg

8MVT100

4118L1804R

NoEnc

NoBrake

Page 307 / 345

Accessories Peripherals Attenuator Controller XILab
NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 308 / 345

8MVT120 - Vertical Translation Stage
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner Motor Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MVT1205-4247

5

mm

8MVT1208MVT12055
4247.cfg

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MVT12012-4247

12.7

mm

8MVT1208MVT1201212
4247.cfg

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MVT12025-4247

25.4

mm

8MVT1208MVT1202525
4247.cfg

4247R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 308 / 345

Page 309 / 345

8MVT188 - Vertical Translation Stage
Update: 15 March 2018
Part
number

Travel
range

Units

Profile

8MVT1888MVT1888744052 steps
20
20.cfg

Positioner Motor Encoder
8MVT188

5918

NoEnc

Brake
NoBrake

Page 309 / 345

Accessories Peripherals Attenuator Controller XILab
NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 310 / 345

8MVT40 - Vertical Translation Stage
Update: 15 March 2018
Part
Travel
Units
number range
8MVT4013-1

13

mm

Profile
8MVT4013-1.cfg

Positioner Motor Encoder
8MVT40

28SR

NoEnc

Brake

Accessories Peripherals Attenuator Controller XILab

NoBrake

Page 310 / 345

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 311 / 345

8MVT70 - Vertical Translation Stage
Update: 15 March 2018
Part
Travel
Units
number range
8MVT7013-1

13

mm

Profile

Positioner

Motor

Encoder

Brake

8MVT7013-1.cfg

8MVT70

4118S1404R

NoEnc

NoBrake

Page 311 / 345

Accessories Peripherals Attenuator Controller XILab
NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 312 / 345

Screws and Actuators
8MS00 - Motorized Screws

8CMA06 - Motorized Actuator

8CMA20 - Compact Motorized Actuator

8CMA28 - Motorized Linear Actuator

8CMA16DC - Motorized Linear Actuator

Page 312 / 345

Page 313 / 345

8MS00 - Motorized Screws
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner Motor Encoder

8MS0010

10

mm

8MS0010.cfg

8MS00-10

4233-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MS0010-28

10

mm

8MS0010-28.cfg

8MS00-10

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MS0025

25

mm

8MS0025.cfg

8MS00-25

4233-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MS0025-28

25

mm

8MS0025-28.cfg

8MS00-25

28R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MS00V10VSS43

10

mm

8MS00V10VSS43.cfg

8MS00V10

VSS43R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MS00V25VSS43

25

mm

8MS00V25VSS43.cfg

8MS00V25

VSS43R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Brake

Accessories Peripherals Attenuator Controller XILab

Page 313 / 345

Page 314 / 345

8CMA06 - Motorized Actuator
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner Motor Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8CMA0613_10

13

mm

8CMA0613_10.cfg

8CMA0613

20Rev

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8CMA0613_15

13

mm

8CMA0613_15.cfg

8CMA0613

20Rev

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8CMA0625_15

25

mm

8CMA0625_15.cfg

8CMA0625

20Rev

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 314 / 345

Page 315 / 345

8CMA20 - Compact Motorized Actuator
Update: 15 March 2018
Part
Travel
Units
number range
8CMA208_15

8

mm

Profile
8CMA208_15.cfg

Positioner Motor Encoder
8CMA20

20Rev

NoEnc

Brake

Accessories Peripherals Attenuator Controller XILab

NoBrake

Page 315 / 345

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 316 / 345

8CMA28 - Motorized Linear Actuator
Update: 15 March 2018
Part
Travel
Units
number range
8CMA2810

10

mm

Profile
8CMA2810.cfg

Positioner Motor Encoder
8CMA28

28R

NoEnc

Brake

Accessories Peripherals Attenuator Controller XILab

NoBrake

Page 316 / 345

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 317 / 345

8CMA16DC - Motorized Linear Actuator
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner

Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller

XILab

8CMA16DC13_15

13

mm

8CMA16DC13_15.cfg

8CMA16DC

FAULHABERIE2-256 NoBrake
1524T006SR

NoAcc

Buttons

NoAtten

XismusbDef XIDefDC

8CMA16DC25_15

25

mm

8CMA16DC25_15.cfg

8CMA16DC

FAULHABERIE2-256 NoBrake
1524T006SR

NoAcc

Buttons

NoAtten

XismusbDef XIDefDC

8CMA16DCV13_15

13

mm

8CMA16DCVFAULHABER8CMA16DCV
13_15.cfg
1524T006SR

IE2-16

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefDC

8CMA16DCV25_15

25

mm

8CMA16DCVFAULHABER8CMA16DCV
25_15.cfg
1524T006SR

IE2-16

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDefDC

Page 317 / 345

Page 318 / 345

Motorized Goniometers
8MG00 - Motorized Goniometers

8MG99 - Motorized Goniometer

Page 318 / 345

Page 319 / 345

8MG00 - Motorized Goniometers
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner Motor Encoder

8MG0050

0.5

deg

8MG0050.cfg

8MG00-50 4233-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MG0080

0.5

deg

8MG0080.cfg

8MG00-80 4233-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MG00V50

0.5

deg

8MG00VVSS428MG00-50
50.cfg
R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MG00V80

0.5

deg

8MG00VVSS428MG00-80
80.cfg
R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Brake

Accessories Peripherals Attenuator Controller XILab

Page 319 / 345

Page 320 / 345

8MG99 - Motorized Goniometer
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner Motor Encoder

8MG9950

0.5

deg

8MG9950.cfg

8MG99-50 4233-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MG9980

0.5

deg

8MG9980.cfg

8MG99-80 4233-R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MG99V50

0.5

deg

8MG99VVSS428MG99-50
50.cfg
R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MG99V80

0.5

deg

8MG99VVSS428MG99-80
80.cfg
R

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Brake

Accessories Peripherals Attenuator Controller XILab

Page 320 / 345

Page 321 / 345

Mirror Mounts

8MTOM2 - Motorized Two Axis Translation Optical Mount

8MUP21 - Motorized Optical Mount

8MBM24 - Motorized Mirror Mounts

8MMA60 - Motorized Mirror Mounts

8MBM57 - Large Aperture Motorized Mirror Mount

8MKVDOM - Motorized Vertical drive optical mount

Page 321 / 345

Page 322 / 345

8MTOM2 - Motorized Two Axis Translation Optical Mount
Update: 15 March 2018
Part
Travel
Units
number range
8MTOM21

4

mm

Profile
8MTOM21.cfg

Positioner Motor Encoder
8MTOM2

20

NoEnc

Brake

Accessories Peripherals Attenuator Controller XILab

NoBrake

Page 322 / 345

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 323 / 345

8MUP21 - Motorized Optical Mount
Update: 15 March 2018
Part
Travel
Units
number range
8MUP212

4

mm

Profile
8MUP212.cfg

Positioner Motor Encoder
8MUP21

20Rev

NoEnc

Brake

Accessories Peripherals Attenuator Controller XILab

NoBrake

Page 323 / 345

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 324 / 345

8MBM24 - Motorized Mirror Mounts
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner Motor Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MBM241-2

4

mm

8MBM241-2.cfg

8MBM24

20Rev

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MBM242-2

4

mm

8MBM242-2.cfg

8MBM24

20Rev

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MBM243-2

4

mm

8MBM243-2.cfg

8MBM24

20Rev

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 324 / 345

Page 325 / 345

8MMA60 - Motorized Mirror Mounts
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner Motor Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MMA601

5

deg

8MMA601.cfg

8MMA60

4233

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MMA602

5

deg

8MMA602.cfg

8MMA60

4233

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MMA6040

5

deg

8MMA6040.cfg

8MMA60

4233

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 325 / 345

Page 326 / 345

8MBM57 - Large Aperture Motorized Mirror Mount
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner Motor Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MBM572

5

deg

8MBM572.cfg

8MBM57

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MBM573

5

deg

8MBM573.cfg

8MBM57

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MBM574

5

deg

8MBM574.cfg

8MBM57

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MBM576

5

deg

8MBM576.cfg

8MBM57

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 326 / 345

Page 327 / 345

8MKVDOM - Motorized Vertical drive optical mount
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner Motor Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MKVDOM1

6

mm

8MKVDOM8MKVDOM
1.cfg

20

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MKVDOM2

6

mm

8MKVDOM8MKVDOM
2.cfg

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 327 / 345

Page 328 / 345

Motorized Attenuators
10MCWA168 - Motorised Closed Variable Wheel Attenuator

10MWA168 - Motorized Variable Wheel Attenuator

Page 328 / 345

Page 329 / 345

10MCWA168 - Motorised Closed Variable Wheel Attenuator
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner

Motor Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

10MCWA1681

360

deg

10MCWA16810MCWA168
1.cfg

4247

RevS

NoBrake

NoAcc

Buttons

WA168

XismusbDef XIDef

10MCWA16820

360

deg

10MCWA16810MCWA168
20.cfg

4247

RevS

NoBrake

NoAcc

Buttons

WA168

XismusbDef XIDef

Page 329 / 345

Page 330 / 345

10MWA168 - Motorized Variable Wheel Attenuator
Update: 15 March 2018
Part
number

Travel
Units
range

Profile

Positioner

Motor

Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

10MWA1681

360

deg

10MWA16810MWA168 4247ROT
1.cfg

NoEnc

NoBrake

NoAcc

Buttons

WA168

XismusbDef XIDef

10MWA16820

360

deg

10MWA16810MWA168 4247ROT
20.cfg

NoEnc

NoBrake

NoAcc

Buttons

WA168

XismusbDef XIDef

Page 330 / 345

Page 331 / 345

Motorized Iris Diaphragms
8MID98 - Motorized Iris Diaphragm

Page 331 / 345

Page 332 / 345

8MID98 - Motorized Iris Diaphragm
Update: 15 March 2018
Part
Travel
Units
number range

Profile

Positioner Motor Encoder

Brake

Accessories Peripherals Attenuator Controller XILab

8MID984-90

93

mm

8MID98- 8MID98-44-90.cfg
90

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MID984-H

94

mm

8MID984-H.cfg

8MID98

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

8MID984-N

94

mm

8MID984-N.cfg

8MID98

28

NoEnc

NoBrake

NoAcc

Buttons

NoAtten

XismusbDef XIDef

Page 332 / 345

Page 333 / 345

7.2. Software
Full XIMC software package for Windows, last updated: 02.03.2018
Includes latest versions of XILab user interface application for Windows only, libximc library development kit, firmware binary and user
manual.
Download full software package. Disconnect all controllers from the PC. Launch XILab installer. Full installation manual can be found

here.

XILab, 1.14.8, last updated 15.02.2018
XILab can be downloaded here:
Windows XP, Vista, 7, 8, 10

xilab-1.14.8-win32_win64.exe

Generic Linux 32 bit

xilab-1.14.8-ia32.AppImage

Generic Linux 64 bit

xilab-1.14.8-x86_64.AppImage

MacOS X

xilab-1.14.8-osx64.tar.gz

All XILab versions
Compatibility table
XILab changelog

Development kit, 2.9.12, last updated 15.02.2018
Download and extract:

libximc-2.9.12-all.tar.gz

Development kit manual may be found here and in the /docs-en/index.html development kit file. Library is located in /ximc-2.9.12 and
examples are in /examples.
PDF-version of the development kit manual can be downloaded

here

All libximc versions
Compatibility table
Libximc changelog

Controller firmware
Download for 8SMC5:
Download for 8SMC4:

ximc-4.1.8-hw2.3.x.cod, last updated 12.01.2018
ximc-3.9.18-hw2.2.x.cod, last updated 06.06.2017

Firmware update instructions:
1. Download firmware file.
2. Start XILab
3. It is recommended to make a backup of your XILab configuration file before firmware update.
4. Open "Settings... -> Device configuration -> About device", press "Update" button, select new firmware file, press "Open".
5. XILab might stop responding for a while. Please wait while firmware is being uploaded, it should take about 10-15 seconds.
6. If settings have changed then load your configuration file and save it to the controller flash memory by pressing "Save to flash" button.
All firmware versions
Compatibility table
Firmware changelog

Configuration files
Configuration files may be found here.

LabView examples
Labview examples can be downloaded here:

labview-2.9.12-Labview_12.0.7z

Drivers
On Windows controller doesnt need additional drivers, however you need an inf-file for the controller to be recognized by the operating
system. It will be automatically installed with XILab. It can be found in "C:\Program Files\XILab\Driver" after installation. Also you may
download it here: XIMC_driver.inf
Linux and MacOS do not require driver files.

Software for 8SMC1-USBhF controllers with 8SMC4-USB support
Software may be downloaded here: microsmc-2.3.0-win32_win64.zip
Detailed information is available here.

Firmware for USB-Ethernet adapter, 1.1.0, last updated 11.07.2016
The software can be downloaded here:
Detailed information is available here.

cubian-1.1.0-armhf.7z

Page 333 / 345

Page 334 / 345

All Firmware USB-Ethernet adapter versions
Firmware changelog

REVEALER, 0.1.0, last updated 16.04.2017
The software can be downloaded here:
Windows XP, Vista, 7, 8, 10

revealer-0.1.0-win32.zip

Linux 32-bit

revealer-0.1.0-lin32.tar.gz

Linux 64-bit

revealer-0.1.0-lin64.tar.gz

MacOS

revealer-0.1.0-osx64.zip

Java

revealer-0.1.0-j.jar

Detailed information is available here.
All REVEALER versions
REVEALER changelog
All XILab versions
Windows
Version XP, Vista, MacOS X
7, 8, 10

Generic
Linux
32-bit

Generic
Linux
64-bit

Debian/Ubuntu Debian/Ubuntu RedHat/OpenSUSE RedHat/OpenSUSE
32-bit
64-bit
64-bit
32-bit

1.14.8

Download

Download

Download

Download -

-

-

-

1.14.7

Download

Download

Download

Download -

-

-

-

1.14.5

Download

Download

Download

1.13.14

Download

Download -

-

Download

Download

Download

Download

1.13.13

Download

Download -

-

Download

Download

Download

Download

1.12.18

Download

Download -

-

Download

Download

Download

Download

1.12.15

Download

Download -

-

Download

Download

Download

Download

1.12.14

Download

Download -

-

Download

Download

Download

Download

1.12.13

Download

Download -

-

Download

Download

Download

Download

1.12.10

Download

Download -

-

Download

Download

Download

Download

1.12.8

Download

Download -

-

Download

Download

Download

Download

1.11.12

Download

Download -

-

Download

Download

Download

1.11.10

Download

Download -

-

Download

Download

Download

-

1.10.14

Download

Download -

-

Download

Download

Download

-

1.10.11

Download

Download -

-

Download

Download

Download

-

1.10.10

Download

Download -

-

Download

Download

Download

-

1.10.6

Download

Download -

-

Download

Download

Download

-

1.9.18

Download

Download -

-

Download

Download

Download

-

1.9.17

Download

Download -

-

Download

Download

Download

-

1.9.16

Download

Download -

-

Download

Download

Download

-

1.9.15

Download

Download -

-

Download

Download

Download

-

1.9.14

Download

Download -

-

Download

Download

Download

-

1.9.13

Download

Download -

-

Download

Download

Download

-

1.9.12

Download

Download -

-

Download

Download

Download

-

1.9.11

Download

Download -

-

Download

Download

Download

-

1.8.30

Download

Download -

-

Download

Download

Download

-

1.8.29

Download

Download -

-

Download

Download

Download

-

1.8.28

Download

Download -

-

Download

Download

Download

-

Download -

-

XILab changelog
View...
All libximc, MicroSMC and XIMC_Labview versions

Page 334 / 345

-

-

Download

Page 335 / 345

Версия Libximc

Libximc
sources

XIMC_Labview

Download

MicroSMC

2.9.12

Download

Download for Labview 12.0

-

2.9.11

Download -

2.9.8

Download -

-

Download for Labview 12.0

-

2.8.10

Download -

-

-

2.8.9

Download -

-

-

2.8.8

Download -

-

-

2.8.7

Download -

-

2.8.5

Download -

Download for Labview 11.0
8.2

2.8.4

Download -

Download for Labview 12.0

2.8.0

Download -

2.3.2

Download -

-

2.3.1

Download -

-

2.3.0

Download -

Download for Labview 12.0

2.2.2

Download -

Download for Labview 12.0

Download

2.2.1

Download -

Download for Labview 12.0

Download

2.2.0

Download -

-

-

2.0.5

Download -

-

-

-

Download for Labview 12.0

Download for Labview 12.0

Download for Labview

-

Download for Labview 8.0

-

Download for Labview 8.6

Officially supported Labview 12.0, other versions are re-saving with compatibility for earlier versions (not tested)
The build instruction for libximc-src is in the libximc archive in the ximc\doc-en folder
Libximc changelog
View...
XIMC_Labview changelog
View...
Microsmc changelog
View...
All firmware versions

Page 335 / 345

Download

Page 336 / 345

Version
8SMC4)

(for

File

Version
8SMC5)

(for

File

3.9.18

Download 4.1.8

Download

3.9.16

Download 4.1.6

Download

3.9.14

Download 4.1.5

Download

3.9.12

Download 4.1.4

Download

3.9.11

Download 4.0.9

Download

3.9.10

Download 4.0.7

Download

3.9.9

Download 4.0.4

Download

3.9.8

Download

3.9.7

Download

3.9.5

Download

3.8.19

Download

3.8.17

Download

3.8.16

Download

3.8.14

Download

3.8.11

Download

3.8.10

Download

3.8.9

Download

3.8.8

Download

3.8.7

Download

3.8.4

Download

3.8.3

Download

Firmware changelog
View...
Compatibility table
Protocol version XILab

libximc

firmware

16.3

1.8.28-1.8.30

2.0.5

3.8.3-3.8.4

16.6

1.9.11-1.9.18

2.2.1-2.2.2

3.8.7-3.8.11

16.6

1.10.6-1.10.14

2.3.0-2.3.2

3.8.7-3.8.11

16.8

1.11.10-1.11.12 2.5.0

3.9.5-3.9.8

16.8

1.12.7-1.12.8

2.8.0

3.9.5-3.9.8

16.10

1.12.10

2.8.4-2.8.5

3.9.9

16.10

1.12.13

2.8.7

3.9.10-3.9.11

16.11

1.12.14

2.8.8-2.8.9

3.9.12

16.12

1.12.15

2.8.10

3.9.14

16.12

1.12.18

2.8.10-2.8.12 3.9.14-3.9.16

17.2

1.13.13-1.13.14 2.9.8-2.9.12

3.9.16-3.9.18, 4.0.4-4.0.9

18.1

1.14.5-1.14.8

4.1.4-4.1.8

2.10.3

All firmware versions for USB-Ethernet adapter
Version File
1.1.0

Download

1.0.0

Download

Detailed information is available here.
Firmware changelog
View...
All REVEALER versions for USB-Ethernet adapter

Page 336 / 345

Page 337 / 345

Version Linux x32
0.1.0

Download

Linux x64
Download

Mac OS
Download

Windows
Download

Java
Download

REVEALER changelog
View...

Page 337 / 345

Page 338 / 345

8. Related products
1. Ethernet adapter

Page 338 / 345

Page 339 / 345

8.1. Control via Ethernet
1. Overview
2. Administration

Page 339 / 345

Page 340 / 345

8.1.1. Ethernet adapter Overview
General information

Outward appearance of 8SMC4-USB-Eth1 adapter
8SMC4-USB-Eth11 is a universal device based on Cubieboard2 single-board computer with OS Linux inside, which enables the end
user to interact with motor controllers remotely via various Ethernet-oriented interfaces. This device is also intended to be a universal
provider for different services related to controllers' popular usage scenarios (e.g. motion control). It means that if there is a
standalone program which could be effectively used in conjunction with our controllers, chances are high that this adapter already has
it preconfigured and all you need is to plug some controllers and connect Ethernet cable to it. Out-of-the-box 8SMC4-USB-Eth1
supports online web-camera streaming, LAN auto-discovery system and two interfaces to configure and control motor controllers:
1. TANGO control system interface.
2. XiLab- and libximc-oriented XIMC interface.
Moreover 8SMC4-USB-Eth1 is equipped with embedded web-based administration interface, which enables the end user to
conveniently control the device and monitor its state.

The appearance of the system from different perspectives (all necessary connectors in current version are marked with bold):

Front view. Left to right: power connector, on/off switch, HDMI connector.

View from the right. Left to right: micro-SD card connector, two USB type A female connectors.

Back view. Left to right: Ethernet connector, mini-USB type B, switch to transfer into FEL mode, earphone and line in connectors.

View from the left. IR receiver.

Main requirements
Network configuration
You must have a DHCP server that supports an automatic distribution of ip addresses.
Server and your computer must support IPv4 protocol.
Port 49150 should not be blocked. The cause of blocking can often be the presence of antivirus software, or program which
monitors and filters network traffic (firewalls).
Other

Page 340 / 345

Page 341 / 345

220V socket should be available.
Ethernet cable, USB cable.
1 The vendor code was changed in 2017, earlier this product had the vendor code 8SMC4-USB-Eth.

Page 341 / 345

Page 342 / 345

8.1.2. Administration
Note. Administration interface and TANGO support might not be present in your version of the device. You can update
the device firmware using our instruction.

Automatic device detection
As a convenience we provide a small dedicated utility called "Revealer" in order to help you instantly identify all the
USB-Eth1 adapters connected to your local network. You can download it from our software page.

Standa 8SMC4-

"Revealer" utility interface
The Graphical User Interface of the "Revealer" is a simple one. In order to start search click Search button on Search settings panel the scan takes approximately 3 seconds. After that all Standa 8SMC4-USB-Eth1 devices found in your local network will be listed on
Available devices panel as clickable links. When clicked, the link opens your defaul system browser and redirects it to Administartion
interface web page.
The utility requires Java Runtime Environment (or simply JRE) version 6 or greater to work. There are high chances that you already
have it installed on your PC as it's the requirement for a great number of popular software packages and so you just need to doubleclick the "revealer-j_0.1.0.jar" file to launch the utility.
Otherwise it means that you don't have JRE installed and have two options:
1. Download our ready-made packages for your operating system containing the "Revealer" utility and all the stuff necessary to
make it work. In this case you just need to launch "Revealer" executable.
2. Install JRE. A good candidate is Oracle JRE which you can install following the
official instructions.

Warning. "Revealer" uses UDP broadcasts to reach all Standa 8SMC4-USB-Eth1 in your LAN so it might be
unusable in the environments where UDP broadcasts are forbidden or unwanted.

Overview
Standa 8SMC4-USB-Eth1 device is equipped with web-based Administration interface which enables the end user to control device
services and monitor system state.

Administration interface login page
In order to get access to the Administration panel, navigate your browser to
http://[address] URL (where [address] should be
replaced with IP address of the device in your local network and can be obtained with the help of "Revealer" utility). If you are doing
this for the first time (or you've disabled cookies/password storage in your browser) you'll need to authenticate yourself using "admin"
as login and password.

Note. It's highly recommended to enable javascript in your browser while using Administration interface to get the
best user experience.

Page 342 / 345

Page 343 / 345

Note. Web-interface is compatable with MS IE 9, MS IE 10, MS IE 11, MS Spartan, Firefox, Chrome browsers and
might not work as expected in others.

Administration interface is split into three functional sections.
"Common" section

Common section page
This section contains generic system information and decimal serial numbers of all controllers connected to the device.
"Motion control" section

Motion control section page
This section is dedicated to motion control services supported by the device. "Motion Control services" panel contains a list of all
currently available motion control services. Clicking on services' title opens an appropriate settings panel (or none if service has no
alterable settings). Clicking "Apply" button in settings panel will persist settings in database and restart corresponding service.

Note. Motion control services are mutually exclusive - only one can be active at any given moment. Starting one of the
services will automatically stop previous active if any.

"Cameras" section

Cameras section page
In this section there is a list of all connected cameras. Each camera is associated with streaming server instance, which exposes
settings, status indicators and controls.

Page 343 / 345

Page 344 / 345

Service control
The Administration panel enables you to control all available device services. There is a common management metaphor for all services
independent of its' actual functionality and aim. Each service has an associated Indicator button on the left of its title which shows
current services's status and enables changing it:
Red color with "Stopped" label indicates that service is completely stopped; pressing the button will run service startup.
Orange color with "Starting" label indicates that service is in interruptible start sequence; pressing the button will revert service
to stopped state.
Green color with "Stop" label shows that the service is up and running; pressing the button will trigger service stop sequence.
Orange color with "Stopping" label indicates uninterruptible stop sequence.

Note. Many services have settings which can be altered. After changing any of such settings the corresponding
process will be automatically restarted shortly - the Indicator button will show it dynamically.

Firmware upgrade

Warning. During the update MicroSD content and 8SMC4-USB-Eth1 device flash memory will be wiped out. Make
sure that you've made necessary backups.

1. Download an appropriate firmware version from software page.
2. Get a 4GB (or larger) MicroSD card.
3. Download and upack an autoinstaller image archive. On Windows family operating system you might have no apropriate archiver
— in this case you may use 7-Zip ( official site).
4. Put the image onto the MicroSD card:
Unix family OS:
1. You can do it via dd utility (e.g.
dd if=autoinstall_image_2015-12-17.bin of=/dev/sdX bs=4M; sync

5.
6.

7.
8.

but remember to substitute the device names with yours).
Windows family OS:
1. Download Win32 Disk Imager ( official site) and start it.
2. Specify autoinstaller image path in "Image File" field.
3. Select your MicroSD drive in "Device" list.
4. Press "Write" button and wait till progressbar completes.
Insert the microSD card with the image into your 8SMC4-USB-Eth1 and turn it on (or reboot).
Wait approximately 10 minutes to let the firmware be installed. You may check the progress of installation by looking at LED
indicator inside the case of the device through USB plugs:
1. LED is stable green or emits periodic single green pulses - autoinstaller is initializing.
2. LED periodically emits green double pulses - installation is in progress.
3. LED is stable green - installation is complete.
Power off the device (just plug the power cable off) and extract MicroSD card.
Power on the device and wait another 2-7 minutes to let the device initialize itself.

Warning. On some rare occasions the device might not be visible through the revealer(and have its services and
administration interface unavailable either) even well after estimated initialization period. In this case try to reboot
the device. If it doesn't help try to redo steps from 5 to 8.

Now you should have your 8SMC4-USB-Eth1 device updated and fully operational.

Troubleshooting

Warning. If your device won't work properly, leds don't blink as described above during flashing and your device
manufactured after 2017 October, please, contact support.

Uninitialized Cubieboard2 bootloader
In some rare cases the steps described in Firmware upgrade instruction might not succeed. One of the possible reasons is that due to
some technical failure the Cubieboard2 singleboard computer bootloader (on which 8SMC4-USB-Eth1 is based on) was not properly

Page 344 / 345

Page 345 / 345

initialized. However bootloader initialization isn't very complicated:
1. Download PhoenixSuit ( official site) and unpack it;
2. Download Lubuntu server image with bootloader supporting SoC A20 rev.B for PhoenixSuit ( official site, "Firmwares" ->
"Cubieboard2" -> "Lubuntu Server") and unpack it.
3. Start PhoenixSuit. In case of update request, confirm it and wait till it's done.
4. Switch to "Firmware" tab and specify unpacked Lubuntu server image path.
5. Power off the device. Press and hold FEL button (it's near LAN and USB-OTG connectors). While still holding the button, connect
USB-OTG to your PC and then release the button.
6. You might need to explicitly install driver for the device on Windows family OS.
1. Navigate to the Device Manager.
2. Locate "Unknown Device" and right click on it.
3. In the context menu press "Update driver software...".
7. Specify "PhoenixSuit1.0.7\PhoenixSuit\Drivers\AW_Driver" as driver search directory.
8. After that a popup in PhoenixSuite will appear. Press "YES (Full install)" and wait for the completion.
9. Continue to autoinstall instruction.

Page 345 / 345



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.4
Linearized                      : No
Title                           : 8SMC5-USB - enxisupport - ximc
Creator                         : wkhtmltopdf 0.12.4
Producer                        : Qt 4.8.7
Create Date                     : 2018:03:23 21:27:39+03:00
Page Count                      : 345
Page Mode                       : UseOutlines
EXIF Metadata provided by EXIF.tools

Navigation menu