# SMD4 User Manual

UHV Stepper Motor Drive

# Introduction

[![SMD4_1_transparent.webp](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-11/scaled-1680-/smd4-1-transparent.webp)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-11/smd4-1-transparent.webp)

The SMD4 stepper motor drive is a single-axis bipolar stepper motor drive, intended for use with AMLs range of vacuum-compatible stepper motors (VCSMs). It maximises motor performance while minimising temperature rise.

Powerful software is supplied with the SMD4 that enables you to easily control and configure multiple SMD4 units  
simultaneously, in a single, user-friendly graphical interface. For advanced users, the drive can also be controlled via scripting in JavaScript.

The drive features extensive communications options, including USB, RS232, RS485 and Ethernet. It also includes an innovative boost feature; this uses an internal circuit to increase the 48 V input up to 67 V for driving the motors. This allows the use of standard 48 V power supplies without compromising on motor performance.

The drive supports incremental and absolute BiSS encoders (when so equipped). This enables features including closed loop control and virtual limits based on encoder position and greatly expands the features of the product.

### Liability and warranty

AML assumes no liability and the warranty becomes null and void if the end-user or third parties:

- Disregard the information in this document
- Use the product in a non-conforming manner
- Make any kind of alterations (modifications, repair work, etc.) to the product
- Use the product with accessories not listed in the corresponding product documentation

We reserve the right to make technical changes without prior notice. The figures are non-committal.

# Safety and warning notices

<p class="callout warning">**WARNING!** All work described in this document may only be carried out by persons who have suitable technical training and the necessary experience or who have been instructed by the end-user of the product.  
  
The safety of any system incorporating the instrument is the responsibility of the assembler of the system.  
  
Use the instrument only as specified in this manual, otherwise the protection provided by the instrument might be impaired.  
  
**Ignoring this or subsequent safety information could lead to personal injury, or malfunction or permanent damage to the equipment.**</p>

# Technical information

### General

<table id="bkmrk-general-interface-us"><tbody><tr class="section-header"><td colspan="2">General</td></tr><tr class="alt"><td>Dimensions</td><td>166 mm x 106 mm x 56 mm  
(excluding connectors and feet)</td></tr><tr><td>Weight</td><td>0.5 kg</td></tr><tr class="alt"><td>Protection class</td><td>IP 20</td></tr><tr><td>Temperature</td><td>Operation 10°C to 60°C,  
Storage -10°C to 85°C</td></tr><tr class="alt"><td>Power requirements</td><td>48 Vdc ± 5%

Power supply is included.

</td></tr><tr><td>Power consumption</td><td>48 W max.

</td></tr><tr class="alt"><td>Safety compliance</td><td>EN 61010-1-2010</td></tr><tr><td>EMC compliance</td><td>Emissions EN61800-3:2018, EN55032 Class B, 3m (As 61800-3:2018, Table 17, Category C1, first environment)  
Immunities, EN55035, basic electromagnetic environment</td></tr><tr class="section-header"><td colspan="2">Motor driver</td></tr><tr class="alt"><td>Type</td><td>2 phase bipolar stepper motor driver for 4-lead motors</td></tr><tr><td>Phase current</td><td>Up to 1 A RMS, adjustable in 30 mA steps</td></tr><tr class="alt"><td>Source voltage</td><td>67 Vdc maximum  
48 Vdc supply is boosted to 67 Vdc.  
Boost function can be disabled if required.</td></tr><tr><td>Resolution</td><td>Full, 8, 16, 32, 64, 128, 256 micro-stepping  
Stops on full step positions only, micro-stepping is used for control of resonance and smoother step transition.</td></tr><tr class="alt"><td>Step frequency</td><td>1 Hz to 15 kHz</td></tr><tr><td>Protection</td><td>Short to ground and phase to phase</td></tr><tr class="section-header"><td colspan="2">Encoder (Where fitted)</td></tr><tr class="alt"><td>Supported types</td><td>Digital incremental and BiSS absolute</td></tr><tr><td>Power</td><td>5V at 250 mA max. is available to power the encoder, protected by self-resetting fuse.</td></tr><tr class="alt"><td>Connection</td><td>Female 26 way high density D-Sub.

Encoder connects via adapter cable according to encoder type.

Adapter cables for supported encoders are available from AML.

</td></tr><tr><td>Incremental encoder support</td><td>Digital (RS422) incremental encoders having differential A, B and Z signals.

Single ended P and Q limits signals are supported.

Maximum clock rate 1 MHz.

</td></tr><tr class="alt"><td>Absolute encoder support</td><td>26 bit BiSS-C (support for other bit depths may be added via firmware update)</td></tr><tr class="section-header"><td colspan="2">Motor temperature measurement</td></tr><tr class="alt"><td>Type</td><td>Selectable PT100 RTD or K-Type thermocouple</td></tr><tr><td>Range</td><td>-200°C to 240°C</td></tr><tr class="alt"><td>Accuracy</td><td>±15 °C for thermocouple, ±5 % for RTD</td></tr><tr><td>Fault detection</td><td>RTD: Open and short-circuit  
Thermocouple: Open circuit only</td></tr><tr class="section-header"><td colspan="2">Operating modes</td></tr><tr class="alt"><td colspan="2">• Remote – Control and configure via USB, Ethernet or Serial  
• Step, Direction Enable (SDE) – For connection to an external motion controller or PLC  
• Bake – Programmed cycle to heat the motor while stopped to drive off adsorbed gasses</td></tr><tr class="section-header"><td colspan="2">Control interfaces</td></tr><tr class="alt"><td>USB</td><td>USB 2.0 Full Speed via USB-C connector  
Virtual COM port and firmware update interface</td></tr><tr><td>Ethernet</td><td>10/100 Base-T, auto MDI-X, RJ45 8P8C connector  
Telnet (port 11312)</td></tr><tr class="alt"><td>Serial communication</td><td>Selectable RS232 or RS485 mode (shared pins)  
Dual RJ45 8P8C connectors allow daisy chaining multiple devices in RS485 mode  
User selectable termination in RS485 mode  
115200 default and maximum baud rate</td></tr><tr class="section-header"><td colspan="2">Software</td></tr><tr class="alt"><td>Compatibility</td><td>Windows 10 or later</td></tr><tr><td>API</td><td>C# and Python APIs are available</td></tr><tr class="section-header"><td colspan="2">SDE (step, direction enable) interface</td></tr><tr class="alt"><td>Type</td><td>Optocoupled, common cathode</td></tr><tr><td>Levels</td><td>3.3 Vdc to 5 Vdc maximum  
Higher voltages require external current limiting resistor</td></tr><tr class="alt"><td>Maximum frequency</td><td>2 MHz at 50% duty  
Maximum full-step rate limited to 7.8 kHz for micro-step resolution of 256.</td></tr><tr class="section-header"><td colspan="2">Limits</td></tr><tr class="alt"><td>Quantity</td><td>2</td></tr><tr><td>Compatible switch types</td><td>Mechanical NO or NC (polarity selectable)</td></tr><tr class="alt"><td>Protection</td><td>Withstands continuous short to 12 V maximum</td></tr><tr class="section-header"><td colspan="2">Joystick</td></tr><tr class="alt"><td>Connection</td><td>Front panel mounted 4P4C jack with auto-detection of connection state</td></tr><tr><td>Input type</td><td>Active low, short to ground to activate function</td></tr><tr class="alt"><td>Miscellaneous</td><td>Open circuit voltage 3.3 V, source current &lt; 3.5 mA</td></tr></tbody></table>

### Mechanical

All dimensions are in millimetres.

[ ![SMD4 datasheet drawing](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-11/scaled-1680-/smd4-datasheet-drawing.PNG) ](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-11/smd4-datasheet-drawing.PNG)

### Scope of delivery

<table id="bkmrk-order-code-item-smd3" style="width:63.4568%;"><tbody><tr class="table-header"><td style="width:12%;">**Qty.**</td><td style="width:88%;">**Item**</td></tr><tr class="alt"><td class="align-center">1</td><td>SMD4</td></tr><tr><td class="align-center">1</td><td>USB Type-A to USB Type-C lead</td></tr><tr class="alt"><td class="align-center">1</td><td>Power supply</td></tr></tbody></table>

### Accessories

The following accessory items are available from AML.

<table class="MsoNormalTable align-left" id="bkmrk-order-code-item-smd3-1"><tbody><tr class="section-header"><td>**<span style="color:rgb(255,255,255);">Order Code</span>**

</td><td>**<span style="color:rgb(255,255,255);">Item</span>**

</td></tr><tr class="alt"><td>SMD3JOY

</td><td>Joystick (compatible with SMD4)

</td></tr><tr><td>CAB-D15D9

</td><td>SMD4 Motor Cable, 3m, D-Sub 15 Male to D-Sub 9 Female

</td></tr><tr class="alt"><td>CAB-D15MLF

</td><td>SMD4 Motor Cable, 3m, D-Sub 15 Male to MLF18

</td></tr><tr><td>CAB-3D15MLF

</td><td>SMD4 Motor Cable, 3m, 3X D-Sub 15 Male to MLF18

</td></tr><tr class="alt"><td>CAB-D26D15

</td><td>SMD4 Encoder Cable, Incremental, 3m, HD D-Sub 26 Male to D-Sub 15 Female

</td></tr><tr><td>CAB-D26D9

</td><td>SMD4 Encoder Cable, Absolute, 3m, HD D-Sub 26 Male to D-Sub 9 Female

</td></tr></tbody></table>

# Installation

### Before installation

<p class="callout warning">**WARNING:** Read this manual carefully before installing and operating the SMD4. Observe the following safety instructions.</p>

<p class="callout warning">**WARNING:** All work described in this document may only be carried out by persons who have suitable technical training and the necessary experience or who have been instructed by the end-user of the product.</p>

<p class="callout warning">**WARNING:** Without proper training and necessary experience, damage to the equipment or personal injury might result.</p>

<p class="callout danger">**DANGER:** Danger of electric arcing! Never plug or unplug any connector while powered. Plugging or unplugging a motor while powered may damage or destroy the driver output stage.</p>

### Unpacking

On receipt of the instrument remove all packing material and check that all items on the delivery note have been received. Report any damage or shortages to the company or distributor who supplied the instrument. The packing material has been specially designed to protect the instrument and should be retained for possible future use.

### Mechanical installation

The SMD4 is a freestanding instrument. It does not require mounting. Forced air ventilation is not required. The ambient operating temperature range is 10 °C to 60 °C.

### Front and rear panels overview

#### Rear panel

Most connections including power, communications and motor are on the rear panel. AML offer several air side cable options for making the connection between motor, encoder, and chamber feed throughs, see [motor wiring overview](https://bookstack.vps-da8d40f3.arunmicro.com/link/27#bkmrk-motor-wiring). Communications leads such as USB and network are readily available off the shelf.

[![SMD4 Rear flat render.JPG](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-06/scaled-1680-/smd4-rear-flat-render.JPG)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-06/smd4-rear-flat-render.JPG)

#### Front panel

The front panel hosts status lights, see [troubleshooting](https://bookstack.vps-da8d40f3.arunmicro.com/link/32#bkmrk-page-title) and the joystick port.

[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-02/scaled-1680-/dVMimage.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-02/dVMimage.png)

### Power

<table id="bkmrk-connector%3A-barrel-po" style="border-collapse:collapse;width:100%;height:130.105px;border-width:0.5px;border-color:rgb(206,212,217);"><colgroup><col style="width:15.0872%;"></col><col style="width:84.8717%;"></col><col style="width:0%;"></col></colgroup><tbody><tr style="height:57.4375px;"><td colspan="3" style="height:57.4375px;border-width:0.5px;padding:5px;border-color:rgb(206,212,217);">Connector: Barrel power jack

2.1 mm pin, 5.6 mm hole

</td></tr><tr style="height:72.667px;"><td style="height:72.667px;border-width:0.5px;padding:5px;border-color:rgb(206,212,217);">[![dc.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/scaled-1680-/Uv8dc.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/Uv8dc.png)

</td><td colspan="2" style="height:72.667px;border-width:0.5px;padding:5px;border-color:rgb(206,212,217);">48 Vdc input. Centre positive.

</td></tr></tbody></table>

Power input for both internal logic circuits and the motor itself.

The power supply must:

- Meet the requirements set out in the [technical information](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/technical-information "Technical information") section of this document
- Provide reinforced or double insulation between mains and supply output
- Include protection against short circuit

A suitable power supply is included with the equipment.

<p class="callout danger">**DANGER:** Danger of electric arcing! Never plug or unplug the power connector while powered.</p>

### Communications

Configure and control the SMD4 using AML Device Control software, available as a free download from our website at [https://arunmicro.com/documents/software/](https://arunmicro.com/documents/software/)

Alternatively, use a terminal program, or your own application. APIs are available to help customers implement their own applications faster, see [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/93#bkmrk-page-title) for details.

This section details the available interfaces.

#### USB

<table id="bkmrk-connector%3A-usb-c" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:21.0131%;"></col><col style="width:78.9457%;"></col></colgroup><tbody><tr><td colspan="2">Connector: USB-C

</td></tr><tr><td>[![x5.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/scaled-1680-/x5.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/x5.png)

</td><td></td></tr></tbody></table>

USB Type-C connection. The connection is reversible, and the plug may be inserted either way up.

The SMD4 appears as a virtual COM port when connected to the PC. No additional drivers are required.

#### LAN

<table id="bkmrk-connector%3A-8p8c-rj45" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:19.8977%;"></col><col style="width:80.0611%;"></col></colgroup><tbody><tr><td colspan="2">Connector: 8P8C RJ45

RJ45, 8 poles, 8 connections

</td></tr><tr><td>[![lan.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/scaled-1680-/lan.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/lan.png)

</td><td></td></tr></tbody></table>

10/100M network connection with Auto MDI-X.

#### RS232/485

<table id="bkmrk-connector%3A-8p8c-rj45-1" style="border-collapse:collapse;width:100%;height:337.958px;"><colgroup><col style="width:19.2751%;"></col><col style="width:50px;"></col><col style="width:71.541%;"></col></colgroup><tbody><tr style="height:57.4583px;"><td colspan="3" style="height:57.4583px;">Connector: 8P8C RJ45

RJ45, 8 poles 8 connections

</td></tr><tr style="height:35.0625px;"><td rowspan="8" style="height:280.5px;">[![rs232.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/scaled-1680-/rs232.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/rs232.png)

</td><td class="align-center" style="height:28px;">1</td><td style="height:28px;"> </td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">2</td><td style="height:28px;"> </td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">3</td><td style="height:28px;"> </td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">4</td><td style="height:28px;">A+/Tx</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">5</td><td style="height:28px;">B-/Rx</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">6</td><td style="height:28px;"> </td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">7</td><td style="height:28px;"> </td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">8</td><td style="height:28px;">GND</td></tr></tbody></table>

RS232 and RS485 share pins. Before connecting to them, use an alternate interface (USB or LAN) to configure the desired mode of operation. Undefined behaviour will result if the SMD4 is connected to an RS485 network when in RS232 mode or vice-versa.

There are two identical connectors, allowing SMD4 devices to be daisy-chained together.

An optional termination resistance can be enabled if required. This would typically be enabled on the last device on the bus, to reduce reflections and maintain signal integrity. The usage of this feature should be evaluated in the final system.

<p class="callout warning">Configure the mode of operation (RS232 or RS485) before plugging a connector in. Do not make changes to the mode without first disconnecting both connectors. Undefined behaviour will result if the SMD4 is connected to an RS485 network when in RS232 mode or vice-versa.</p>

##### Bussing

The dual connectors allow multiple SMD4s (or other devices) to be bussed together. There are several important considerations to be aware of when doing so:

- RS232 is not well suited to multi-drop; use RS485 for this purpose if at all possible. If using RS232, devices can receive and process commands, but will not respond and data cannot be returned to the host.
- Ensure all devices on the bus are in the the same mode (RS232 or RS485) and the same serial configuration (baud rate, etc.) matches between devices.
- When using text protocol, begin all commands with the '@' addressing prefix. This places the SMD4 into addressing mode which brings into force alternate communication rules that allow the SMD4 to function properly on a bus with other devices. This is discussed in the [Addressing](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-addressing) section.
- Do not use text protocol commands without the addressing prefix. This will cause multiple devices to respond at once and the resulting bus contention may result in undefined behaviour.

### Motor

Read this section to learn about wiring up the motor, including air and vacuum side connections.

<table id="bkmrk-connector%3A-da15-f" style="border-collapse:collapse;width:100%;height:583.396px;"><colgroup><col style="width:250px;"></col><col style="width:50px;"></col><col style="width:60.0275%;"></col></colgroup><tbody><tr style="height:57.4583px;"><td colspan="3" style="height:57.4583px;">Connector: DA15-F

D-Sub, 15 ways, female

</td></tr><tr style="height:35.0625px;"><td rowspan="15" style="height:525.938px;">[![d-sub 15.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/scaled-1680-/d-sub-15.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/d-sub-15.png)

</td><td class="align-center" style="height:28px;">1</td><td style="height:28px;"> Phase B2</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">2</td><td style="height:28px;"> Phase B1</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">3</td><td style="height:28px;"> Phase A2</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">4</td><td style="height:28px;"> Phase A1</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">5</td><td style="height:28px;"> Limit 1</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">6</td><td style="height:28px;"> Limit 2</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">7</td><td style="height:28px;"> Thermocouple negative</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">8</td><td style="height:28px;"> Thermocouple positive</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">9</td><td rowspan="4" style="height:28px;"> GND  
</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">10</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">11</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">12</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">13</td><td style="height:28px;">RTD B2</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">14</td><td style="height:28px;">RTD B1</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:28px;">15</td><td style="height:28px;">RTD A</td></tr></tbody></table>

<p class="callout danger">**DANGER!** Danger of electric arcing! Never plug or unplug the connector while powered! Plugging or unplugging motor while powered may damage or destroy the driver output stages.</p>


#### Limit switch inputs

<div id="bkmrk-there-are-two-limits">There are two limits inputs; they can be configured to stop the motor when either is triggered. A limit input is triggered by shorting it to 'GND', usually with a mechanical switch mounted on the mechanism that the motor is driving. Logic level signals, for example, from optical or hall effect sensors may also be used. </div><div id="bkmrk--1"></div><div id="bkmrk-input-polarity-can-b">Input polarity can be reversed to accommodate normally open or normally closed switches.</div><div id="bkmrk--8">  
</div><div id="bkmrk-limit-1-applies-when">Limit 1 applies when the motor position counter is incrementing, and limit 2 applies when the motor position counter is decrementing.</div><div id="bkmrk--9">  
</div><div id="bkmrk-limits-inputs-includ">Limits inputs include a pullup resistor. See section [Limits](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-limits) for details.</div>
<p class="callout info"><span style="color:rgb(0,0,0);">**INFORMATION:** Limits inputs are duplicated on the I/O connector for maximum user flexibility in arranging wiring for the system. Limit signals on both this and the I/O connector are electrically connected. Do not apply different electrical potentials between like-named limits inputs otherwise a short will occur between the two.</span></p>

#### Thermocouple

The thermocouple lead for motors equipped with the standard K-Type thermocouple should be connected here. If using a motor equipped with an RTD, this connection may be left open. Be sure to select the correct sensor type, see section [Temperature sensor selection](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/operation#bkmrk-temperature-sensor-s).


<p class="callout info"><span style="color:rgb(0,0,0);">**INFORMATION:** To provide greater convenience in wiring to the vacuum chamber, the thermocouple input is included on the motor connector, rather than a dedicated micro K-Type thermocouple connector. This comes at the cost of reduced accuracy due to the parasitic thermocouple junctions that exist within the connector. This is accounted for by the looser accuracy specification for the thermocouple input over the RTD one, and a generous tolerance in the motor over temperature threshold as further insurance. Nonetheless, accuracy can be improved by avoiding large temperature gradients across the SMD4; for example, avoid placing the rear panel of the product in direct line of hot exhaust from other equipment.</span></p>

#### RTD

For motors equipped with an RTD instead of a thermocouple, make the RTD connection here. If the RTD is not required, leave the connections open.

The RTD input is compensated for cable length by the three-wire connection.

#### Motor wiring overview

Connecting motors inside a vacuum chamber to the SMD4 comprises two tasks:

- Wiring the motor to a vacuum feedthrough installed in the chamber wall.
- Wiring the vacuum feedthrough to the SMD4.

AML supply vacuum feedthroughs, ready-made cabling, and components allowing custom cables to be easily manufactured. A typical setup is shown below and used for illustration throughout this section.

[![smd4 to feedthrough connection.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-02/scaled-1680-/smd4-to-feedthrough-connection.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-02/smd4-to-feedthrough-connection.png)

<p class="callout info">**INFORMATION:** Verify that the motor is working correctly before sealing the vacuum chamber. Rectifying mistakes afterwards is inconvenient.</p>

#### Getting familiar with the motor leadouts

The motor leadout wires are polyimide film-wrapped, silver-plated OFHC solid copper and each is fitted with a 1.5 mm crimp socket terminal. The leads have a distinctive reddish/orange color. Each lead has a UHV compatible coloured glass bead fitted at the crimp end for identification. The phase leadout wires are much thicker than the thermocouple leadouts.[![motor leadout wires illustration_2.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/scaled-1680-/motor-leadout-wires-illustration-2.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/motor-leadout-wires-illustration-2.png)

<table id="bkmrk-motors-equiped-with-" style="border-collapse:collapse;width:100.372%;height:254.594px;border-width:1px;border-style:hidden;"><colgroup><col style="width:50%;"></col><col style="width:50%;"></col></colgroup><tbody><tr style="height:34.3958px;"><td class="align-center" style="vertical-align:middle;height:34.3958px;border-style:hidden;">Motors equipped with a ***Thermocouple:***</td><td class="align-center" style="vertical-align:middle;height:34.3958px;border-style:hidden;">Motors equipped with an ***RTD:***</td></tr><tr style="height:220.198px;"><td class="align-center" style="height:220.198px;">[![motor leadout wires TC illustration.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/motor-leadout-wires-tc-illustration.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/motor-leadout-wires-rtd-illustration.png)</td><td class="align-left" style="height:220.198px;">[![motor leadout wires RTD illustration.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/scaled-1680-/motor-leadout-wires-rtd-illustration.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/motor-leadout-wires-rtd-illustration.png)</td></tr></tbody></table>

When working with the motor leads:

- Keep the leadout wires of each phase twisted together (A+ and A- twisted together, B+ and B- twisted together)
- Keep the thermocouple or RTD leads twisted together

#### Identifying the leadouts when coloured beads are missing

If the identification beads are missing, the wires can be identified using an inexpensive multimeter, and a magnet. The multimeter must be capable of measuring resistance with a resolution of about 1 ohm.

**Phase leadouts**

These are the four thicker leadouts. Identify the two motor phases by their resistance, which will be in the range of 3 to 15 ohms, depending on the motor type. There is no electrical connection between the two phases, to the thermocouple/RTD or the case of the motor. Most of the resistance is in the windings of the motor and is virtually unaffected by shortening of the leads. Connect each phase to the appropriate drive terminals. The resistance of the wires from the feedthrough to the drive must be less than a few ohms.

<table id="bkmrk-thermocouple-leadout" style="border-collapse:collapse;width:99.2593%;height:236.075px;border-width:1px;border-style:hidden;"><colgroup><col style="width:49.5018%;"></col><col style="width:50.4969%;"></col></colgroup><tbody><tr style="height:236.075px;"><td rowspan="3" style="border-style:hidden;padding:5px;height:236.075px;">**Thermocouple Leadouts**

The thermocouple wires are much thinner than the phase leads, and there are two of them. If three wires are present, the motor has an RTD installed, see below for details. The thermocouple is insulated from the rest of the motor.

The two leads are of different material; one is made from Alumel, which is weakly magnetic, and the other Chromel, which is not. Use a magnet to find the Alumel wire, then connect as shown below.

</td><td rowspan="3" style="padding:5px;height:236.075px;"><table style="border-collapse:collapse;width:100.114%;height:95px;"><colgroup><col style="width:19.2461%;"></col><col style="width:71.0624%;"></col><col style="width:9.62303%;"></col></colgroup><tbody><tr><td style="background-color:rgb(109,111,113);"><span style="color:rgb(255,255,255);">Lead</span></td><td colspan="2" style="background-color:rgb(109,111,113);"><span style="color:rgb(255,255,255);">Connected to terminal marked</span></td></tr><tr><td>Alumel</td><td>Alumel, N, - (minus) or coloured blue</td><td style="background-color:rgb(45,65,156);">  
</td></tr><tr><td>Chromel</td><td>Chromel, P, + (plus) or coloured brown</td><td style="background-color:rgb(128,72,1);"> </td></tr></tbody></table>

</td></tr></tbody></table>

<table id="bkmrk-rtd-leadouts-as-per-" style="border-collapse:collapse;width:99.2607%;height:156.218px;border-width:1px;border-style:hidden;"><colgroup><col style="width:49.5015%;"></col><col style="width:50.4965%;"></col></colgroup><tbody><tr style="height:0px;"><td rowspan="3" style="border-style:hidden;padding:5px;height:129.435px;">**RTD Leadouts**

As per the thermocouple leads, but three instead of two leads. These must be identified by resistance; one pair of wires are connected at the motor end. These will measure a few ohms depending on cable length and are the ‘B1’ and ‘B2’ connections, which are interchangeable.

The remaining wire is the ‘A’ connection and should measure around 100 ohms to either ‘B1’ or ‘B2’.

</td><td rowspan="3" style="padding:5px;height:156.218px;"><table style="border-collapse:collapse;width:100.114%;height:88.611px;"><colgroup><col style="width:19.2461%;"></col><col style="width:71.0624%;"></col><col style="width:9.62303%;"></col></colgroup><tbody><tr style="height:29.537px;"><td style="background-color:rgb(109,111,113);height:29.537px;"><span style="color:rgb(255,255,255);">Lead</span></td><td colspan="2" style="background-color:rgb(109,111,113);height:29.537px;"><span style="color:rgb(255,255,255);">Connected to terminal marked</span></td></tr><tr style="height:29.537px;"><td style="height:29.537px;">A</td><td style="height:29.537px;">A, or coloured blue</td><td style="background-color:rgb(45,65,156);height:29.537px;">  
</td></tr><tr style="height:29.537px;"><td style="height:29.537px;">B1</td><td style="height:29.537px;">Chromel,B1, or coloured brown</td><td style="background-color:rgb(128,72,1);height:29.537px;"> </td></tr><tr><td>B2</td><td>B2, or coloured brown</td><td style="background-color:rgb(128,72,1);"> </td></tr></tbody></table>

</td></tr></tbody></table>

#### Reversing motor direction

If the motor direction is opposite to that required, simply swap the wires of one phase to reverse direction of rotation. For example, swap the A+ and A- leads and the motor will spin the other way.

#### Wiring the motor to a vacuum feedthrough

AML motors are commonly connected via an MLF18 feedthrough or a standard D-Sub feedthrough, but any suitable feedthrough may be used. This section discusses these options.

##### **9-Way D-Sub**

The VC9D-40CF 9-way D-Sub male feedthrough is suitable for one motor fitted with either a thermocouple or 3-wire RTD. The standard crimp terminals supplied with AML motor leadout wires should be removed and replaced with a VC9DF PEEK D-Sub female connector and crimp terminals. An optional VC9DB cable strain relief is also available.

[![DSub9 Expanded.PNG](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/scaled-1680-/dsub9-expanded.PNG)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/dsub9-expanded.PNG)

**Motor wires pinout for the VC9DF**

The illustration below shows the view into the non-mating side of the connector, into which the motor leads should be inserted, as shown below. <span style="text-decoration:underline;">Pass the wires through the backshell before crimping.</span>

<table id="bkmrk-connection-colour-mo" style="border-collapse:collapse;width:100%;height:352.948px;border:1px solid #95A5A6;"><colgroup><col style="width:20.7493%;"></col><col style="width:10.2511%;"></col><col style="width:11.8567%;"></col><col style="width:57.184%;"></col></colgroup><tbody><tr style="height:35.0625px;"><td style="background-color:rgb(109,111,113);height:35.0625px;border-color:rgb(149,165,166);"><span style="color:rgb(255,255,255);">Connection</span></td><td class="align-center" style="background-color:rgb(109,111,113);height:35.0625px;border-color:rgb(149,165,166);"><span style="color:rgb(255,255,255);">Colour</span></td><td class="align-center" style="background-color:rgb(109,111,113);height:35.0625px;vertical-align:middle;border-style:solid;border-color:rgb(149,165,166);"><span style="color:rgb(255,255,255);">Pin</span></td><td style="height:35.0625px;vertical-align:middle;border-style:hidden;border-color:rgb(149,165,166);"> Pin Insertion Side</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);border-color:rgb(149,165,166);">Phase A1</td><td class="align-center" style="height:35.0625px;background-color:rgb(4,124,0);border-color:rgb(149,165,166);"><span style="color:rgb(255,255,255);">Green</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);border:0.5px solid rgb(149,165,166);">4</td><td class="align-center" rowspan="9" style="height:317.885px;border-style:hidden;vertical-align:top;border-color:rgb(149,165,166);">[![D-Sub9 Female.PNG](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/scaled-1680-/d-sub9-female.PNG)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/d-sub9-female.PNG)</td></tr><tr style="height:36.7292px;"><td style="height:36.7292px;background-color:rgb(255,255,255);border-color:rgb(149,165,166);">Phase A2</td><td class="align-center" style="height:36.7292px;background-color:rgb(109,110,112);border-color:rgb(149,165,166);"><span style="color:rgb(255,255,255);">Grey</span></td><td class="align-center" style="height:36.7292px;background-color:rgb(255,255,255);border:0.5px solid rgb(149,165,166);">3</td></tr><tr style="height:35.7188px;"><td style="height:35.7188px;background-color:rgb(244,244,244);border-color:rgb(149,165,166);">Phase B1</td><td class="align-center" style="height:35.7188px;background-color:rgb(0,0,0);border-color:rgb(149,165,166);"><span style="color:rgb(255,255,255);">Black</span></td><td class="align-center" style="height:35.7188px;background-color:rgb(244,244,244);border:0.5px solid rgb(149,165,166);">2</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(255,255,255);border-color:rgb(149,165,166);">Phase B2</td><td class="align-center" style="height:35.0625px;border-color:rgb(149,165,166);">White</td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);border:0.5px solid rgb(149,165,166);">1</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);border-color:rgb(149,165,166);">Thermocouple +</td><td class="align-center" style="height:35.0625px;background-color:rgb(128,72,1);border-color:rgb(149,165,166);"><span style="color:rgb(255,255,255);">Brown</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);border:0.5px solid rgb(149,165,166);">8</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(255,255,255);border-color:rgb(149,165,166);">Thermocouple -</td><td class="align-center" style="height:35.0625px;background-color:rgb(45,65,156);border-color:rgb(149,165,166);"><span style="color:rgb(255,255,255);">Blue</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);border:0.5px solid rgb(149,165,166);">7</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);border-color:rgb(149,165,166);">RTD A</td><td class="align-center" style="height:35.0625px;background-color:rgb(45,65,156);border-color:rgb(149,165,166);"><span style="color:rgb(255,255,255);">Blue</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);border:0.5px solid rgb(149,165,166);">5</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(255,255,255);border-color:rgb(149,165,166);">RTD B1</td><td class="align-center" style="height:35.0625px;background-color:rgb(128,72,1);border-color:rgb(149,165,166);"><span style="color:rgb(255,255,255);">Brown</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);border:0.5px solid rgb(149,165,166);">6</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);border-color:rgb(149,165,166);">RTD B2</td><td class="align-center" style="height:35.0625px;background-color:rgb(128,72,1);border-color:rgb(149,165,166);"><span style="color:rgb(255,255,255);">Brown</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);border:0.5px solid rgb(149,165,166);">9</td></tr></tbody></table>

##### **18-Way MLF18**

The MLF18F feedthrough has 18 x 1.5 mm gold-plated feedthrough pins and is suitable for up to three motors fitted with thermocouples or up to two motors fitted with 3-wire RTDs. An internal bakeable connector, MLF18VCF, is available into which the crimp terminals on the motor leads are inserted. This significantly reduces the risk of short-circuits and makes the installation more convenient.

<table id="bkmrk-using-the-mlf18f-fee" style="border-collapse:collapse;border-width:1px;border-style:hidden;"><colgroup><col></col><col></col></colgroup><tbody><tr><td style="border-style:hidden;">Using the MLF18F feedthrough and MLF18VCF vacuum side connector:</td><td style="border-style:hidden;">Alternatively, plug crimps directly onto the feedthrough pins of the MLF18F:</td></tr><tr><td class="align-center" style="border-style:hidden;">[![vacuum side motor connection mlf18vcf.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/scaled-1680-/vacuum-side-motor-connection-mlf18vcf.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/vacuum-side-motor-connection-mlf18vcf.png)

</td><td class="align-left" style="border-style:hidden;">[![vacuum side motor connection straight into mlf18f 3.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/scaled-1680-/vacuum-side-motor-connection-straight-into-mlf18f-3.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/vacuum-side-motor-connection-straight-into-mlf18f-3.png)

</td></tr><tr><td style="border-style:hidden;">Mating side identified by dot. Motor lead terminals should be inserted in the other side.</td><td style="border-style:hidden;">  
</td></tr></tbody></table>

<table id="bkmrk-standard-pinout-for-" style="border-collapse:collapse;width:100.989%;height:384.937px;border-width:1px;border-style:hidden;"><colgroup><col style="width:49.9993%;"></col><col style="width:49.9993%;"></col></colgroup><tbody><tr style="height:28.7963px;"><td colspan="2" style="height:28.7963px;border-style:hidden;">**Standard pinout for the MLF18VCF**</td></tr><tr style="height:45.6019px;"><td colspan="2" style="height:45.6019px;border-style:hidden;">The illustration below shows the view into the non-mating side of the connector, into which the motor leads should be inserted, as shown below.</td></tr><tr style="height:310.539px;"><td style="height:310.539px;"><table style="border-collapse:collapse;width:100.22%;height:350.625px;"><colgroup><col style="width:36.5665%;"></col><col style="width:19.3133%;"></col><col style="width:22.6609%;"></col><col style="width:21.3734%;"></col></colgroup><tbody><tr style="height:35.0625px;"><td style="background-color:rgb(109,111,113);height:35.0625px;"><span style="color:rgb(255,255,255);">Connection</span></td><td class="align-center" style="background-color:rgb(109,111,113);height:35.0625px;"><span style="color:rgb(255,255,255);">Colour</span></td><td class="align-center" style="background-color:rgb(109,111,113);height:35.0625px;vertical-align:middle;"><span style="color:rgb(255,255,255);">Motor 1</span></td><td class="align-center" style="background-color:rgb(109,111,113);height:35.0625px;vertical-align:middle;"><span style="color:rgb(255,255,255);">Motor 2</span></td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);">Phase A1</td><td class="align-center" style="height:35.0625px;background-color:rgb(4,124,0);"><span style="color:rgb(255,255,255);">Green</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">1</td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">7</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(255,255,255);">Phase A2</td><td class="align-center" style="height:35.0625px;background-color:rgb(109,110,112);"><span style="color:rgb(255,255,255);">Grey</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">3</td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">9</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);">Phase B1</td><td class="align-center" style="height:35.0625px;background-color:rgb(0,0,0);"><span style="color:rgb(255,255,255);">Black</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">2</td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">8</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(255,255,255);">Phase B2</td><td class="align-center" style="height:35.0625px;">White</td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">4</td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">10</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);">Thermocouple +</td><td class="align-center" style="height:35.0625px;background-color:rgb(128,72,1);"><span style="color:rgb(255,255,255);">Brown</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">5</td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">11</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(255,255,255);">Thermocouple -</td><td class="align-center" style="height:35.0625px;background-color:rgb(45,65,156);"><span style="color:rgb(255,255,255);">Blue</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">6</td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">12</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);">RTD A</td><td class="align-center" style="height:35.0625px;background-color:rgb(45,65,156);"><span style="color:rgb(255,255,255);">Blue</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">13</td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">16</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(255,255,255);">RTD B1</td><td class="align-center" style="height:35.0625px;background-color:rgb(128,72,1);"><span style="color:rgb(255,255,255);">Brown</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">14</td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">17</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);">RTD B2</td><td class="align-center" style="height:35.0625px;background-color:rgb(128,72,1);"><span style="color:rgb(255,255,255);">Brown</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">15</td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">18</td></tr></tbody></table>

</td><td class="align-center" style="height:310.539px;border-style:hidden;">[![mlf18vcf-pinout.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-07/Y0dmlf18vcf-pinout.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/mlf18ac-pinning.png)</td></tr></tbody></table>

##### **Using other feedthroughs**  


AML stepper motors can be ordered with either a K-Type thermocouple, or 3-wire PT100 RTD. The former requires 6 pins, and the latter 7 pins.

When using motors installed with a thermocouple, it is not necessary to use a thermocouple vacuum feedthrough or extension wires, as the error introduced by incompatible feedthrough material is usually less than 5 °C and the temperature measurement is not required to be very precise.

<div id="bkmrk-preparation-of-motor"><table style="border-collapse:collapse;width:100%;border-width:1px;border-style:hidden;"><colgroup><col style="width:70.4321%;"></col><col style="width:29.5267%;"></col></colgroup><tbody><tr><td class="ps-0" colspan="2" style="border-style:hidden;">**Preparation of motor leadouts for connection to other feedthroughs**</td></tr><tr><td class="ps-0" style="border-style:hidden;">If making custom terminations for the motor leads, the installed crimps must be removed, and the wire ends stripped of insulation. Standard motors are fitted with Polyimide film-wrapped leads (illustrated below), and radiation-hard motors are fitted with polyimide-enamelled leads.

Polyimide is strong, flexible and abrasion-resistant and therefore difficult to strip. The simplest method of stripping polyimide film is to cut a ring with a sharp knife and withdraw the cylinder of insulation over the end of the wire.

Be careful not to mark the conductor surface with the knife. Strip the enamelled radiation-hard leads by scraping with a sharp knife. Either type of lead may be stripped with a suitable high-speed rotary stripper. Do not use a thermal stripper.

</td><td class="align-center" style="border-style:hidden;">[![polyamide wire stripping.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/scaled-1680-/polyamide-wire-stripping.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/polyamide-wire-stripping.png)</td></tr></tbody></table>

</div>#### Motor wiring between drive and vacuum feedthrough

##### AML standard cables

Three standard motor cables are offered:

**CAB-D15D9**: 3 metres long. D-sub 15-way male connector for connecting to the SMD4. D-sub 9-way female connector for connecting to a feedthrough, such as AML's VF9D-40CF.

**CAB-D15MLF**: 3 metres long. D-sub 15-way male connector for connecting to the SMD4. MLF18AC connector for connecting to AML's MLF18F feedthrough.

<span style="font-family:'DejaVu Sans', '-apple-system', BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;font-size:14px;">**CAB-3D15MLF**:</span> 3 metres long. 3x D-sub 15-way male connectors for connecting up to 3 separate SMD4s. MLF18AC connector for connecting to AML's MLF18F feedthrough.

##### Custom cables

Alternatively, AML supply multiple air-side connectors which can be used to make custom leads to mate with the MLF18F or D-sub electrical feedthroughs. These are supplied with a kit that includes the crimps as well as instructions for their use.

Leads between the MLF18AC and SMD4 should be assembled according to the following guidance for safe, reliable operation and continued compliance with EMC standards.

**Cable requirements:**

<table id="bkmrk-rated-voltage-%3E%3D-300" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:20.6349%;"></col><col style="width:79.4445%;"></col></colgroup><tbody><tr><td>**Rated voltage**</td><td>&gt;= 300 V rms</td></tr><tr><td>**Rated current**</td><td>&gt; 1.5 A rms</td></tr><tr><td>**Construction**</td><td>Twisted pairs plus overall screen.

Foil screen plus drain wire (of same or greater cross-sectional area as main cores) acceptable.

Foil plus braided screen better.

</td></tr><tr><td>**Resistance**</td><td>Maximum cable length is limited by the resistance of the cores; total round-trip cable resistance per phase should be kept to less than a few ohms.

Consult the cable manufacturer's data for these details. Excessive cable length causes a reduction in phase voltage at the motor compromising speed/torque characteristics.

The RTD circuit is compensated for cable length.

</td></tr><tr><td>**Qty. cores**</td><td>As required.

One motor requires 6 cores when fitted with a thermocouple, or 7 if fitted with an RTD

</td></tr></tbody></table>

**Signal pairing:** Cable cores must be twisted together in pairs. This reduces radiated emissions from the cable and improves the immunity of the RTD and thermocouple signals to interference; use:

- One pair for phase A
- One pair for phase B
- One pair for thermocouple
- One pair for RTD signals A and B1, plus spare wire from another pair for B2.

Do not pair phase wires with temperature sensor wires.

**Wiring up to the MLF18AC airside connector**

The MLF18AC is supplied with comprehensive instructions detailing correct usage of the connector. The pinout to match with the standard MLF18F + MLF18VCF pinning described in section [Motor wiring](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/installation#bkmrk-motor-wiring) is shown below. Note that the illustration shows the MLF18AC looking into the non-mating side of the connector, i.e. the side into which crimps are inserted.

<table id="bkmrk-connection-colour-mo-1" style="border-collapse:collapse;width:100%;height:409.803px;border-width:1px;border-style:hidden;"><colgroup><col style="width:52.0089%;"></col><col style="width:47.9499%;"></col></colgroup><tbody><tr style="height:109.865px;"><td rowspan="2" style="height:409.803px;"><span style="color:rgb(255,255,255);">  
</span><table style="border-collapse:collapse;width:100.22%;height:350.625px;"><colgroup><col style="width:36.5731%;"></col><col style="width:19.3168%;"></col><col style="width:22.6752%;"></col><col style="width:21.367%;"></col></colgroup><tbody><tr style="height:35.0625px;"><td style="background-color:rgb(109,111,113);height:35.0625px;"><span style="color:rgb(255,255,255);">Connection</span></td><td class="align-center" style="background-color:rgb(109,111,113);height:35.0625px;"><span style="color:rgb(255,255,255);">Colour</span></td><td class="align-center" style="background-color:rgb(109,111,113);height:35.0625px;vertical-align:middle;"><span style="color:rgb(255,255,255);">Motor 1</span></td><td class="align-center" style="background-color:rgb(109,111,113);height:35.0625px;vertical-align:middle;"><span style="color:rgb(255,255,255);">Motor 2</span></td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);">Phase A1</td><td class="align-center" style="height:35.0625px;background-color:rgb(4,124,0);"><span style="color:rgb(255,255,255);">Green</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">1</td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">7</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(255,255,255);">Phase A2</td><td class="align-center" style="height:35.0625px;background-color:rgb(109,110,112);"><span style="color:rgb(255,255,255);">Grey</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">3</td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">9</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);">Phase B1</td><td class="align-center" style="height:35.0625px;background-color:rgb(0,0,0);"><span style="color:rgb(255,255,255);">Black</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">2</td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">8</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(255,255,255);">Phase B2</td><td class="align-center" style="height:35.0625px;">White</td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">4</td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">10</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);">Thermocouple +</td><td class="align-center" style="height:35.0625px;background-color:rgb(128,72,1);"><span style="color:rgb(255,255,255);">Brown</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">5</td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">11</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(255,255,255);">Thermocouple -</td><td class="align-center" style="height:35.0625px;background-color:rgb(45,65,156);"><span style="color:rgb(255,255,255);">Blue</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">6</td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">12</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);">RTD A</td><td class="align-center" style="height:35.0625px;background-color:rgb(45,65,156);"><span style="color:rgb(255,255,255);">Blue</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">13</td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">16</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(255,255,255);">RTD B1</td><td class="align-center" style="height:35.0625px;background-color:rgb(128,72,1);"><span style="color:rgb(255,255,255);">Brown</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">14</td><td class="align-center" style="height:35.0625px;background-color:rgb(255,255,255);">17</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;background-color:rgb(244,244,244);">RTD B2</td><td class="align-center" style="height:35.0625px;background-color:rgb(128,72,1);"><span style="color:rgb(255,255,255);">Brown</span></td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">15</td><td class="align-center" style="height:35.0625px;background-color:rgb(244,244,244);">18</td></tr></tbody></table>

</td><td style="height:109.865px;border-style:hidden;">Looking into the non-mating face of the MLF18AC, into which crimps are inserted

</td></tr><tr style="height:299.938px;"><td class="align-center" style="height:299.938px;border-style:hidden;">[![mlf18ac pinningA.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/dtcmlf18ac-pinninga.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/mlf18ac-pinning.png)</td></tr></tbody></table>

### Encoder

<table id="bkmrk-connector%3A-da-26-f-d" style="border-collapse:collapse;width:100%;height:975.135px;border-width:1px;border-style:solid;"><colgroup><col style="width:33.3731%;"></col><col style="width:6.67461%;"></col><col style="width:59.9523%;"></col></colgroup><tbody><tr style="height:60.1875px;"><td colspan="3" style="height:60.1875px;">Connector: DA-26-F

D-Sub, 26 ways, female, high density.

</td></tr><tr style="height:35.0625px;"><td rowspan="26" style="height:914.948px;"><span style="color:rgb(224,62,45);">[![d-sub 26.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/d-sub-26.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/d-sub-26.png)</span>

</td><td class="align-center" style="height:35.0625px;">1</td><td style="width:77.75pt;white-space:nowrap;border-width:1pt;border-style:solid;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(224,62,45);"><span style="color:rgb(255,255,255);">5V</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">2</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;background-color:rgb(251,238,184);height:35.0625px;border-style:solid;"><span style="color:rgb(0,0,0);">BiSS MA-</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">3</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;background-color:rgb(251,238,184);height:35.0625px;border-style:solid;"><span style="color:rgb(0,0,0);">BiSS MA+</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">4</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;border-width:1pt 1pt 1pt;"><span style="color:rgb(0,0,0);">GND</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">5</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;background-color:rgb(251,238,184);height:35.0625px;"><span style="color:rgb(0,0,0);">BiSS SLO-</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">6</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;">Reserved, do not make connection to this pin.</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">7</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;border-width:1pt 1pt 1pt;"><span style="color:rgb(0,0,0);">GND</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">8</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(224,62,45);"><span style="color:rgb(255,255,255);">5V</span></td></tr><tr style="height:38.375px;"><td class="align-center" style="height:38.375px;">9</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:38.375px;border-width:1pt 1pt 1pt;"><span style="color:rgb(0,0,0);">GND</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">10</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(236,202,250);border-style:solid;"><span style="font-size:12pt;line-height:150%;color:rgb(0,0,0);">INC E</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">11</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(236,202,250);border-style:solid;"><span style="font-size:12pt;line-height:150%;color:rgb(0,0,0);">INC A-</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">12</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(236,202,250);border-style:solid;"><span style="font-size:12pt;line-height:150%;color:rgb(0,0,0);">INC A+</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">13</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(236,202,250);border-style:solid;"><span style="font-size:12pt;line-height:150%;color:rgb(0,0,0);">INC B-</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">14</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(236,202,250);border-style:solid;"><span style="font-size:12pt;line-height:150%;color:rgb(0,0,0);">INC B+</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">15</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(236,202,250);border-style:solid;"><span style="font-size:12pt;line-height:150%;color:rgb(0,0,0);">INC Z-</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">16</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(236,202,250);border-style:solid;"><span style="font-size:12pt;line-height:150%;color:rgb(0,0,0);">INC Z+</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">17</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(236,202,250);border-style:solid;"><span style="font-size:12pt;line-height:150%;color:rgb(0,0,0);">INC P</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">18</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(236,202,250);border-style:solid;"><span style="font-size:12pt;line-height:150%;color:rgb(0,0,0);">INC Q</span></td></tr><tr style="height:35.0729px;"><td class="align-center" style="height:35.0729px;">19</td><td rowspan="5" style="width:104px;white-space:nowrap;padding:0cm 5.4pt;height:175.323px;">Reserved, do not make connection to this pin.  
</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">20</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">21</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">22</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">23</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">24</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(251,238,184);border-style:solid;"><span style="color:rgb(0,0,0);">BiSS SLO+</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">25</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;background-color:rgb(224,62,45);border-style:solid;"><span style="font-size:12pt;line-height:150%;color:rgb(255,255,255);">5V</span></td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">26</td><td style="width:77.75pt;white-space:nowrap;padding:0cm 5.4pt;height:35.0625px;"><span style="font-size:12pt;line-height:150%;color:rgb(0,0,0);">GND</span></td></tr></tbody></table>

### I/O


<table id="bkmrk-connector%3A-de9-f-d-s" style="border-collapse:collapse;width:100%;height:373.021px;"><colgroup><col style="width:250px;"></col><col style="width:50px;"></col><col style="width:62.6277%;"></col></colgroup><tbody><tr style="height:57.4583px;"><td colspan="3" style="height:57.4583px;">Connector: DE9-F

D-Sub, 9 ways, female

</td></tr><tr style="height:35.0625px;"><td rowspan="9" style="height:315.562px;">[![d-sub 9.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/scaled-1680-/d-sub-9.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-03/d-sub-9.png)

</td><td class="align-center" style="height:35.0625px;">1</td><td style="height:35.0625px;">GND</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">2</td><td style="background-color:rgb(248,202,198);height:35.0625px;">Fault (Output, open collector)</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">3</td><td style="background-color:rgb(236,202,250);height:35.0625px;">Limit 1/positive</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">4</td><td style="background-color:rgb(191,237,210);height:35.0625px;">Enable</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">5</td><td style="background-color:rgb(191,237,210);height:35.0625px;">Step</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">6</td><td style="background-color:rgb(248,202,198);height:35.0625px;">Reset fault (Input, active low)</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">7</td><td style="background-color:rgb(236,202,250);height:35.0625px;">Limit 2/negative</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">8</td><td style="background-color:rgb(191,237,210);height:35.0625px;">SDE COM</td></tr><tr style="height:35.0625px;"><td class="align-center" style="height:35.0625px;">9</td><td style="background-color:rgb(191,237,210);height:35.0625px;">Direction</td></tr></tbody></table>

#### Fault output and fault reset

<div id="bkmrk-the-smd3-disables-th">The SMD4 disables the motor under certain fault conditions, see section [Faults](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/operation#bkmrk-faults). When this happens, the open collector ‘Fault’ output is set and may be used to signal to an external controller that the SMD4 is in a fault state.</div><div id="bkmrk--11">  
</div><div id="bkmrk-fault-states-are-lat">Fault states are latching; once set the fault condition must be removed and the fault reset before normal operation may resume using either a remote interface command (see [CLR](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/communications-protocol#bkmrk-sys%3Aclr-%E2%80%93-clear-faul)) or pulling the ‘Reset fault’ signal to ‘GND’. This does not apply to the ‘EN’ (enable) input when in step direction mode, i.e. the enable input is not latching, and normal operation will resume immediately on restoring the enable input state. See section [Faults](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/operation#bkmrk-faults) for details.</div>#### Limits

Duplicated from the [motor connector](#bkmrk-limits).

#### Step, direction and enable

The step direction enable interface is an industry-standard interface allowing an external motion controller to generate stepping sequences, bypassing the SMD4’s internal motion controller. The inputs are galvanically isolated with three opto-isolators, and share a common connection, ‘SDE COM’. See section [Step/Direction](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/communications-protocol#bkmrk-step%2Fdirection) for details.

### Joystick

<table id="bkmrk-1-gnd-2-cw-3-ccw-4-d" style="border-collapse:collapse;width:100.495%;height:104.092px;border:0.5px solid rgb(206,212,217);"><colgroup><col style="width:17.1758%;"></col><col style="width:50px;"></col><col style="width:76.4827%;"></col></colgroup><tbody><tr style="height:27.5231px;"><td rowspan="4" style="height:104.092px;padding:5px;vertical-align:top;border:0.5px solid rgb(206,212,217);">[![rj connector.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/rj-connector.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/lzGdtdpower-connector-pinout.png)

</td><td class="align-center" style="height:28px;vertical-align:middle;padding:5px;border:0.5px solid rgb(206,212,217);">1</td><td style="height:28px;vertical-align:middle;padding:5px;border:0.5px solid rgb(206,212,217);">GND</td></tr><tr style="height:27.5231px;"><td class="align-center" style="height:28px;vertical-align:middle;padding:5px;border:0.5px solid rgb(206,212,217);">2</td><td class="align-left" style="height:28px;vertical-align:middle;padding:5px;border:0.5px solid rgb(206,212,217);">CW</td></tr><tr style="height:27.5231px;"><td class="align-center" style="vertical-align:middle;padding:5px;height:28px;border:0.5px solid rgb(206,212,217);">3</td><td style="vertical-align:middle;padding:5px;height:28px;border:0.5px solid rgb(206,212,217);">CCW</td></tr><tr style="height:21.5231px;"><td class="align-center" style="vertical-align:middle;padding:5px;height:28px;border:0.5px solid rgb(206,212,217);">4</td><td style="vertical-align:middle;padding:5px;height:28px;border:0.5px solid rgb(206,212,217);">DETECT</td></tr></tbody></table>

<div id="bkmrk--17"></div>For connection of a two-button joystick allowing basic motor control, for example, during commissioning. AML supply the SMD3 Joystick, part number ‘SMD3JOY’, which is compatible with the SMD4, for this purpose. The joystick can be used any time the SMD4 is in remote mode. See [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-using-the-joystick) for more on joystick functionality.

If designing your own joystick or device to connect to this port:

- Inputs have internal pull-ups
- Activate the function by shorting ‘CW’, ‘CCW’ or ‘DETECT’ to pin 1, ‘GND’
- ‘DETECT’ is used to signal to the SMD4 that the joystick is plugged in, and thus should be left shorted to GND.

Logic level signals may also be used; 12 V max.

### Indicator lights

<table id="bkmrk-green-status%2Fpower-i" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:9.07988%;"></col><col style="width:90.9846%;"></col></colgroup><tbody><tr><td style="background-color:rgb(45,194,107);">**<span style="color:rgb(255,255,255);">Green</span>**</td><td><span style="text-decoration:underline;">Status/power indicator</span>

Blinks when the operation mode changes and while in bake.

</td></tr><tr><td style="background-color:rgb(224,62,45);">**<span style="color:rgb(255,255,255);">Red</span>**</td><td><span style="text-decoration:underline;">Error indicator</span>

On or flashing indicates and error. See section [Faults](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/operation#bkmrk-faults) for fault indications. When a fault is present, motor operation is disabled.

</td></tr></tbody></table>

# Operation

<span style="color:rgb(34,34,34);font-size:1.33em;font-weight:bold;">Getting started</span>

The quickest way to get started with the SMD4 and evaluate the features described in this section (having completed wiring up according to the previous chapter) is to install the SMD4 software on your PC (see [Software](https://bookstack.vps-da8d40f3.arunmicro.com/link/29#bkmrk-page-title) section), power on the SMD4 and connect it with the USB lead to the PC.

AML Device Control software allows one or more SMD4 units to be combined into a system and controlled individually or as a group. The software exposes all configuration items and makes it quick and easy to change any setting. Movements can be planned and executed. Live readouts of position, speed and status are presented.

Start the software, then click "Add device" in the top left corner. A list of available devices will appear. Click your device to select it, then click the 'Add device' button.

<table id="bkmrk-" style="border-collapse:collapse;width:100%;border-width:1px;border-style:hidden;"><colgroup><col style="width:39.6787%;"></col><col style="width:60.4007%;"></col></colgroup><tbody><tr><td>[![Add Device.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/add-device.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/add-device.png)</td><td>[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/7IDimage.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/7IDimage.png)

</td></tr></tbody></table>

Your new device appears in the tree on the left. It can be configured using the properties panel on the right hand side, while the central window shows speed, position and temperature readouts from the device, and provides controls for planning and making movements.

[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/8x4image.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/8x4image.png)See [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/29#bkmrk-page-title) for more detail on the software.

#### Advanced users, system integrators

The remote interface uses a straightforward text based protocol, so it is easy to send commands to it using for example:

- Terminal applications
- Embedded systems
- Your own software

A C# API is available to speed up development of your own applications. Wrappers are available for other languages, including Python. The API is extensively documented and very quick to get up and running with. A quick start guide is available [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/93#bkmrk-page-title).

The remote interface protocol is described in section [remote interfaces](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/remote-interfaces).

### Operating modes

The SMD4 has several operating modes:

- Normal - The default and usual operating mode
- Step and direction - Control the motor using an opto-isolated industry standard step direction interface
- Bake - Controlled heating of the motor to drive off adsorbed gasses

Configuration can be performed at any time and in any mode using one of the remote interfaces (USB, LAN or Serial).

Mode can be changed only when the motor is stopped, which can be determined from the standby flag returned in every communication, see [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-status-flags-%28sflags). Unless otherwise noted, activities described in this manual are performed in normal mode.

### Persistence of settings

All changes made to the configuration via the remote interface are volatile (i.e. not retained on power cycling) unless the store command is executed before powering off. The AML Device Control software warns you of this when closing the application, but if writing a custom application to control the SMD4, your application must handle this if settings are to be persisted.

The SMD4 will always load the last stored settings on power on, or if the store command has not been previously used, defaults are loaded as per section [Command Reference](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-command-reference). If settings become corrupted, for example, the write endurance of the memory in which the settings are stored is exceeded, the SMD4 loads defaults as identified above, and a fault indication is given, see section [Faults](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-faults).

<p class="callout info">**INFORMATION:** Write endurance  
The memory in which settings are stored has an endurance of about 1 Million write cycles. Only use the store command when necessary, for example, take care that your application does not perform multiple redundant store commands.</p>

<p class="callout info">Remember to save your settings after making configuration changes!</p>

### Units

Stepper motors work in steps, and as such the core unit of the SMD4 is steps. However, this is not always meaningful in the end application, so instead you can choose a preferred unit to work in, including:

- Meters, millimeters and microns
- Inches and thou
- Degrees, radians and revolutions

To use units other than steps, the displacement per step (distance the mechanism moves, per step) must be correctly configured. The chosen unit applies globally, for example:

- Command moves such as, move relative + 10 mm
- Specify speed as 27 mm/s
- Specify acceleration as 50 mm/s^2
- Configure virtual limits at -100 mm and +100 mm

You can freely switch between like units (e.g. meters and inches), and between any unit and steps. All values are automatically converted as required. There is no loss of precision when switching between steps and other units.

When working in units other than steps, your input may not translate into an integer number of steps. The SMD4 rounds such values to the closest integer step value internally at the time of use and at the latest possible point in the processing pipeline. Your original input is always preserved.

<p class="callout info">To use units other than steps, mechanism displacement per step must be configured correctly. This is typically called resolution in the mechanism documentation and is discussed later.</p>

<p class="callout warning">Unpredictable behaviour may result if units other than steps are used and mechanism displacement per step is not configured correctly.</p>

### Mechanism setup and presets

There can be a a significant number of parameters to configure to prepare the SMD4 for use with a particular mechanism. This may include setting up encoders, limit switches, mechanism resolution and others.

The SMD4 has built in presets for most standard AML mechanisms to allow you to get up and running with a basic working configuration as quickly as possible. To use presets, locate the preset section in the properties and search for your mechanism in the list. You can enter partial or full part numbers to find your mechanism:

[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/n2pimage.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/n2pimage.png)

Click on the desired mechanism to select it and apply the preset configuration. Review the new configuration by inspecting the SMD4 properties. Then, experiment cautiously to confirm that the mechanism is behaving as expected. Start by making small moves at low speed until confident that the setup is correct.

<p class="callout info">Before using the preset system, review the remainder of this manual to gain a proper understanding of the drive and how it operates, then return to this section.</p>

Points to note regarding presets:

1. Several basic settings are always made (selecting an appropriate unit, displacement per step, encoder and limit switch configuration)
2. Only specific settings are changed according to the preset selected, all others are left untouched. The list of changes the preset system will make varies by preset and is not published. Presets reside in the SMD4 firmware and support for new mechanisms will be added as required via firmware update.
3. Various features are configured but not necessarily enabled. For example, limit switches if relevant are configured but no change is made to the global enable of limit switches, virtual limits are configured if relevant, but the virtual limit function enable state is not changed.
4. If an encoder is applicable, autoflip is executed to determine correct encoder orientation. This will cause the mechanism to move a small amount, see [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-encoder).
5. Motor currents and profile are not changed. It is the users responsibility to configure these as required. This is discussed [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-motor-current).

<p class="callout warning"><span style="font-family:'DejaVu Sans', '-apple-system', BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;font-size:14px;">**WARNING:** It is the users responsibility to verify the changes that the preset system has made before using the mechanism, and to use appropriate caution and restraint in using the mechanism until it has been established that setup is correct.</span></p>

### Basic motor configuration

Before running the motor, configure it first. A good order to approach this is:

- Select temperature sensor
- Configure motor currents
- Configure profile (speeds, acceleration ramps etc.)

The settings required will depend on your application and mechanism. The default settings provided are usually sufficient to get the motor spinning, but you'll need to adjust and refine these to suit. Read this section to learn more.

#### Steps

Stepper motors move in discrete increments, called steps. Typically there are 200 steps per revolution. When performed in quick succession, smooth continuous movement is possible. Precise movements can be made to a specific position by executing the desired number of steps. A step counter tracks the current step count, and position can be determined.

The number of steps is determined by the mechanical configuration of the motor itself. The motor drive applies varying patterns of current to the motor windings which pull the shaft to each motor step in turn and this is what results in rotation. The current applied to the motor determines how much torque is generated, and the rate at which the motor moves to each step position determines motor speed, called step frequency.

When turning the motor shaft by hand, you can feel a small 'notch' as you pass each step. This is called detent torque. The motor shaft aligns itself with the closest natural step position. Vacuum mechanisms are usually, and should be where possible, designed with balanced loads such that when the mechanism is moved to the desired place, the detent torque alone is enough to hold it in position and power can be removed from the motor.

#### Synchronicity

When the motor moves according to the sequence of steps it is driven with, it is said to be in sync, or maintaining synchronicity. Provided this condition is maintained, precise open loop control is possible. Open loop control is where movement is planned and made based on the assumption that the motor moved where it was commanded to.

Synchronicity can be lost under various circumstances, for example:

- Motor not powerful enough to move load
- Programmed acceleration is too fast for the motor to follow
- Inertia in the load overcomes the motor

Loss of sync may result in lost steps or a stall, in which the motor shaft stops rotating, or does so erratically.

#### Resonances

Stepper motors are susceptible to encountering resonances; mechanical oscillations that occur at particular operating points. Factors such as the mechanical load, speed and current all affect where and over what range resonances can occur. Resonance can result in loss of sync and or stall. Mechanisms are designed with this in mind, and aim to place any such resonances outside the applicable range of operating points. Microstepping and changes to the motor profile, discussed in the next sections can also be used to shift resonance points outside the desired area of operation.

### Temperature sensor selection

AML motors can be supplied with either a K-Type thermocouple or PT100 RTD temperature sensor. Ensure the sensor is connected to the thermocouple or RTD input on the motor connector, and make the appropriate selection. The temperature sensor select command allows selection between thermocouple and RTD.

If the temperature sensor was absent, misconnected, or the wrong type of sensor was selected, the drive may be in an error state which you'll need to clear before the motor can spin. See [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-clearing-a-fault) for information on clearing faults.

<p class="callout info">**INFORMATION:** The motor is disabled if the temperature sensor is misconnected, faulty or the temperature measurement exceeds 190 °C in order to protect the motor from possible damage to the insulation material.  
</p>

<p class="callout info">Check that the motor temperature sensor selection matches that of your motor.  
</p>

<p class="callout info">When using a thermocouple, avoid significant temperature gradients across the thermocouple leads and connector on the SMD4.</p>

### Motor currents

Different currents can be set for each phase of operation:

<table class="MsoNormalTable" id="bkmrk-%C2%A0-applies-when-accel" style="width:848px;border-collapse:collapse;height:355.192px;border-spacing:0px;"><tbody><tr style="height:38.125px;"><td style="width:163.669px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:5.4pt;height:38.125px;"></td><td style="width:655.336px;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(109,111,113);padding:5.4pt;height:38.125px;"><span style="color:rgb(255,255,255);">Applies when</span>

</td></tr><tr style="height:105.3px;"><td style="width:163.669px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:5.4pt;height:105.3px;"><span style="color:#000000;">Acceleration</span>

</td><td style="width:655.336px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:5.4pt;height:105.3px;"><span style="color:#000000;">Motor is running but not at target frequency, i.e. during acceleration and deceleration. This allows you to set a higher current during acceleration (to overcome inertia of a large load, for example) and revert to a lower current once the load is moving, thus reducing motor power dissipation and extending run time. If you do not wish to use this feature, simply set acceleration current to equal run current.</span>

</td></tr><tr style="height:106.467px;"><td style="width:163.669px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:5.4pt;height:106.467px;">Run

</td><td style="width:655.336px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:5.4pt;height:106.467px;">Current used when motor is at target run step frequency.

Must be set equal to or smaller than acceleration current. If a change to run current makes it greater than the acceleration current, the acceleration current is automatically adjusted to be equal to run current.

</td></tr><tr style="height:105.3px;"><td style="width:163.669px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:5.4pt;height:105.3px;"><span style="color:#000000;">Hold</span>

</td><td style="width:655.336px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:5.4pt;height:105.3px;"><span style="color:#000000;">Motor is stopped and is only necessary where the motor detent torque is not enough to prevent undesirable movement of the load. The cost of using hold current is increased motor temperature under vacuum. Therefore, where possible, mechanisms should be designed to be statically balanced, and the hold current should be set to 0.</span>

</td></tr></tbody></table>

When the motor starts moving, acceleration current is applied immediately. When the motor stops after the deceleration, two additional states must be traversed before the acceleration current is reduced to hold current, first, a configurable delay during which acceleration current continues to be applied (called ‘standstill’ state), followed by a configurable delay during which acceleration current is reduced to hold current (called ‘going to standby’ state). This is shown in the graphic below:

<table id="bkmrk-%3Cdo-proper-version-o" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:99.881%;"></col></colgroup><tbody><tr><td>[![Motor Currents.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/motor-currents.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/motor-currents.png)</td></tr></tbody></table>

#### Standstill 

Period after motor has stopped during which acceleration current is still applied. Adjustable between about 0 and 5.57 seconds using the ‘Power down delay’ setting \[<span style="color:rgb(53,152,219);">PDDEL</span>\]. Set to the minimum value suitable for your application to minimise heat generated.

#### Going to standby

Period during which acceleration current is gradually reduced to hold current. This smooth transition avoids a motor jerk on power down. Motor current is not continuously adjustable, instead being one of 31 discrete values from 0 to 1.044 A rms. Therefore, the current ramps down in steps. The step size may be set between 0 (instant power down) and 327 ms using the ‘Current reduction delay’ setting. Set to the minimum value suitable for your application to minimise heat generated.

#### Freewheel mode

Freewheel mode refers to how the motor is configured when it is at standstill and zero hold current is set. There are three choices:

<div id="bkmrk-use-freewheel-for-mi">- Use **freewheel** for minimum holding torque, which allows the motor shaft to be moved freely.
- **Phases shorted** for maximum holding torque with zero power applied to the motor (and so no heat generated in the motor).
- **Normal** offers some minimal amount of holding torque as a result of the phases still being connected to the driver circuitry.

</div>### Profile

Learn how to configure microstepping and dynamic motor properties, such as speed, acceleration and deceleration. The profile settings apply for all modes except step direction mode.

The profile is configured with these general points in mind:

- Meeting the speed and torque requirements of the application
- Avoiding motor resonances that would disturb operation
- Maintaining synchronicity, avoiding step gain or loss
- Minimising temperature rise by using the lowest motor current required

The graphic below shows the basic profile:

<table id="bkmrk-%2A%2A%2A-new-image" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:99.881%;"></col></colgroup><tbody><tr><td>[![Motor Currents.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/motor-currents.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/motor-currents.png)

</td></tr></tbody></table>

#### Frequency and units

The term frequency is used throughout this manual in conjunction with motor dynamic properties, such as start frequency, step frequency and so on. This is a reference back to the way a stepper motor works; it rotates at a certain number of steps per second, or accelerates at some number of steps per second per second.

However, as discussed [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-%C2%A0) recall that you can specify all these values in your chosen unit such as mm/s, or °/s^2. Where you see frequency, substitute you own unit as preferred.

#### Start and stop frequency

The start frequency is the initial step rate, and helps to allow the motor to overcome inertia and start moving smoothly; if start frequency were zero, the duration of the initial few steps might be long enough that the motor would overcome inertia on the first step, then effectively stop for a period of time, then have to overcome inertia once more for the second step, and so on, until the steps were frequent enough that the motor remains moving.

Stop frequency is the counterpart setting which determines the frequency for the last step.

Start frequency must be set equal to or smaller than stop frequency. This is enforced by the SMD4; if a change to the stop frequency makes it smaller than the start frequency, start frequency is automatically adjusted to be equal to stop frequency.

Start frequency and Stop frequency must be set equal to or smaller than Step frequency. The SMD4 will not force Start and Stop frequency to match Step frequency if either Start or Stop frequency are smaller than Step frequency.

#### Acceleration and deceleration

The SMD4 uses linear acceleration and deceleration ramps; velocity ramps up between the start frequency and the step frequency, and down linearly between the step frequency and stop frequency.

#### Zero wait time - Changing direction

When using higher values for the start and stop frequency, a subsequent move in the opposite direction would result in a jerk equal to start frequency + stop frequency. The motor may not be able to follow this. The zero wait time setting can be used to introduce a short delay between the two and eliminate the jerk.

#### Microstepping

Microstepping is applicable at low step frequencies (typically &lt; 500 Hz) and helps reduce motor resonances resulting in smoother operation. In non-vacuum applications, it is also used to achieve increased positioning resolution, however, it requires energising both motor phases continuously even when the motor is stopped to maintain position, resulting in unacceptable levels of temperature rise in the motor in vacuum applications. Instead, mechanisms are designed to achieve the required positioning resolution with appropriate gearing.

Microstepping is not helpful at higher step rates, therefore, the SMD4 automatically switches between microstepping at low speeds and full step at high speeds. The transition point from full step to microstep is configurable, as illustrated below. Hysteresis is applied to this value resulting in the transition in the opposite direction (from microstep to full step) being at a slightly higher frequency, as illustrated above. Note that you cannot explicitly set the transition to full step point, only the transition from full step to microstep. The other transition is calculated automatically.




[![Micro Stepping.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/micro-stepping.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/micro-stepping.png)

The resolution to use during microstepping is configurable, via the microstep resolution setting \[<span style="color:rgb(53,152,219);">RES</span>\]. Choices are 8, 16, 32, 64, 128 and 256. In all modes except for step/direction, the motor is only stopped in full-step positions. Microstepping is used exclusively for the purpose of smoothing the transition between steps, not to increase resolution.

The accuracy with which motor profile (acceleration, deceleration, etc.) settings may be made depends on the microstepping resolution; the maximum microstep resolution of 256 offers the greatest accuracy for these settings.

### Monitoring the motor

#### Temperature

Motor temperature can be read back from the remote interface, see [command MOTOR:T](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-tmot-%E2%80%93-motor-tempera). The motor is shut down and the the drive enters a fault state if motor temperature exceeds 190 °C, or the temperature sensor is faulty, missing, or incorrectly configured.

#### Step/position counters

The SMD4 keeps track of position using two counters, absolute and relative position. These can be reset independently. The counters track motor step number, or index. The value may be fractional while the motor is spinning because of microstepping. When stopped the counter is always an integer value reflecting the fact that the drive only stops on full step positions.

<p class="callout info">When the counter reports a fractional value, the fractional part reflects a proportion of a full step. For example a counter value of 100.5 with microstepping resolution of 256 would mean the drive is executing microstep 128 of 256 on its way toward full step position 101. You don't need to consider microstep resolution when interpreting the counter value.</p>

The counters behave differently with and without an encoder:

<table id="bkmrk-no-encoder-encoder-u" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:50%;"></col><col style="width:50%;"></col></colgroup><tbody><tr><td>**No encoder**</td><td>**Encoder used**</td></tr><tr><td>Counters reflect the internal step index counters that track the electrical step number that the drive thinks the motor is on.

The step counters are used to plan movement.

Provided the motor maintains synchronicity, this will equal the motor position.

</td><td>The counters are synchronized to the encoder position whenever a positioning cycle completes.

The encoder position (not the step counters) are used to plan moves, for example relative moves are made against the encoder position, not the step counters.

At all other times, the counters reflect the open loop position.

</td></tr></tbody></table>

<p class="callout warning">When the encoder is used, it must be configured correctly for the step counters to work as expected. Improper configuration can result in erratic behavior.</p>

<p class="callout info">If the encoder and closed loop control (see [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-motion-control)) are not used, then motor control is open loop. Therefore, quantities such as position and velocity are determined from internal counters in the SMD4. These cannot be relied upon in certain circumstances, such as if the motor is stalled, or misses steps due to improper configuration.</p>

### Moving the motor

There are fundamentally two types of move that can be made. Regardless of how the move is initiated (joystick, remote interface etc.) it resolves to one of these two types of move:

<table id="bkmrk-position-spin-move-t" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:50%;"></col><col style="width:50%;"></col></colgroup><tbody><tr><td>**Position**</td><td>**Spin**</td></tr><tr><td>Move to an absolute position or by a relative distance, for example:

- Go to position 100 mm
- Move + 5 mm
- Move - 4 steps

</td><td>Move indefinitely in a given direction:

- Spin clockwise
- Spin counterclockwise

</td></tr></tbody></table>

Therefore, the following basic moves can be made:

- Move absolute
- Move relative
- Spin clockwise
- Spin counterclockwise

The drive wraps these basic functions to perform more complex functions such as closed loop positioning using an encoder, see [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-motion-control).

#### Specifying direction

Direction is specified as positive, which results in the position counter incrementing, or negative which results in the position counter decrementing.

When wired per instructions in this user manual, AML motors spin as follows, when viewed from the rear of the motor:

<table id="bkmrk-direction-shaft-spin" style="border-collapse:collapse;width:75.8333%;height:110px;"><colgroup><col style="width:18.0687%;"></col><col style="width:29.3912%;"></col><col style="width:52.6251%;"></col></colgroup><tbody><tr><td>**Direction**</td><td>**Shaft spins...**</td><td>  
</td></tr><tr><td>Positive</td><td>Clockwise</td><td>[![Motor Direction_Clockwise.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/motor-direction-clockwise.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/motor-direction-clockwise.png)</td></tr><tr><td>Negative</td><td>Counter-clockwise</td><td>[![Motor Direction_Anti-clockwise.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/motor-direction-anti-clockwise.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/motor-direction-anti-clockwise.png)</td></tr></tbody></table>

The direction a mechanism moves in is not usually specified and depends on:

- The particular mechanism and its gearing
- Your perspective given the mounting orientation on the mechanism

You should therefore evaluate this in your application, and follow [these instructions](https://bookstack.vps-da8d40f3.arunmicro.com/link/27#bkmrk-note-regarding-rever) if required to flip motor direction so that positive and negative directions correspond as required.

### Stopping

Moves can be terminated at any time by stopping. There are several ways to stop:

<table id="bkmrk-stop-quick-stop-emer" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:33.3545%;"></col><col style="width:33.3545%;"></col><col style="width:33.3545%;"></col></colgroup><tbody><tr><td>**Stop**</td><td>**Quick stop**</td><td>**Emergency stop**</td></tr><tr><td>Motor will decelerate to a stop using the current profile.</td><td>The deceleration profile is truncated as required to cause the motor to come to a full stop within 1 second.

The original profile is unmodified.

If the existing profile would bring the motor to a stop in under 1 second then that profile is used.

</td><td>Immediate full stop, and cut all electrical current to the motor. The motor is inert and unpowered.

<span style="text-decoration:underline;">The internal position counters become invalid because synchronicity is lost.</span>

</td></tr></tbody></table>

The stop and emergency stop commands can originate from within the SMD4 without external input:

- Emergency stop is raised when the SMD4 encounters a fault condition, see [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-faults)<span style="color:rgb(224,62,45);"><span style="color:rgb(0,0,0);">.</span></span>
- During processes such as homing and closed loop control

### Encoders

Encoders allow the real mechanism position to be read, independent of position as determined by the step count. Encoders make closed loop control, in which the actual position and target position are continuously monitored and the corrections automatically made to minimise error, possible.

Supported encoders fall into two broad categories, incremental and absolute. Both are available in linear, angular and partial arc forms to suit different mechanisms. Both involve a scale and readhead.

The scale is typically a microscopically patterned thin metal strip affixed to the bed of the mechanism. The readhead is a small optical module attached to the carriage of the mechanism and reads the scale as it passes underneath. The scale is always sized such that the readhead can see it at any point within the physical travel of the mechanism.

[![VSM23-X-EA Encoder Illustration.jpg](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/vsm23-x-ea-encoder-illustration.jpg)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/vsm23-x-ea-encoder-illustration.jpg)

#### Supported types

The SMD4 works with most incremental and absolute encoders meeting the requirements given [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/26#bkmrk-copy-from-smd4-datas). Support for other encoder types may be added via firmware update, for example supporting word lengths other than 26 bits for absolute BiSS encoders; please contact us for details.

#### Incremental encoders overview

Incremental scales feature a repeating pattern. The readhead outputs quadrature A and B sine waves that encode the readhead position and direction as it passes over marks on the scale. These are passed to an interface external to the SMD4 which interpolates and outputs digital A and B quadrature signals. These signals drive a counter in the SMD4 encoder interface module which represents position.

[![SMD4-ER Cabling Diagram.jpg](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-12/scaled-1680-/smd4-er-cabling-diagram.jpg)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-12/smd4-er-cabling-diagram.jpg)

The position is volatile and stored only in the counter on the SMD4, unlike in the case of the absolute encoder. The incremental encoder only provides pulses which are used to increment or decrement a counter according to direction of travel. If power is lost, the count is lost. If the mechanism is moved while powered off, there is no way to detect this.

An external interface sits between the encoder readhead and the SMD4. This is provided with the encoder supplied with the mechanism. These are specified with an interpolation factor, for example 20x. Incremental scales are specified with a pitch, for example 20 um. The interface interpolates this to increase the resolution, for example a 20x interface and 20 um pitch scale = 20 um / 20 = 1 um resolution.

Incremental encoders have several additional functions:

- P and Q limits - For linear scales, small magnets can be placed to mark limit points. The magnets are detected by the readhead and trigger a limit signal. Read the instructions for your mechanism to learn more.
- Error - An error signal is activated if for example, the readhead cannot read the scale properly.
- Z reference - Precision reference marks are placed on the scale. For angular scales, there is one mark, for linear scales there are multiple marks placed at fixed intervals, and the desired mark is selected by a small magnet placed next to it. When the readhead approaches the mark from either side, the Z signal is triggered. This can be used for establishing a datum position. Read the instructions for your mechanism to learn more.

The electrical interface requires these pins:

<table id="bkmrk-connector%3A-da-26-f-d" style="width:29.2857%;"><tbody><tr><td style="width:35.0365%;">**Name**</td><td style="width:65.1842%;">**Function**</td></tr><tr><td class="align-center" style="width:35.0365%;">A+</td><td rowspan="2" style="width:65.1842%;white-space:nowrap;">Quadrature 'A' signal</td></tr><tr><td class="align-center" style="width:35.0365%;">A-</td></tr><tr><td class="align-center" style="width:35.0365%;">B+</td><td rowspan="2" style="width:65.1842%;white-space:nowrap;">Quadrature 'B' signal</td></tr><tr><td class="align-center" style="width:35.0365%;">B-</td></tr><tr><td class="align-center" style="width:35.0365%;">Z+</td><td rowspan="2" style="width:65.1842%;white-space:nowrap;">Quadrature 'Z' signal</td></tr><tr><td class="align-center" style="width:35.0365%;">Z-</td></tr><tr><td class="align-center" style="width:35.0365%;">P</td><td rowspan="3" style="width:65.1842%;white-space:nowrap;">Limits and error signals</td></tr><tr><td class="align-center" style="width:35.0365%;">Q</td></tr><tr><td class="align-center" style="width:35.0365%;">E</td></tr><tr><td class="align-center" style="width:35.0365%;">0 V</td><td rowspan="2" style="width:65.1842%;white-space:nowrap;">Power</td></tr><tr><td class="align-center" style="width:35.0365%;">5 V</td></tr><tr><td colspan="2" style="width:100.221%;">... For a total pin count of <span style="text-decoration:underline;">**11 pins**</span></td></tr></tbody></table>

This generally requires a 15 way D-Sub feedthrough or similar. The pin count can be reduced to an absolute minimum of 6 pins, if the P, Q, E and Z signals are not required. The E signal is optional on the SMD4, and can be disabled/ignored if not required although this is not recommended.

#### Absolute encoders overview

Communication with the readhead is via a digital coms interface, and data are sent to the SMD4 from the readhead in packets verified by a CRC. The readhead connects directly to the SMD4 encoder interface module.

[![SMD4-EA Cabling Diagram.jpg](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/smd4-ea-cabling-diagram.jpg)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/smd4-ea-cabling-diagram.jpg)

Absolute scales are patterned in such a way that the readhead can determine without any prior reference exactly where it is positioned, much like looking at a ruler. The absolute encoder therefore knows its absolute position at any time. The electronics can be powered off, the mechanism moved, and powered back on, and the readhead can still determine its absolute position.

Absolute encoders are specified by their resolution, for example 50 nm/count. The readhead outputs an absolute count value representing the position on the scale, from zero at one end, increasing toward the other end. The maximum count you will see for a given mechanism depends on the encoder resolution and scale length.

The scale cannot be positioned with micron level accuracy, so the zero count will not align with either end of the mechanism and there will always be a small offset. This also accounts for thermal effects, allowing extra scale at the ends of travel. For example, on a 50 mm linear stage, positioned at the negative extreme of travel might read a count of 46789, corresponding to a position of 50 nm x 46789 or 2.34 mm. Use the zeroing features of the SMD4 to set your own zero point.

Linear and partial arc scales start at zero and the maximum count depends on the length. For a 50 nm resolution system on a 50 mm scale the maximum count is at least 50e-3/50e-9 = 1e6. We can also infer from this that the maximum length scale for this 50 nm system with 26 bit BiSS is 50 nm \* 2^26 or about 3.3 m.

Angular (circular) scales count from zero to the maximum value then back to zero. For a 26 bit system, this means the count goes from 0 to 2^26 - 1 the next count on from 2^26 -1 is 0.

The scale is generally patterned at a much larger pitch than the published resolution, because the readhead uses interpolation techniques to obtain the published resolution.

The electrical interface requires these pins:

<table id="bkmrk-name-function-ma%2B-cl" style="width:29.2857%;"><tbody><tr><td style="width:35.0365%;">**Name**</td><td style="width:65.1842%;">**Function**</td></tr><tr><td class="align-center" style="width:35.0365%;">MA+</td><td rowspan="2" style="width:65.1842%;white-space:nowrap;">Clock</td></tr><tr><td class="align-center" style="width:35.0365%;">MA-</td></tr><tr><td class="align-center" style="width:35.0365%;">SLO+</td><td rowspan="2" style="width:65.1842%;white-space:nowrap;">Data</td></tr><tr><td class="align-center" style="width:35.0365%;">SLO-</td></tr><tr><td class="align-center" style="width:35.0365%;">0 V</td><td rowspan="2" style="width:65.1842%;white-space:nowrap;">Power</td></tr><tr><td class="align-center" style="width:35.0365%;">5 V</td></tr><tr><td colspan="2" style="width:100.221%;">... For a total pin count of <span style="text-decoration:underline;">**6 pins**</span></td></tr></tbody></table>

The much reduced pin count and simplicity of absolute encoders versus incremental makes them ideal for vacuum use. The overall system requires fewer components, less space, fewer feedthrough pins in addition to the advantages of having an absolute readout.

#### Handling of encoders

The SMD4 treats all encoder input as absolute. When an encoder is online and selected, the encoder is used to plan all movements. Moves you command are with respect to the encoder position, not the step counters. If any error occurs with the encoder in use, then a fault is triggered and the motor is disabled.

When an encoder is enabled, you can read speed and position data directly from it, as well as use it for functions such as closed loop control and virtual limits. These additional functions are discussed later.

It is essential that the encoder is correctly setup before use, otherwise unpredictable behaviour will result.

#### Special considerations for incremental encoders

Incremental encoders can in theory be treated as absolute provided that:

- An initial reference is established at first power on
- <span style="font-family:'DejaVu Sans', '-apple-system', BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;font-size:14px;text-indent:-18pt;">The save features of the SMD4 are utilised to save positions before power off</span>
- The mechanism is never disturbed when the SMD4 is off
- Encoder operation is never interrupted

In practice, even if close attention is paid to these points, effects such as thermal expansion and contraction cannot be accounted for when powered off. As such, incremental encoders are usually used with a reference switch or other means to establish a fixed reference at power up if absolute position is important.

#### Special considerations for absolute angular encoders

To allow for more than one rotation to be tracked (recall that absolute angular encoder rings count from 0 to a maximum value, with the next count being 0) the SMD4 treats the absolute encoder in a pseudo incremental manner. This involves two counters, the 26 bit unsigned integer count from the readhead (readhead count), and a 64 bit signed counter maintained on the SMD4 (SMD4 count):

1. At startup, SMD4 count is set equal to readhead count
2. As the SMD4 runs, the readhead count is sampled rapidly, and the difference between this and the last readhead count is added to the SMD4 count

The properties of wraparound integer arithmetic ensure the proper behavior when the readhead counter crosses over the maximum count to zero, or vice versa, boundary.

This allows (at least during the power on time of the SMD4) multiple rotations to be tracked, and the availability of all encoder functions. For example, closed loop control could be used to home to a location of 100.5 revolutions, or virtual limits used to prevent a rotary mechanism from rotating too many times and tangling its leadout wires.

#### Setting up an encoder

Having connected the encoder and powered on follow these steps to manually configure an encoder. Values for settings required here can be found in the documentation supplied with your mechanism. This section assumes the drive is otherwise configured and working.

Alternatively, use the SMD4s built in presets functionality to automatically configure these settings to suit your mechanism, see [mechanism setup and presets](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-mechanism-setup-and-).

<table id="bkmrk-step-details-1-check" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:5.71792%;"></col><col style="width:34.6649%;"></col><col style="width:59.6807%;"></col></colgroup><tbody><tr><td>**Step**</td><td colspan="2">**Details**</td></tr><tr><td>1</td><td>**Check encoder indicator lights**

</td><td>Check indicator light on encoder is on. There might be more than one light.

For Renishaw encoders shipped with AML mechanisms, provided the light or lights are on and any color other than red, you may proceed. A red light usually indicates a fault which should be fixed before proceeding. Refer to the documentation provided with the mechanism for more details.

</td></tr><tr><td>2</td><td>**Select the encoder**</td><td>Set encoder selection to incremental or absolute as required, and decide if the error signal should be used (incremental only)</td></tr><tr><td>3</td><td>**Set units**</td><td>Configure the units (degrees, meters etc. to suit your mechanism if not already done so).

It may be convenient to set a unit here that matches that in the mechanism documentation.

</td></tr><tr><td>4</td><td>**Set mechanism displacement per step**</td><td>This is the distance moved by the mechanism per step, usually referred to as the resolution in user documentation.</td></tr><tr><td>5</td><td>**Check mechanism direction**</td><td>Make one or more small moves and verify that directions are as you expect. If not, then see [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/27#bkmrk-note-regarding-rever) to reverse motor direction.</td></tr><tr><td>6</td><td>**Set displacement per count**</td><td>This is the distance moved per encoder count. For example, for linear absolute encoders this might be 50 nm. If units are set to meters, you can simply enter 50e-9.</td></tr><tr><td>7</td><td>**Determine flip**

</td><td>The direction of the encoder scale must match that of the motor, i.e. when the motor moves in a positive, incrementing direction, the encoder must also.

A flip option allows the encoder to be virtually flipped to match the motor direction. An autoset feature is available; use this to automatically set flip as required. The motor will move a small distance to do this, and will return to its original position when complete.

</td></tr><tr><td>8</td><td>**Zero the encoder**</td><td>Position the mechanism at the desired zero point, either using the motor or by hand, then reset the absolute and relative counts as required. Finally use the save/store to device function to save your changes.</td></tr></tbody></table>

### Closed loop control (Endpoint correction, EPC)

This feature uses an encoder to automatically minimise positioning errors. The SMD4 works continuously, monitoring position and adjusting the mechanism to your target position.

#### Introduction to closed loop control

Without an encoder, the SMD4 can only function in open loop mode. In open loop control, the SMD4 generates the required number of steps to perform the requested move and assumes that the motor moved the corresponding amount. There is no feedback to the SMD4 that the motor moved as expected. This approach works well with stepper motors because provided they maintain synchronicity fast accurate movements can be made without the need for feedback. This reduces cost, complexity and requires fewer components in vacuum.

In closed loop control, the SMD4 monitors the actual position of the mechanism via the encoder, and corrects for deviations when they occur.

#### How it works

Closed loop control on the SMD4 works using a method called Endpoint Correction, or EPC. In traditional closed loop control, actual and demand positions are continuously monitored, and a control algorithm adjusts motor movement to compensate out any errors. Proportional, integral and derivate gains are configured to obtain the desired system characteristics in terms of responsiveness, overshoot, undershoot and residual error.

EPC uses a different approach. A simple explanation, omitting some detail, is that every movement is initially made open loop. When the open loop move has completed, the actual and target positions are compared and position error determined. If the error falls below a user specified threshold, nothing more is done and the move is complete. If the error exceeds the threshold, a second move is made, again open loop, to try and eliminate the error. This process is iterative and continues either until the error has reduced below the threshold, or a specified maximum number of iterations of adjustment have occurred.

Once a move has completed, EPC continuously monitors position error and makes further adjustments if the error exceeds the threshold. In this way, EPC responds to events such as thermal effects or disturbance of the mechanism even when stopped.

Baseline error after each cycle of EPC is tracked, and cumulative error is considered for the next cycle.

EPC is optimised for vacuum use and allows closed loop control while minimizing temperature rise with little effort required by the user to configure it.

#### Configuration

##### Behavior

Defines what the feature should do:

- **None** – Feature is disabled/inactive
- **Warn**<span style="font-family:'DejaVu Sans', '-apple-system', BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;font-size:14px;"> – Feature is enabled, and can raise a warning on alarm</span>
- **Error**<span style="font-family:'DejaVu Sans', '-apple-system', BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;font-size:14px;text-indent:-18pt;"> – Feature is enabled, and can raise an error on alarm</span>

An alarm is the feature raising a notification. A notification is not necessarily an error, and the meaning is different for each feature. You can choose to route the alarm to a warning, or an error as described above by the behavior option.

Warnings are recorded but cleared automatically on the next successful move.

Errors are recorded and put the drive into a global fault state stopping the motor. An error must be cleared by the user to restore normal operation.

##### Maximum iterations

Maximum number of moves that EPC will make to correct position after the open loop positioning phase is completed. This can be set to a finite value or infinity, in which case the number of allowed moves is unlimited.

The moves count is zeroed at the start of each commanded move, and when a move successfully completes. If the mechanism is disturbed when stopped, a new cycle of corrections begins with the move count starting at zero once more.

##### Tolerance

When error reduces below this value, the move cycle is considered complete. The minimum value possible is half the mechanical resolution of the mechanism. Minimising tolerances results in more accurate positioning, at the expense of more adjustment and greater sensitivity to responding to disturbances. Larger tolerances result in less accurate positioning.

#### Alarm behaviour

An alarm is raised when:

- Maximum number of positioning iterations exceeded for this move
- The specified tolerance is impossible to meet given the mechanism resolution

### Range of motion limiter (Virtual limits, ROML)

Virtual limits are limits defined based on position.

When configured, range of motion is limited to the range specified. Demand position is adjusted if required to prevent the motor moving outside the specified range. For example, if a continuous rotation is demanded, and a virtual limit exists in that direction, your command is converted into a move to the virtual limit position. The motor will come to a stop at the limit using your specified profile.

If an encoder is present and the mechanism is forced outside the range of the virtual limit by an external means (for example, the mechanism is forced by hand) this is reported to the user.

This feature will work without an encoder, in which case the position is open loop and taken from the internal step counters.

#### Configuration

##### Behavior

As [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-behavior).

##### Value one and two

These define the two virtual limits. There is no requirement for them to be in any particular order, for example value one might be 4 mm and value two -4 mm.

#### Alarm behaviour

Alarm is raised when:

- Movement outside the virtual limits is commanded (even though ROML will adjust the commanded move to prevent that happening)
- The mechanism is externally forced outside the limit range. This is only applicable to the encoder.

### Guard

This feature is like ROML, except that it does not adjust your input to prevent movement outside the specified range, and only warns or generates an error after movement outside the specified range has occurred.

This feature will work without an encoder, in which case the position is open loop and taken from the internal step counters.

#### Configuration

##### Behaviour

As [here](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-behavior).

##### Value one and two

These define the two virtual limits. There is no requirement for them to be in any particular order, for example value one might be 4 mm and value two -4 mm.

#### Alarm behaviour

Alarm is raised when:

- Movement outside the virtual limits is commanded
- The mechanism is externally forced outside the limit range. This is only applicable to the encoder.

### Using the joystick

<table id="bkmrk-the-joystick-is-a-tw" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:71.6984%;"></col><col style="width:28.3651%;"></col></colgroup><tbody><tr><td>The joystick is a two button controller on coiled lead that plugs into the front panel.

Use the right button for movement in the positive direction, and the left for movement in the negative direction. All moves occur according to the current profile in the drive.

It is available any time it is plugged in and enabled (see [operating modes](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-operating-modes)), and has several modes of operation. It is a quick and easy way to simply move the mechanism without touching it. This can be useful during commissioning, or even as the primary means to control you mechanism.

</td><td>[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/gpQimage.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/gpQimage.png)  
</td></tr></tbody></table>

<table id="bkmrk-single-brief-press-t" style="border-collapse:collapse;width:100%;height:104.8px;"><colgroup><col style="width:14.9132%;"></col><col style="width:85.1513%;"></col></colgroup><tbody><tr style="height:34.9333px;"><td style="height:34.9333px;">**Single**</td><td style="height:34.9333px;">Brief press to move one step, hold to move continuously, release button to stop</td></tr><tr style="height:34.9333px;"><td style="height:34.9333px;">**Continuous**</td><td style="height:34.9333px;">Brief press to start moving continuously, subsequent press to stop</td></tr><tr style="height:34.9333px;"><td style="height:34.9333px;">**Nudge**</td><td style="height:34.9333px;">Brief press to trigger a user defined relative move, called a nudge. Subsequent press stops</td></tr></tbody></table>

#### Single

<table class="MsoNormalTable" id="bkmrk-%C2%A0-single-step-%C2%A0-a-sh" style="border-collapse:collapse;border:none;height:293px;width:100.001%;"><tbody><tr><td style="width:63.884%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 7.1pt;">**<span>![joystick single step mode.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/joystick-single-step-mode.png)</span>**

</td><td style="width:36.0825%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(244,244,244);padding:7.1pt;"><span style="color:#000000;">A short button press (&lt; 0.5 s) causes a single step in the commanded direction. This is useful for precise positioning.</span>

<span style="color:#000000;"> </span>

<span style="color:#000000;">A long press (&gt; 0.5 s) triggers acceleration toward the target frequency, while the button continues to be pressed.</span>

<span style="color:#000000;"> </span>

<span style="color:#000000;">Releasing the button causes the motor to decelerate toward a stop.</span>

<span style="color:#000000;"> </span>

<span style="color:#000000;">If the button is pressed while the motor is still decelerating, the motor once more accelerates toward target frequency for as</span>

<span style="color:#000000;"> long as the button is held.</span>

</td></tr></tbody></table>



#### Continuous

<table class="MsoNormalTable" id="bkmrk-continous-motor-acce" style="border-collapse:collapse;border:none;height:323px;width:100.001%;"><tbody><tr><td style="width:64.1191%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 7.1pt;">**<span>![joystick continuous mode.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/99Jjoystick-continuous-mode.png)</span>**

</td><td style="width:35.971%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(244,244,244);padding:7.1pt;"><span style="color:#000000;">Motor accelerates toward target frequency on joystick key down. Continuing to hold the key down has no further effect.</span>

<span style="color:#000000;">On releasing and pressing the same key again, the motor decelerates toward a stop.</span>

<span style="color:#000000;"> </span>

<span style="color:#000000;">On pressing the alternate direction key, motor first decelerates to a stop before accelerating toward target frequency in the other direction.</span>

<span style="color:#000000;"> </span>

<span style="color:#000000;">If the motor has not yet come to a stop, and the same key is pressed again, the motor will once more accelerate towards target frequency, as illustrated left.</span>

</td></tr></tbody></table>

#### Nudge/Relative move

<table class="MsoNormalTable" id="bkmrk-%C2%A0%3Cmake-the-diagram%2C-" style="border-collapse:collapse;border:none;height:489.333px;width:100%;"><tbody><tr style="height:399.733px;"><td style="width:64.0099%;border-top:1pt none rgb(127,127,127);border-bottom:1pt none rgb(127,127,127);border-left:1pt none rgb(127,127,127);border-right:none;padding:0cm 7.1pt;height:399.733px;"><span style="color:rgb(224,62,45);"> </span>

[![Nudge, Relative Move.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/scaled-1680-/nudge-relative-move.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-11/nudge-relative-move.png)

</td><td style="width:35.9981%;border-top:1pt none rgb(127,127,127);border-right:1pt none rgb(127,127,127);border-bottom:1pt none rgb(127,127,127);border-left:none;background:rgb(244,244,244);padding:7.1pt;height:399.733px;"><span style="color:#000000;">Trigger a pre-defined relative move with the joystick.</span>

<span style="color:#000000;">You specify the distance, or nudge value, and trigger the move to start in the desired direction according to which joystick button is pressed.</span>

<span style="color:#000000;">On pressing a joystick button, a relative move of the specified distance and direction is made.</span>

<span style="color:#000000;">If any button is pressed while the move is in progress, the motor decelerates to a stop and the commanded move is not completed.</span>

</td></tr><tr style="height:89.6px;"><td colspan="2" style="padding:0cm 7.1pt;height:89.6px;background-color:rgb(244,244,244);width:100.008%;border-style:none;"><span style="color:#000000;">The nudge value is signed, and the relative move performed is the product of the button and nudge value. The negative button multiplies the nudge value by -1, and the positive button +1. For example, if the nudge value is -100, and the negative joystick button is pressed, then the relative move made will be -100 \* -1 = 100.</span>

<span style="color:#000000;">  
</span>

</td></tr></tbody></table>

### Homing to limit switches

Some mechanisms include one or more limit switches, positioned typically at the limits of travel or other reference position.

Homing is an automated procedure where the motor is driven to a chosen limit switch in a precise and repeatable manner. Most users then reset the position counters, and use that position as a reference going forward.

Homing only works with physical limit switches.

#### Homing cycle

You can choose to home in the positive or negative direction.

The motor first moves toward the limit switch using the existing movement profile. On the limit switch being triggered, the step frequency is halved, and the motor reversed until the limit switch is not triggered. Finally, the motor moves toward the limit switch at a step frequency of 30 Hz until the limit switch is triggered.

<p class="callout info">**INFORMATION:**  
Limit switches are not latching, i.e. as soon as a limit input becomes not triggered, for example if the mechanism is able to first actuate a limit switch and then continue moving past it until the limit switch is no longer actuated, then the SMD4 will be unaware of this and will continue to drive the motor if commanded.</p>

<p class="callout info">Limits switches and cams are normally arranged such that the limit switch is triggered from the desired point up to and including the point at which the mechanical limit of the mechanism is encountered.</p>

### Step and direction interface

Motor movement is controlled by externally supplied step and direction signals. There are two sub modes, normal and triggered.

Set the mode to step and direction to use this function. Once in step direction mode, motor movement can only be controlled via the step direction interface, and not via other means such as the joystick or remote interface.

#### Normal mode

The SMD4 can be configured to step on the rising or rising and falling edges, which halves the step clock rate required.

The external enable fault is non-latching when in step direction mode; once the external enable state is restored, or the external enable setting is changed to false, normal operation will resume immediately without the need to clear it.

<table class="MsoNormalTable" id="bkmrk-step-input-%C2%A0-directi" style="border-collapse:collapse;border:none;height:144px;width:85.3099%;"><tbody><tr style="height:41.3657px;"><td colspan="3" style="width:48.2414%;border:none;padding:2.85pt 5.4pt;height:41.3657px;"><u>Step input</u>

</td><td style="width:17.8189%;border:none;padding:2.85pt 5.4pt;height:41.3657px;"></td><td colspan="2" style="width:33.8994%;border:none;padding:2.85pt 5.4pt;height:41.3657px;"> <u> Direction input</u>

</td></tr><tr style="height:25.1759px;"><td style="width:16.0805%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:#FFFFFF;padding:2.85pt 5.4pt;height:25.1759px;vertical-align:middle;"><a name="_Hlk40189954"></a> </td><td style="width:16.0805%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(109,111,113);padding:2.85pt 5.4pt;height:25.1759px;vertical-align:middle;"><span style="color:rgb(255,255,255);">Both</span>

</td><td style="width:16.0805%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(109,111,113);padding:2.85pt 5.4pt;height:25.1759px;vertical-align:middle;"><span style="color:rgb(255,255,255);">Rising only</span>

</td><td style="width:17.8189%;border:none;background:#FFFFFF;padding:2.85pt 5.4pt;height:25.1759px;"><span> </span>

</td><td style="width:11.8846%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:25.1759px;vertical-align:middle;"><span> </span>

</td><td style="width:22.0148%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(109,111,113);padding:2.85pt 5.4pt;height:25.1759px;vertical-align:middle;"><span style="color:rgb(255,255,255);">Meaning</span>

</td></tr><tr style="height:30.7407px;"><td style="width:16.0805%;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:30.7407px;vertical-align:middle;"><span><span style="color:#000000;">Rising</span></span>

</td><td style="width:16.0805%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:30.7407px;vertical-align:middle;"><span><span style="color:#000000;">Step</span></span>

</td><td style="width:16.0805%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:30.7407px;vertical-align:middle;"><span><span style="color:#000000;">Step</span></span>

</td><td style="width:17.8189%;border-top:none;border-bottom:none;border-left:none;border-right:1pt solid rgb(127,127,127);background:#FFFFFF;padding:2.85pt 5.4pt;height:30.7407px;"><span> </span>

</td><td style="width:11.8846%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:30.7407px;vertical-align:middle;"><span><span style="color:#000000;">Low</span></span>

</td><td style="width:22.0148%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:30.7407px;vertical-align:middle;"><span><span style="color:#000000;">Positive</span></span>

</td></tr><tr style="height:30.7407px;"><td style="width:16.0805%;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;height:30.7407px;vertical-align:middle;"><span>Falling</span>

</td><td style="width:16.0805%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:30.7407px;vertical-align:middle;"><span>Step</span>

</td><td style="width:16.0805%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:30.7407px;vertical-align:middle;"><span> </span>

</td><td style="width:17.8189%;border-top:none;border-bottom:none;border-left:none;border-right:1pt solid rgb(127,127,127);background:#FFFFFF;padding:2.85pt 5.4pt;height:30.7407px;"><span> </span>

</td><td style="width:11.8846%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:30.7407px;vertical-align:middle;"><span>High</span>

</td><td style="width:22.0148%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:30.7407px;vertical-align:middle;"><span>Negative</span>

</td></tr></tbody></table>

Steps are generated according to the current resolution. For example, with the edge setting on rising only, and microstep resolution set to 128, each rising edge on the step input will generate a single 1/128th step.

A step interpolation option is available; when enabled, the step input behaves as it would with the current resolution, except that each step input is interpolated to 256 microsteps. This is done by evaluating the rate at which steps arrive and timing 256 microsteps within the step-to-step period. This gives all the benefits of microstepping at high resolution while minimising the input clock rate.

The relationship between step input, resolution and actual step frequency is given below:<span style="font-size:9pt;line-height:107%;font-family:'Open Sans';"></span>

***Motor Step frequency \[Hz\] = (Step input \[Hz\] / Resolution)***

<p class="callout info">**INFORMATION:** Stopping on fractional steps  
There is no mechanism to prevent the motor from stopping on fractional steps as there is in all other modes.  
Stopping on fractional steps will result in the motor temperature rising much faster than it otherwise would and is generally not suitable for vacuum applications. Therefore, configure the external step generator to meet this criteria.  
</p>

<p class="callout info">**INFORMATION:** Preparation before switching out of Step/Direction mode  
When changing to another mode from Step/Direction mode, ensure that any movement being commanded via Step/Direction interface has completed, and that the motor is at a full step position before switching.</p>

#### Triggered mode

This mode works the same as [joystick continuous mode](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-joystick), except that the positive and negative inputs that would normally be supplied via the joystick input are instead generated from the step and direction inputs:

<table class="MsoNormalTable" id="bkmrk-step-input-%C2%A0-%C2%A0-%C2%A0-%C2%A0di" style="border-collapse:collapse;border:none;height:130.733px;width:87.5321%;"><tbody><tr style="height:32.3333px;"><td colspan="2" style="width:44.4283%;border:none;padding:2.85pt 5.4pt;height:32.3333px;"><u>Step input</u>

</td><td style="width:16.6429%;border:none;padding:2.85pt 5.4pt;height:32.3333px;"></td><td colspan="2" style="width:38.9276%;border:none;padding:2.85pt 5.4pt;height:32.3333px;"> <u> Direction input</u>

</td></tr><tr style="height:31.3333px;"><td style="width:19.8869%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:#FFFFFF;padding:2.85pt 5.4pt;height:31.3333px;vertical-align:middle;"><a></a></td><td style="width:24.5414%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(109,111,113);padding:2.85pt 5.4pt;height:31.3333px;vertical-align:middle;"><span style="color:rgb(255,255,255);">Meaning</span>

</td><td style="width:16.6429%;border:none;background:#FFFFFF;padding:2.85pt 5.4pt;height:31.3333px;"><span> </span>

</td><td style="width:19.4638%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:31.3333px;vertical-align:middle;"><span> </span>

</td><td style="width:19.4638%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(109,111,113);padding:2.85pt 5.4pt;height:31.3333px;vertical-align:middle;"><span style="color:rgb(255,255,255);">Meaning</span>

</td></tr><tr style="height:35.7333px;"><td style="width:19.8869%;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:35.7333px;vertical-align:middle;"><span><span style="color:#000000;">Rising</span></span>

</td><td style="width:24.5414%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:35.7333px;vertical-align:middle;"><span><span style="color:#000000;">Triggers start / stop</span></span>

</td><td style="width:16.6429%;border-top:none;border-bottom:none;border-left:none;border-right:1pt solid rgb(127,127,127);background:#FFFFFF;padding:2.85pt 5.4pt;height:35.7333px;"><span> </span>

</td><td style="width:19.4638%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:35.7333px;vertical-align:middle;"><span><span style="color:#000000;">Low</span></span>

</td><td style="width:19.4638%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:35.7333px;vertical-align:middle;"><span><span style="color:#000000;">Positive</span></span>

</td></tr><tr style="height:31.3333px;"><td style="width:19.8869%;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;height:31.3333px;vertical-align:middle;"><span>Falling</span>

</td><td style="width:24.5414%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:31.3333px;vertical-align:middle;"><span>No action</span>

</td><td style="width:16.6429%;border-top:none;border-bottom:none;border-left:none;border-right:1pt solid rgb(127,127,127);background:#FFFFFF;padding:2.85pt 5.4pt;height:31.3333px;"><span> </span>

</td><td style="width:19.4638%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:31.3333px;vertical-align:middle;"><span>High</span>

</td><td style="width:19.4638%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:31.3333px;vertical-align:middle;"><span>Negative</span>

</td></tr></tbody></table>

In the case of Step/Direction mode, it is the responsibility of the external controller to perform any final activities, such as coming to a stop, before changing the mode.

### Bake

Heats the motor by energising both phases and holding the motor stationary, regulating the current to achieve a set point temperature. Used to drive off adsorbed moisture in the motor.

Set the mode to bake to use this function.


Before engaging bake mode, set the target bake temperature. When in bake mode, the green status indicator will flash briefly at intervals as a reminder that this mode is active.


### Enable input

An enable input is present as part of the SDE interface, but the enable signal may be used in any mode. The motor is enabled when high and disabled (all motor movement inhibited) when low.

The enable input is ‘gated’ by an external enable setting; when enabled, the behaviour described above applies. When disabled, the enable input is treated as if it was true, regardless of the actual state. This allows the user to decide whether the enable input is used or not.

When the enable input is not used, then the SMD4 is responsible for enabling the motor as required, consistent with any other requirement described in this document.

<table class="MsoNormalTable" id="bkmrk-enable-input-%C2%A0-setti" style="border-collapse:collapse;border:none;height:151px;width:58.3951%;"><tbody><tr style="height:11.35pt;"><td colspan="3" style="width:99.734%;border:none;padding:2.85pt 5.4pt;height:11.35pt;"><u>Enable input</u>

</td></tr><tr style="height:11.35pt;"><td style="width:33.2447%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:#FFFFFF;padding:2.85pt 5.4pt;height:11.35pt;"></td><td style="width:33.2447%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(109,111,113);padding:2.85pt 5.4pt;height:11.35pt;"><span style="color:rgb(255,255,255);">Setting enabled</span>

</td><td style="width:33.2447%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(109,111,113);padding:2.85pt 5.4pt;height:11.35pt;"><span style="color:rgb(255,255,255);">Setting disabled</span>

</td></tr><tr><td style="width:33.2447%;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;"><span style="color:#000000;">Low</span>

</td><td style="width:33.2447%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;"><span style="color:#000000;">Motor disabled</span>

</td><td style="width:33.2447%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;"><span style="color:#000000;">Motor enabled</span>

</td></tr><tr><td style="width:33.2447%;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;">High

</td><td style="width:33.2447%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;">Motor enabled

</td><td style="width:33.2447%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;">Motor enabled

</td></tr></tbody></table>


### Limits

<table class="MsoTableGrid" id="bkmrk-mechanisms-sometimes" style="border-collapse:collapse;width:100.125%;height:458.243px;border-spacing:0px;"><tbody><tr style="height:291.296px;"><td style="width:48.2716%;padding:0cm;border-style:hidden;height:291.296px;">Mechanisms sometimes include limit switches, typically mechanical switches positioned to open or close when some start or end point of travel is reached for example. This is used as a trigger to stop the motor

Configuration options allow limits to be individually or globally enabled or disabled, polarity to be set (i.e. trigger limit on switch open, called ‘Active low’ or switch closed, called ‘Active high’). The configuration options are illustrated below. AML Device control software additionally allows each limit to be given a custom name, for example ‘right switch’ to make it easier to identify within the software.

</td><td class="align-center" rowspan="2" style="width:51.7284%;padding:0cm;height:458.243px;border-style:hidden;vertical-align:top;"><span></span>

<span>![limits no swap.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/limits-no-swap.png)</span>

  
</td></tr><tr style="height:166.947px;"><td style="width:48.2716%;padding:0cm;border-style:hidden;height:166.947px;"><table style="border-collapse:collapse;width:106.294%;height:163.458px;border-width:1px;border-style:solid;"><colgroup><col style="width:24.4558%;"></col><col style="width:36.0661%;"></col><col style="width:39.2774%;"></col></colgroup><tbody><tr style="height:35.875px;"><td colspan="3" style="height:35.875px;border-style:solid;vertical-align:middle;">Limit activation summary in relation to direction

</td></tr><tr style="height:57.4583px;"><td style="height:57.4583px;border-style:solid;vertical-align:middle;"> </td><td class="align-center" style="height:57.4583px;background-color:rgb(109,111,113);border-style:solid;vertical-align:middle;"><span style="font-size:9pt;line-height:107%;font-family:'Open Sans';color:rgb(255,255,255);"><span style="color:rgb(255,255,255);">Limit + (Pos) triggered</span></span>

</td><td class="align-center" style="height:57.4583px;background-color:rgb(109,111,113);border-style:solid;vertical-align:middle;"><span style="font-size:9pt;line-height:107%;font-family:'Open Sans';color:rgb(255,255,255);"><span style="color:rgb(255,255,255);">Limit - (Neg) triggered</span></span>

</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;border-style:solid;vertical-align:middle;">Positive</td><td style="height:35.0625px;vertical-align:middle;">Motor disabled</td><td style="height:35.0625px;vertical-align:middle;">Motor enabled</td></tr><tr style="height:35.0625px;"><td style="height:35.0625px;vertical-align:middle;">Negative</td><td style="height:35.0625px;vertical-align:middle;">Motor enabled</td><td style="height:35.0625px;vertical-align:middle;">Motor disabled</td></tr></tbody></table>

</td></tr></tbody></table>

<table class="MsoTableGrid" id="bkmrk-limits-are-intended-" style="border-collapse:collapse;width:101.606%;height:207px;border-spacing:0px;"><tbody><tr><td style="width:59.5053%;padding:0cm;border-style:hidden;">Limits are intended for use with the mechanical switches typically found in vacuum mechanisms, but other types of switch, for example, hall effect or optical limit switches can be interfaced. The high and low logic thresholds are 1.5 V and 0.55 V respectively. Limit inputs can withstand up to 12 V maximum. The limits input circuit is outlined below for reference.</td><td style="width:40.4933%;padding:0cm;border-style:none;"><span>![limits diagram.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/limits-diagram.png)</span>

</td></tr></tbody></table>

### Faults

If a fault occurs, the motor is stopped and power to the motor is removed. The cause of the fault is indicated via the red front panel indicator, as shown below, and reflected in the error flags available via the remote interface.

#### Types of fault

<table class="MsoNormalTable" id="bkmrk-internal-a-hardware-" style="border-collapse:collapse;width:100.001%;height:530.898px;border-width:0px;border-spacing:0px;border-style:none;"><tbody><tr style="height:45.8403px;"><td style="width:18.3943%;padding:2.85pt 5.4pt;border-style:none;height:45.8403px;">**<span>![red led solid.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/red-led-solid.png)</span>**

</td><td style="width:81.6042%;padding:2.85pt 5.4pt;border-style:none;height:45.8403px;">**Internal**

A hardware or software malfunction inside the SMD4. For example, user settings have become corrupted and failed to load properly.

</td></tr><tr style="height:119.63px;"><td style="width:18.3943%;padding:2.85pt 5.4pt;border-style:none;height:119.63px;">**<span>![red led 1 flash.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/red-led-1-flash.png)</span>**

</td><td style="width:81.6042%;padding:2.85pt 5.4pt;border-style:none;height:119.63px;">**External enable criteria not satisfied** The external enable setting is ‘true’ and the SMD4 requires the external enable signal to be high to enable the motor. Either supply an enable signal, or if you do not wish to use the enable input, disable the external enable setting by setting it to ‘false’, which tells the SMD4 to ignore the state of the enable signal.

</td></tr><tr style="height:214.016px;"><td style="width:18.3943%;padding:2.85pt 5.4pt;border-style:none;height:214.016px;">**<span>![red led 2 flash.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/red-led-2-flash.png)</span>**

</td><td style="width:81.6042%;padding:2.85pt 5.4pt;border-style:none;height:214.016px;">**Motor temperature**

Motor temperature has exceeded 190 °C or a fault has been detected with the temperature sensor. Excessive temperature can damage the insulation on the motor windings, and the SMD4 does not allow the motor to be driven. The SMD4 shuts down the motor before this can happen to prevent possible damage to the motor. Wait for the motor to cool before attempting to run the motor again.

<table class="MsoTableGrid" style="width:572px;border-collapse:collapse;border:none;height:75px;"><tbody><tr style="height:43.95pt;"><td class="align-left" style="width:641.632px;padding:0cm 5.4pt;height:43.95pt;border-style:none;vertical-align:middle;"><p class="callout info">**<span>INFORMATION: </span>**The motor is also disabled if the temperature sensor is misconnected or fault in order to protect the motor from possible damage to the insulation material.</p>

</td></tr></tbody></table>

</td></tr><tr style="height:76.6204px;"><td style="width:18.3943%;padding:2.85pt 5.4pt;border-style:none;height:76.6204px;">**<span>![red led 3 flash.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/red-led-3-flash.png)</span>**

</td><td style="width:81.6042%;padding:2.85pt 5.4pt;border-style:none;height:76.6204px;">**Motor short**

A motor short has been detected. Motor phase-to-phase and phase-to-ground shorts can be detected by the SMD4. Inspect the motor and wiring to resolve before attempting to run the motor again.

</td></tr><tr style="height:74.7917px;"><td style="width:18.3943%;padding:2.85pt 5.4pt;border-style:none;height:74.7917px;">**<span>![red led with dash.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/red-led-with-dash.png)</span>**

</td><td style="width:81.6042%;padding:2.85pt 5.4pt;border-style:none;height:74.7917px;">**Limit hit**

Indicator flashes briefly once a second. A limit has been triggered and has stopped the motor.

</td></tr></tbody></table>

#### Clearing a fault

Faults may be cleared using the clear command, or by pulling the fault reset pin to the ‘GND’ pin the I/O connector.

The external enable fault is non-latching when in step direction mode; once the external enable state is restored, or the external enable setting is changed to false, normal operation will resume immediately without the need to clear it as described above.

# Software

### <span style="color:rgb(0,0,0);">Installation and setup</span>

The SMD4 is compatible with the AML Device Control software, which can be downloaded from the Software page on our website: [https://arunmicro.com/documents/software/](https://arunmicro.com/documents/software/)

- Connect all SMD4 devices to your computer <p class="callout info">If you intend to ultimately connect via LAN or Serial, start off by using the USB interface to perform basic setup on the LAN or serial interface first, then once satisfied connect on LAN or Serial as required.   
      
    Multiple instances of the same physical SMD4, but on different interfaces are allowed. For example, you could plug in the SMD4 with a network cable and USB lead, add the device connected via USB, configure network settings, then add device again as a network device. This can be useful during commissioning in establishing a working setup.  
      
    Note that the LAN interface only allows one connection at a time; auto-discovery of network connected device will fail to discover a device that is always connected to another software instance, be it AML Device Control or any other software.</p>
- Start the AML Device Control software and click ‘Add device’ in the top left corner

[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-01/scaled-1680-/image.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-01/image.png)

<span style="color:rgb(0,0,0);">Connected SMD4 devices should automatically appear in the list. Select all devices that you wish to add and click “Add n selected devices”</span>

[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-02/scaled-1680-/tVkimage.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-02/tVkimage.png)


<p class="callout info">The speed of auto detection varies by interface quantity of ports on your PC. Detection of USB and LAN devices is typically quick, whereas detection of devices connected via RS232 or RS485 can be considerably slower if a large number of COM ports are present on the PC.   
  
The SMD4 network interface has an implementation of SSDP (Simple Service Discovery Protocol) which allows it to be discovered easily on a network, without knowing its IP address.</p>


### <span style="color:rgb(0,0,0);">Overview</span>

<span style="color:rgb(0,0,0);">The default layout of the software is shown below:</span>

[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-01/scaled-1680-/JMIimage.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-01/JMIimage.png)

#### **<span style="color:rgb(0,0,0);">Project panel</span>**

<table class="MsoTableGrid" id="bkmrk-shows-a-list-of-the-" style="border-collapse:collapse;border-spacing:0px;width:98.8095%;height:461.033px;"><tbody><tr style="height:222px;"><td style="width:50.0004%;padding:0cm;border-style:hidden;height:222px;">Shows a list of the devices and scripts in the project. Currently selected devices are highlighted. Multiple devices can be selected by holding down CTRL and clicking. The device properties panel shows the properties for the selected device(s).

Right-clicking on an empty area within the project panel presents a context menu, with options to add new devices, new scripts or importing scripts.

</td><td style="width:2.16882%;padding:0cm;border-style:hidden;height:222px;"><span> </span>

</td><td style="width:47.8318%;padding:0cm;border-style:hidden;height:222px;"><span><span> </span></span>

[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-01/scaled-1680-/qWlimage.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-01/qWlimage.png)

</td></tr><tr style="height:22.4px;"><td style="width:50.0004%;padding:0cm;border-style:hidden;height:22.4px;">  
</td><td style="width:2.16882%;padding:0cm;border-style:hidden;height:22.4px;"><span> </span>

</td><td style="width:47.8318%;padding:0cm;border-style:hidden;height:22.4px;"><span> </span>

</td></tr><tr style="height:216.633px;"><td style="width:50.0004%;padding:0cm;border-style:hidden;height:216.633px;">The right-click context menu on each device provides access to functions such as clearing faults or placing the selected device into ident mode in which the green status indicator flashes.

</td><td style="width:2.16882%;padding:0cm;border-style:hidden;height:216.633px;"><span> </span>

</td><td style="width:47.8318%;padding:0cm;border-style:hidden;vertical-align:top;height:216.633px;"><span><span>[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-01/scaled-1680-/9A5image.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-01/9A5image.png)</span></span>

</td></tr></tbody></table>

A status indicator next to each device shows the current status of each device according to these colours:

<table class="MsoNormalTable" id="bkmrk-colour-description-%C2%A0" style="border-collapse:collapse;border:none;width:48.2723%;height:201.387px;"><tbody><tr style="height:31.3079px;"><td style="width:19.4221%;border:1pt solid rgb(127,127,127);background:rgb(109,111,113);padding:2.85pt 5.4pt;height:31.3079px;"><span style="color:rgb(255,255,255);">Colour</span>

</td><td style="width:80.7845%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(109,111,113);padding:2.85pt 5.4pt;height:31.3079px;"><span style="color:rgb(255,255,255);">Description</span>

</td></tr><tr style="height:45.4398px;"><td style="width:19.4221%;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:45.4398px;vertical-align:middle;"><span style="color:#000000;"><span>![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-gqukm9hp.png) </span></span>

</td><td style="width:80.7845%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:45.4398px;vertical-align:middle;"><span style="color:#000000;">Device connected and ready</span>

</td></tr><tr style="height:56.3657px;"><td style="width:19.4221%;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;height:56.3657px;vertical-align:middle;"><span>![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-nuavbykf.png) </span>

</td><td style="width:80.7845%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:56.3657px;vertical-align:middle;">Bake mode running, limit switch triggered or joystick connected

</td></tr><tr style="height:45.6366px;"><td style="width:19.4221%;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:45.6366px;vertical-align:middle;"><span style="color:#000000;"><span>![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-6pcr06rd.png) </span></span>

</td><td style="width:80.7845%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:45.6366px;vertical-align:middle;"><span style="color:#000000;">Device in a fault state</span>

</td></tr><tr style="height:22.6366px;"><td style="width:19.4221%;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;height:22.6366px;vertical-align:middle;"><span>![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-onlssu03.png) </span>

</td><td style="width:80.7845%;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:22.6366px;vertical-align:middle;">Device disconnected

</td></tr></tbody></table>





#### **<span style="color:rgb(0,0,0);">Device properties panel</span>**

Select one or more devices in the project panel; their properties are displayed and can be edited here. A blank is shown for properties which are different across the selected devices. As each property is selected, help text appears at the bottom of the panel describing the configuration option in more detail.

- Some properties allow selection of one of several choices, for example, temperature sensor selection:

![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-ifaxxusz.png)

- Others such as ‘Run current’ simply require a numeric value to be entered
- Others allow values to be entered directly, or the three dots button to the right to be clicked. This opens a window, allowing a more complex value to be input, for example, ‘Acceleration’ allows input in the native units or seconds:

![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-og0jituo.png)

#### **<span style="color:rgb(0,0,0);">System work area</span>**

Controller windows for each device appear in this area. Windows can be arranged as desired and will automatically ‘snap’ to a grid making it easy to keep them neatly organised.

#### **<span style="color:rgb(0,0,0);">Controller window</span>**

<table class="MsoTableGrid" id="bkmrk-shows-a-status-summa" style="border-collapse:collapse;width:100.001%;border-spacing:0px;height:318.608px;"><tbody><tr style="height:318.608px;"><td style="width:52.8781%;padding:0cm;border-style:hidden;height:318.608px;">Shows a status summary for the selected device, providing essential information such as actual velocity, actual (absolute) position, relative position and error status.

Absolute and relative position may be reset using the ![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-11/embedded-image-qc93djea.png) icons adjacent to the readouts.

Individual devices may be controlled using the buttons on the controller window, or if multiple devices are selected in the system tree on the left, use the controls on the ribbon to operate them all at once.

 ![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-y8dcktip.png)

<span>  
</span>

</td><td style="width:47.212%;padding:0cm;border-style:hidden;height:318.608px;">[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-01/scaled-1680-/YJXimage.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-01/YJXimage.png)

  
<span>  
</span>

</td></tr></tbody></table>

<p class="callout info">Be aware that the synchronisation between multiple SMD4s is not specified or guaranteed. For example, if multiple devices are selected and the start button on the ribbon is clicked delays within the computer, software, and data connection to the SMD4 mean that each SMD4 will start or stop its motion at a slightly different moment, therefore this option is not suitable for performing complex co-ordinated movements across multiple axes.</p>

#### <span style="color:rgb(0,0,0);">Ribbon</span>

Contains buttons for all actions. Hover over a button with the mouse to show tooltip with help information.

[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-01/scaled-1680-/8ibimage.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-01/8ibimage.png)

### <span style="color:rgb(0,0,0);">Scripting</span>

<table class="MsoTableGrid" id="bkmrk-the-software-include" style="border-collapse:collapse;width:100.001%;height:214px;border-spacing:0px;border:hidden;"><tbody><tr><td style="width:60.292%;padding:0cm;border-style:hidden;"><span style="color:rgb(0,0,0);">The software includes an easy to use script editor, that allows for sequences to be programmed and executed on multiple connected SMD4 devices, as well as system level operations such as adding and removing SMD4 devices from the project.</span><span style="color:rgb(0,0,0);">The scripting language used is JavaScript; this is powerful, easy to use and extensively documented. A global ‘smd’ object is made available from which you perform all interactions with the SMD4s. Type ‘smd.’ (or use the 'CTRL+K' keyboard shortcut) and an auto completion popup appears, showing all available commands, as well as help documentation for each. Press the enter key to select an option, then provide any arguments required.</span></td><td style="width:39.7981%;padding:0cm;border-style:hidden;"><span>![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-xiskhunj.png)  
</span>

</td></tr></tbody></table>

<span style="color:rgb(0,0,0);">Information on the available SMD4 device specific commands can be found in section [USB](https://bookstack.vps-da8d40f3.arunmicro.com/link/50#bkmrk-usb) of this manual. Serial command mnemonics will be auto completed by the script editor. The arguments of each scripting function are identical to those shown in section [Command Reference](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/communications-protocol#bkmrk-command-reference), however, the format of querying and commanding is different. The example below shows how the SMD4 mode can be set and queried:</span>

<table class="MsoNormalTable" id="bkmrk-smd.mode%282%29%3B-smd.mod" style="border-collapse:collapse;border:none;height:39px;width:111.977%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;background:rgb(244,244,244);padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">smd.Mode(1);</span>

<span style="color:rgb(224,62,45);">smd.Mode();</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(244,244,244);padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set the SMD4 mode to 1 (Normal)</span>

<span style="color:rgb(45,194,107);">// Query state of mode</span>

</td></tr></tbody></table>

<span style="color:rgb(0,0,0);">The ribbon contains scripting specific buttons.</span>

<span style="color:rgb(0,0,0);">![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-dzv1jovw.png)</span>

#### <span style="color:rgb(0,0,0);">Utility functions</span>

<span style="color:rgb(0,0,0);">These utility functions don't translate to a command executed by the SMD4, and are used to perform tasks such as connecting devices, or creating delays in your program.</span>

<table class="MsoNormalTable" id="bkmrk-function-description" style="width:812px;border-collapse:collapse;border:none;height:1081.34px;"><tbody><tr style="height:30.7407px;"><td style="width:130.146px;border:1pt solid rgb(127,127,127);background:rgb(109,111,113);padding:2.85pt 5.4pt;height:30.7407px;"><span style="color:rgb(255,255,255);">Function</span>

</td><td style="width:687.806px;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(109,111,113);padding:2.85pt 5.4pt;height:30.7407px;"><span style="color:rgb(255,255,255);">Description</span>

</td></tr><tr style="height:110.174px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:110.174px;"><span style="line-height:107%;color:#000000;">Add</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:110.174px;"><span class="CodeBlueChar" style="color:rgb(53,152,219);"><span>bool</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">Add</span>**<span style="line-height:107%;color:#000000;">(</span><span class="CodeBlueChar" style="color:rgb(53,152,219);"><span>string</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">serial</span>**<span style="line-height:107%;color:#000000;">)</span>

<span style="color:#000000;">Add a new device to the project.</span>

<span style="line-height:115%;color:#000000;">Returns true if the device has been detected and added to the project.</span>

<span style="line-height:107%;color:#000000;">serial:</span>

<span style="line-height:107%;color:#000000;"><span> </span>Device serial number.</span>

</td></tr><tr style="height:53.1482px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;height:53.1482px;"><span style="line-height:107%;">ClearLog</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:53.1482px;"><span class="CodeBlueChar" style="color:rgb(53,152,219);"><span>void</span></span><span style="line-height:107%;"> </span>**<span style="line-height:107%;">ClearLog</span>**<span style="line-height:107%;">( )</span>

<span style="line-height:107%;">Clear command line.</span>

</td></tr><tr style="height:52.1482px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:52.1482px;"><span style="line-height:107%;color:#000000;">ConnectAll</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:52.1482px;"><span class="CodeBlueChar" style="color:rgb(53,152,219);"><span>void</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">ConnectAll</span>**<span style="line-height:107%;color:#000000;">( )</span>

<span style="line-height:107%;color:#000000;">Connect all devices in the project.</span>

</td></tr><tr style="height:110.174px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;height:110.174px;"><span style="line-height:107%;">Delayms</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:110.174px;"><span class="CodeBlueChar" style="color:rgb(53,152,219);"><span>void</span></span><span style="line-height:107%;"> </span>**<span style="line-height:107%;">Delayms</span>**<span style="line-height:107%;">(</span><span style="color:rgb(53,152,219);"><span class="CodeBlueChar"><span>int</span></span><span style="line-height:107%;"> </span></span>**<span style="line-height:107%;">value</span>**<span style="line-height:107%;">)</span>

<span style="line-height:115%;">Delay for a specified duration in milliseconds, before executing the next instruction.</span>

<span>value:</span>

<span style="line-height:107%;"><span> </span>Minimum: 0</span>

<span style="line-height:107%;"><span> </span>Maximum: 2^31 -1</span>

</td></tr><tr style="height:110.174px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:110.174px;"><span style="line-height:107%;color:#000000;">DelaySeconds</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:110.174px;"><span class="CodeBlueChar" style="color:rgb(53,152,219);"><span>void</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">DelaySeconds</span>**<span style="line-height:107%;color:#000000;">(</span><span style="color:rgb(53,152,219);"><span class="CodeBlueChar"><span>int</span></span><span style="line-height:107%;"> </span></span>**<span style="line-height:107%;color:#000000;">value</span>**<span style="line-height:107%;color:#000000;">)</span>

<span style="line-height:115%;">Delay for a specified duration in seconds, before executing the next instruction.</span>

<span style="color:#000000;">value:</span>

<span style="line-height:107%;color:#000000;"><span> </span>Minimum: 0</span>

<span style="line-height:107%;color:#000000;"><span> </span>Maximum: 2147483</span>

</td></tr><tr style="height:53.1482px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;height:53.1482px;"><span style="line-height:107%;">DisconnectAll</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:53.1482px;"><span style="color:rgb(53,152,219);"><span class="CodeBlueChar"><span>void</span></span><span style="line-height:107%;"> </span></span>**<span style="line-height:107%;">DisconnectAll</span>**<span style="line-height:107%;">( )</span>

<span style="line-height:107%;">Disconnect all devices in the project.</span>

</td></tr><tr style="height:53.1482px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:53.1482px;"><span style="line-height:107%;color:#000000;">Log</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:53.1482px;"><span class="CodeBlueChar" style="color:rgb(53,152,219);"><span>void</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">Log</span>**<span style="line-height:107%;color:#000000;">(</span><span class="CodeBlueChar"><span>string</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">value</span>**<span style="line-height:107%;color:#000000;">)</span>

<span style="line-height:107%;color:#000000;">Print value to the command line.</span>

</td></tr><tr style="height:154.988px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;height:154.988px;"><span style="line-height:107%;">Name</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:154.988px;"><span class="CodeBlueChar"><span>bool **Name**(<span style="color:rgb(53,152,219);">string</span> **serial**, <span style="color:rgb(53,152,219);">string</span> **name**)</span></span>

<span class="CodeBlueChar"><span>Change name of the device.</span></span>

<span class="CodeBlueChar"><span>Returns true if the device has been found and name changed.</span></span>

<span class="CodeBlueChar"><span>serial:</span></span>

<span class="CodeBlueChar"><span><span> </span>Device serial number.</span></span>

<span class="CodeBlueChar"><span>name:</span></span>

<span class="CodeBlueChar"><span><span> </span>Device new name.</span></span>

</td></tr><tr style="height:110.174px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:110.174px;"><span style="line-height:107%;color:#000000;">Remove</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:110.174px;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span> **Remove**(<span style="color:rgb(53,152,219);">string</span> **serial**)</span></span>

<span class="CodeBlueChar"><span>Remove a device from the project.</span></span>

<span class="CodeBlueChar"><span>Returns true if the device has been detected and removed from the project.</span></span>

<span class="CodeBlueChar"><span>serial:</span></span>

<span class="CodeBlueChar"><span><span> </span>Device serial number.</span></span>

</td></tr><tr style="height:53.1482px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;height:53.1482px;"><span style="line-height:107%;">RemoveAll</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:53.1482px;"><span class="CodeBlueChar" style="color:rgb(53,152,219);"><span>void</span></span><span style="line-height:107%;"> </span>**<span style="line-height:107%;">RemoveAll</span>**<span style="line-height:107%;">( )</span>

<span style="line-height:107%;">Remove all devices from the project.</span>

</td></tr><tr style="height:87.7662px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:87.7662px;"><span style="line-height:107%;color:#000000;">Select</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:87.7662px;"><span style="color:rgb(53,152,219);"><span class="CodeBlueChar"><span>bool</span></span><span style="line-height:107%;"> </span></span>**<span style="line-height:107%;color:#000000;">Select</span>**<span style="line-height:107%;color:#000000;">(</span><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">string</span>\[ \]</span></span><span style="line-height:107%;color:#000000;"> devices)</span>

<span style="line-height:115%;color:#000000;">Returns true if all the requested devices have been selected.</span>

<span style="color:#000000;">devices:</span>

<span style="line-height:107%;color:#000000;"><span> </span>Name of the device(s).</span>

</td></tr><tr style="height:49.2593px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;height:49.2593px;"><span style="line-height:107%;">SelectAll</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:49.2593px;"><span class="CodeBlueChar" style="color:rgb(53,152,219);"><span>void</span></span><span style="line-height:107%;"> </span>**<span style="line-height:107%;">SelectAll</span>**<span style="line-height:107%;">( )</span>

Select all devices.

</td></tr><tr style="height:53.1482px;"><td style="width:130.146px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:53.1482px;"><span style="line-height:107%;color:#000000;">SelectNone</span>

</td><td style="width:687.806px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:53.1482px;"><span class="CodeBlueChar" style="color:rgb(53,152,219);"><span>void</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">SelectNone</span>**<span style="line-height:107%;color:#000000;">( )</span>

<span style="color:#000000;">Deselect all devices.</span>

</td></tr></tbody></table>

Functions that query the SMD4 and that are not also available as a remote command are listed below.

<p class="callout warning">Note that these all return an array rather than a single value, with each array element corresponding to the data from one SMD4. Use the array index syntax to access the desired element. This applies regardless of the number of devices.  
  
For example, if there is only one SMD4 connected, use BakeActiveFlag()\[0\] to get the state of the bake active flag for that device.</p>

The order of the array elements matches the order in which the SMD4 devices are selected. For example, suppose the “X-axis”, “Y-axis” and “Z-axis” named devices were selected with the command “smd.Select(“Z-axis”, ”X-axis”, ”Y-axis)”, to check the standby flag of the “Z-axis” device, use MotorStandbyFlag()\[2\]. Notice that array indices are 0 based.

<table class="MsoNormalTable" id="bkmrk-function-description-1" style="width:812px;border-collapse:collapse;border-spacing:0px;border:medium none;"><tbody><tr style="height:11.35pt;"><td style="width:259.157px;border:1pt solid rgb(127,127,127);background:rgb(109,111,113);padding:2.85pt 5.4pt;height:11.35pt;"><span style="color:rgb(255,255,255);">Function</span>

</td><td style="width:561.831px;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(109,111,113);padding:2.85pt 5.4pt;height:11.35pt;"><span style="color:rgb(255,255,255);">Description</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;"><span style="color:#000000;">BakeActiveFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">BakeActiveFlag</span>**<span style="line-height:107%;color:#000000;">()</span>

<span style="color:#000000;">Returns true if the bake mode is running.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;"><span style="line-height:107%;">ConfigurationErrorFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;"> </span>**<span style="line-height:107%;">ConfigurationErrorFlag</span>**<span style="line-height:107%;">()</span>

<span>Returns true if the motor configuration is corrupt.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;"><span style="line-height:107%;color:#000000;">EmergencyStopFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">EmergencyStopFlag</span>**<span style="line-height:107%;color:#000000;">()</span>

<span style="line-height:107%;color:#000000;">Returns true if the motor is disabled by software.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;"><span style="line-height:107%;">ExternalEnableFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;"> </span>**<span style="line-height:107%;">ExternalEnableFlag</span>**<span style="line-height:107%;">()</span>

<span style="line-height:107%;">Returns true if the external enable input is high.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;"><span style="line-height:107%;color:#000000;">ExternalInhibitFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">ExternalInhibitFlag</span>**<span style="line-height:107%;color:#000000;">()</span>

<span style="line-height:107%;color:#000000;">Returns true if the external enable input is disabling the motor.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;"><span style="line-height:107%;">IdentModeActiveFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;"> </span>**<span style="line-height:107%;">IdentModeActiveFlag</span>**<span style="line-height:107%;">()</span>

<span>Returns true if the ident mode is active.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;"><span style="line-height:107%;color:#000000;">JoystickConnectedFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">JoystickConnectedFlag</span>**<span style="line-height:107%;color:#000000;">()</span>

<span style="color:#000000;">Returns true if the joystick is connected.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;"><span style="line-height:107%;">LimitNegativeFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;"> </span>**<span style="line-height:107%;">LimitNegativeFlag</span>**<span style="line-height:107%;">()</span>

<span>Returns true if the negative limit is active.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(242,242,242);padding:2.85pt 5.4pt;"><span style="line-height:107%;color:#000000;">LimitPositiveFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(242,242,242);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">LimitPositiveFlag</span>**<span style="line-height:107%;color:#000000;">()</span>

<span style="color:#000000;">Returns true if the positive limit is active.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;"><span style="line-height:107%;">MotorOverTemperatureFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;"> </span>**<span style="line-height:107%;">MotorOverTemperatureFlag</span>**<span style="line-height:107%;">()</span>

<span style="line-height:107%;">Returns true if the motor temperature is greater than 190 </span><span style="line-height:107%;">°</span><span style="line-height:107%;">C.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(242,242,242);padding:2.85pt 5.4pt;"><span style="line-height:107%;color:#000000;">MotorShortFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(242,242,242);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">MotorShortFlag</span>**<span style="line-height:107%;color:#000000;">()</span>

<span style="line-height:107%;color:#000000;">Returns true if a motor phase to phase or phase to ground short has been detected.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;"><span style="line-height:107%;">MotorStandbyFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;"> </span>**<span style="line-height:107%;">MotorStandbyFlag</span>**<span style="line-height:107%;">()</span>

<span>Returns true if the motor is stationary.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(242,242,242);padding:2.85pt 5.4pt;"><span style="line-height:107%;color:#000000;">TargetVelocityReachedFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(242,242,242);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">TargetVelocityReachedFlag</span>**<span style="line-height:107%;color:#000000;">()</span>

<span style="line-height:107%;color:#000000;">Returns true if the motor is at the target step frequency.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;"><span style="line-height:107%;">TemperatureSensorOpenFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;"> </span>**<span style="line-height:107%;">TemperatureSensorOpenFlag</span>**<span style="line-height:107%;">()</span>

<span style="line-height:107%;">Returns true if the selected temperature sensor is open circuit.</span>

</td></tr><tr><td style="width:259.157px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(242,242,242);padding:2.85pt 5.4pt;"><span style="line-height:107%;color:#000000;">TemperatureSensorShortedFlag</span>

</td><td style="width:561.831px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(242,242,242);padding:2.85pt 5.4pt;"><span class="CodeBlueChar"><span><span style="color:rgb(53,152,219);">bool</span>\[\]</span></span><span style="line-height:107%;color:#000000;"> </span>**<span style="line-height:107%;color:#000000;">TemperatureSensorShortedFlag</span>**<span style="line-height:107%;color:#000000;">()</span>

<span style="line-height:107%;color:#000000;">Returns true if the selected temperature sensor is shorted (not applicable to thermocouple)</span>

</td></tr></tbody></table>

#### <span style="color:rgb(0,0,0);">Example scripts</span>

##### Add device, rename and set device properties

<div id="bkmrk-%2F%2F-add-device-with-s"><span style="color:rgb(45,194,107);">// Add device with serial number 20054-027</span></div><div id="bkmrk-smd.add%28%2220054-027%22%29">smd.Add(<span style="color:rgb(186,55,42);">"20054-027"</span>);</div><div id="bkmrk--13">  
</div><div id="bkmrk-%2F%2F-set-name-of-devic"><span style="color:rgb(45,194,107);">// Set name of device with serial number 20054-027 to MyDevice</span></div><div id="bkmrk-smd.name%28%2220054-027%22">smd.Name(<span style="color:rgb(186,55,42);">"20054-027","MyDevice"</span>);</div><div id="bkmrk--14">  
</div><div id="bkmrk-%2F%2F-select-device-wit"><span style="color:rgb(45,194,107);">// Select device with name MyDevice</span></div><div id="bkmrk-smd.select%28%22mydevice">smd.Select(<span style="color:rgb(186,55,42);">"MyDevice")</span>;</div><div id="bkmrk--15">  
</div><div id="bkmrk-%2F%2F-set-the-accelerat"><span style="color:rgb(45,194,107);">// Set the acceleration and deceleration rate in Hz/s</span></div><div id="bkmrk-smd.acceleration%28100">smd.Acceleration(<span style="color:rgb(255,0,255);">100</span>);</div><div id="bkmrk-smd.deceleration%28100">smd.Deceleration(<span style="color:rgb(255,0,255);">100</span>);</div><div id="bkmrk--16">  
</div><div id="bkmrk-%2F%2F-set-the-accelerat-1"><span style="color:rgb(45,194,107);">// Set the acceleration current</span></div><div id="bkmrk-smd.accelerationcurr">smd.AccelerationCurrent(<span style="color:rgb(255,0,255);">1.044</span>);</div><div id="bkmrk--17">  
</div><div id="bkmrk-%2F%2F-set-the-hold-curr"><span style="color:rgb(45,194,107);">// Set the hold current</span></div><div id="bkmrk-smd.holdcurrent%280%29%3B">smd.HoldCurrent(<span style="color:rgb(255,0,255);">0</span>);</div><div id="bkmrk--18">  
</div><div id="bkmrk-%2F%2F-set-the-run-curre"><span style="color:rgb(45,194,107);">// Set the run current</span></div><div id="bkmrk-smd.runcurrent%280.5%29%3B">smd.RunCurrent(<span style="color:rgb(255,0,255);">0.5</span>);</div><div id="bkmrk--19">  
</div><div id="bkmrk-%2F%2F-set-the-start-fre"><span style="color:rgb(45,194,107);">// Set the start frequency</span></div><div id="bkmrk-smd.startfrequency%281">smd.StartFrequency(<span style="color:rgb(255,0,255);">10</span>);</div><div id="bkmrk--20">  
</div><div id="bkmrk-%2F%2F-set-the-step-freq"><span style="color:rgb(45,194,107);">// Set the step frequency</span></div><div id="bkmrk-smd.stepfrequency%2810">smd.StepFrequency(<span style="color:rgb(255,0,255);">1000</span>);</div><div id="bkmrk--21">  
</div><div id="bkmrk-%2F%2F-set-the-frequency"><span style="color:rgb(45,194,107);">// Set the frequency at which the drive transitions to full step</span></div><div id="bkmrk-smd.microsteptransit">smd.MicrostepTransition(<span style="color:rgb(255,0,255);">500</span>);</div><div id="bkmrk--22">  
</div><div id="bkmrk-%2F%2F-set-the-micostep-"><span style="color:rgb(45,194,107);">// Set the micostep resolution</span></div><div id="bkmrk-smd.resolution%2864%29%3B">smd.Resolution(<span style="color:rgb(255,0,255);">64</span>);</div>##### Execute a series of movements, illustrating synchronous move commands

<div id="bkmrk-%2F%2F-select-device-wit-1"><span style="color:rgb(45,194,107);">// Select device and set mode to remote</span></div><div id="bkmrk-smd.select%28%22mydevice-1">smd.Select(<span style="color:rgb(186,55,42);">"MyDevice"</span>);</div><div id="bkmrk-smd.mode%282%29%3B">smd.Mode(<span style="color:rgb(255,0,255);">1</span>);</div><div id="bkmrk-%C2%A0-%C2%A0-%2F%2F-move-motor-%2B5"></div><div id="bkmrk-%2F%2F-move-%2B100-steps%2C-"><span style="color:rgb(45,194,107);">// Move +100 steps, then -500 steps, and finally +100 steps</span></div><div id="bkmrk-%2F%2F-%22moverelative%22-ex"><span style="color:rgb(45,194,107);">// "MoveRelative" executes synchronously, i.e. the motor must arrive at its destination position before the next line of code executes</span></div><div id="bkmrk-%C2%A0-%C2%A0-smd.moverelative">smd.MoveRelative(<span style="color:rgb(255,0,255);">500</span>);</div><div id="bkmrk-smd.moverelative%28-50">smd.MoveRelative(<span style="color:rgb(255,0,255);">-</span><span style="color:rgb(255,0,255);">500</span>);</div><div id="bkmrk-smd.moverelative%28100">smd.MoveRelative(<span style="color:rgb(255,0,255);">1</span><span style="color:rgb(255,0,255);">00</span>);</div><div id="bkmrk--23"></div><div id="bkmrk-%2F%2F-log-the-finishing"><span style="color:rgb(45,194,107);">// Log the finishing step position to the command line output area</span></div><div id="bkmrk-smd.log%28smd.actualpo">smd.Log(smd.ActualPosition()[<span style="color:rgb(255,0,255);">0</span>]);</div><div id="bkmrk--24"></div>##### Execute movement on multiple drives, illustrating synchronous and asynchronous commands

<div id="bkmrk-%C2%A0-%C2%A0%C2%A0"><div id="bkmrk-%2F%2F-select-first-devi"><span style="color:rgb(45,194,107);">// Select first device and start a movement</span></div><div id="bkmrk-smd.select%28%22device_0">smd.Select(<span style="color:rgb(186,55,42);">"Device\_0"</span>);</div><div id="bkmrk-smd.mode%282%29%3B-1">smd.Mode(<span style="color:#ff00ff;">1</span>);</div><div id="bkmrk-smd.moverelativeasyn">smd.MoveRelativeAsync(<span style="color:rgb(255,0,255);">10000</span>); <span style="color:rgb(45,194,107);">// Execution continues to the next line of code immediately, regardless of how long this move will</span></div><div><span style="color:rgb(45,194,107);"> // requires to complete.</span></div></div><div id="bkmrk--25"></div><div id="bkmrk-%2F%2F-select-second-dev"><span style="color:rgb(45,194,107);">// Select second device and start a movement</span></div><div id="bkmrk-smd.select%28%22device_1"><div id="bkmrk-smd.select%28%22device_1-1">smd.Select(<span style="color:rgb(186,55,42);">"Device\_1"</span>);</div><div id="bkmrk-smd.mode%282%29%3B-2">smd.Mode(<span style="color:rgb(255,0,255);">2</span>);</div><div id="bkmrk--26"></div><div id="bkmrk-smd.moverelativeasyn-1">smd.MoveRelativeAsync(<span style="color:rgb(255,0,255);">5000</span>);</div></div><div id="bkmrk--27">  
</div><div id="bkmrk-%2F%2F-both-motors-are-c"><span style="color:rgb(45,194,107);">// Both motors are completing their moves at the same time.</span></div>##### Get value of actual position counter and log to command line

<div id="bkmrk-%2F%2F-select-device-wit-2"><span style="color:rgb(45,194,107);">// Select device with name MyDevice</span></div><div id="bkmrk-smd.select%28%22mydevice-2">smd.Select(<span style="color:rgb(186,55,42);">"MyDevice"</span>);</div><div id="bkmrk--28">  
</div><div id="bkmrk-%2F%2F-store-actual-posi"><span style="color:rgb(45,194,107);">// Store actual position in a variable</span></div><div id="bkmrk-pact-%3D-smd.actualpos">pact = smd.ActualPosition();</div><div id="bkmrk--29">  
</div><div id="bkmrk-%2F%2F-log-result-to-com"><span style="color:rgb(45,194,107);">// Log result to command line</span></div><div id="bkmrk-smd.log%28pact%5B0%5D%29%3B">smd.Log(pact[<span style="color:rgb(255,0,255);">0</span>]);</div><div id="bkmrk--30">  
</div>##### Check if the motor is in standby

<div id="bkmrk-%2F%2F-select-device-wit-3"><span style="color:rgb(45,194,107);">// Select device with name MyDevice</span></div><div id="bkmrk-smd.select%28%22mydevice-3">smd.Select(<span style="color:rgb(186,55,42);">"MyDevice"</span>);</div><div id="bkmrk--31">  
</div><div id="bkmrk-%2F%2F-store-status-flag"><span style="color:rgb(45,194,107);">// Store status flags in a variable</span></div><div id="bkmrk-status-%3D-smd.statusf">status = smd.StatusFlags();</div><div id="bkmrk--32">  
</div><div id="bkmrk-%2F%2F-log-a-specific-bi"><span style="color:rgb(45,194,107);">// Log a specific bit status of the selected device to the command line</span></div><div id="bkmrk-if%28status%5B0%5D-%3D-statu">if(status[<span style="color:rgb(255,0,255);">0</span>] = status[<span style="color:rgb(255,0,255);">0</span>] &amp; (<span style="color:rgb(255,0,255);">0x1</span> &lt;&lt; <span style="color:rgb(255,0,255);">6</span>)){</div><div id="bkmrk-%C2%A0-%C2%A0-smd.log%28%22motor-i"> smd.Log(<span style="color:rgb(186,55,42);">"Motor is in standby"</span>);</div><div id="bkmrk-%7D-else-%7B%C2%A0-%C2%A0%C2%A0">} else { </div><div id="bkmrk-%C2%A0-%C2%A0-smd.log%28%22motor-i-1"> smd.Log(<span style="color:rgb(186,55,42);">"Motor is running"</span>);</div><div id="bkmrk-%7D-1">}</div>

# Remote interfaces

The SMD4 offers 3 communication interfaces, USB, Ethernet and Serial. The serial interface is dual mode, and can be configured for RS232 or RS485. Multiple interfaces can be connected and in use at the same time (AML Device Control software allows you to connect the same device on multiple interfaces at once which may be useful during network setup for example). All interfaces use a text-based communication protocol described in section [Communications protocol](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/communications-protocol).

This section may only be relevant if you are using terminal software or writing your own application. AML Device control software interacts with the SMD4 in the same way and requires no specialist knowledge to use. A C# API is also provided, allowing you to easily integrate communication with the SMD4 into your own C# .NET application. If you do not wish to use the API, refer to the [Communications protocol](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/communications-protocol) section which describes the commands available and their usage.

### USB

A reversible USB-C connector is provided.

The SMD4 appears as a virtual COM port on your PC, and will be assigned a designation such as "COM1". Each unique SMD4 that is connected to the PC will be assigned a new designation. Upon reconnecting a previously known SMD4, it will typically assume the same designation as when last used, however, this behaviour cannot be guaranteed.

The virtual COM port does not require any particular configuration to function correctly. Typical settings such as baud rate and parity are not applicable.

Most programming languages include easy built-in methods to read and write data to and from a COM port, for example, the SerialPort class in the System.IO.Ports namespace in C#, or pySerial in Python. Alternatively, use a terminal program such as Tera Term to manually type commands and see responses. Remember to set line termination which is a carriage return followed by line feed (in hexadecimal, 0x0D, 0x0A)

### Serial

A pair of RJ45 connectors are provided allowing multiple devices to be bussed together if required. This is discussed in section [RS232/RS485](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/installation#bkmrk-rs232%2F485). Do not confuse these connectors with the Ethernet connector.

The serial interface can be configured for RS232 or RS485.

If connecting to a PC, a serial port is required. Modern PCs seldom include RS232/485 ports, so typically a USB adapter or add-in card is required. This appears on the PC as one or more COM ports.

Unlike the virtual COM port provided via the USB interface, the COM port must be configured correctly:

- Baud to match that set on the SMD4
- 1 stop bit
- No parity
- No flow control

Thereafter, the same notes as for USB apply.

<p class="callout warning">Configure the mode of operation (RS232 or RS485) before plugging a connector in. Do not make changes to the mode without first disconnecting both connectors. Undefined behaviour will result if the SMD4 is connected to an RS485 network when in RS232 mode or vice-versa.</p>

### Ethernet

A standard 10/100M ethernet port is provided. It features Auto MDI-X so straight or crossover cable may be used.

The factory default setup enables DHCP, so under normal circumstances, this will assign the network configuration to the SMD4. Alternatively, use another interface, such as USB, to configure the ethernet port.

The SMD4 uses port 11312 for its text-based communication protocol. Only one connection at a time is supported, additional connections will be refused.  
  
As with COM ports, most programming languages provide easy means to open a socket and communicate with network devices. Alternatively, use a terminal program such as PuTTY to manually type commands and see responses. See example PuTTY setup below; change IP address to suit your device.

[![image.png](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-09/scaled-1680-/image.png)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2025-09/image.png)

#### SSDP

The SMD4 is discoverable on the network using SSDP (Simple Service Discovery Protocol). This makes it possible to plug the SMD4 into a network, then discover its IP address and so make a connection to it. Alternatively, use another interface, for example, USB to discover the network configuration.

Our AML Device Control software uses this mechanism to auto discover SMD4s on the network. Discovery may take some tens of seconds. If your device is not discovered, check that it has not already been connected to another instance of Device Control software running on your network, because the SMD4 only supports one connection at a time. Note however that you can ping the SMD4 at any time even if a connection is already established to verify its presence (for example, on Windows, use the "ping" command line tool). If the SMD4 can be pinged, but you are unable to connect to it using Device Control or your own software or terminal application, it is likely that the network interface is connected, perhaps to another instance of Device Control or other software.

##### Supported search targets (queries)

All – Not SMD4 specific, all devices on the network supporting this command will respond including SMD4

- <span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#2a00ff;background:#E8F2FE;">"<u>ssdp</u>:all"</span>

<span style="font-family:Symbol;"><span>·<span style="font:7pt 'Times New Roman';"> </span></span></span>UPNP Root Device, as above

- <span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#2a00ff;background:#E8F2FE;">"<u>upnp</u>:<u>rootdevice</u>"</span>

<span style="font-family:Symbol;"><span>·<span style="font:7pt 'Times New Roman';"> </span></span></span>Device – Specify domain name, device type and version to match the SMD4 and only SMD4s will respond:

- <span style="font-family:'Courier New';"><span><span style="font:7pt 'Times New Roman';"> </span></span></span><span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#000000;background:#E8F2FE;">"</span><span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#0000FF;background:#E8F2FE;">urn:schemas-arunmicro-com:device:StepperMotorDrive:1</span><span style="font-size:9pt;line-height:107%;font-family:'Cascadia Mono';color:#000000;background:#E8F2FE;">"</span>
- <span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#2a00ff;background:#E8F2FE;">"urn:"</span><span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#000000;background:#E8F2FE;"> SSDPR\_SCHEMA\_DOMAIN\_NAME </span><span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#2a00ff;background:#E8F2FE;">":device:"</span><span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#000000;background:#E8F2FE;"> SSDPR\_SCHEMA\_DEVICE\_TYPE </span><span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#2a00ff;background:#E8F2FE;">":"</span><span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#000000;background:#E8F2FE;"> SSDPR\_SCHEMA\_VER”</span>

UUID – Specify a UUID and only one device having that UUID should respond. Use **this command** to get the UUID of your SMD4.

- <span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#2a00ff;background:#E8F2FE;">"uuid:"</span><span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#000000;background:#E8F2FE;"> UUID</span>

Where:

- <span style="font-size:10pt;font-family:'Cascadia Mono';color:#000000;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-attachment:initial;">SSDPR\_SCHEMA\_DOMAIN\_NAME</span><span style="font-size:10pt;font-family:'Cascadia Mono';color:#000000;"><span> </span></span><span style="font-size:10pt;font-family:'Cascadia Mono';color:#2a00ff;">"schemas-arunmicro-com"</span>
- SSDPR\_SCHEMA\_DEVICE\_TYPE <span style="font-size:10pt;font-family:'Cascadia Mono';color:#2a00ff;">"StepperMotorDrive"</span>
- SSDPR\_SCHEMA\_VER <span style="font-size:10pt;line-height:107%;font-family:'Cascadia Mono';color:#2a00ff;">"1"</span>

##### Response

The SMD4 always responds in this way:

<span style="font-size:9pt;line-height:107%;font-family:Consolas;">HTTP/1.1 200 OK\\r\\n  
CACHE-CONTROL:max-age=120\\r\\n  
DATE:\\r\\n  
EXT:\\r\\n  
LOCATION:<span style="background:#00FFFF;">http://10.0.97.6:80/desc.xml</span>\\r\\n  
SERVER:OS/version product/version\\r\\n  
ST:uuid:28254095-7194-11ee-a857-44b7d0c76aa3\\r\\n  
USN:uuid:</span><span style="font-size:7pt;line-height:107%;font-family:Consolas;background:#FFFF00;">28254095-7194-11ee-a857-44b7d0c76aa3</span><span style="font-size:7pt;line-height:107%;font-family:Consolas;">::<span style="background:#00FF00;">urn:schemas-arunmicro-com:device:StepperMotorDrive:1</span>\\r\\n</span><span style="font-size:9pt;line-height:107%;font-family:Consolas;">  
\\r\\n</span>

Note:

- Response always starts with http ok
- CACHE\_CONTROL, DATE and EXT are not used. CACHE-CONTROL has a default value but no meaning
- <span style="text-indent:-18pt;"><span style="background-color:rgb(0,255,255);">LOCATION</span> is a URL to an xml file containing information as required by UPnP. The SMD4 does not implement a webserver to allow this file to be retrieved, however the root of the URL gives the IP address of the device which may be used to address future communications.</span>
- <span style="text-indent:-18pt;">SERVER:OS not implemented</span>
- <span style="text-indent:-18pt;">ST; this echos the search target sent in the query</span>
- <span style="text-indent:-18pt;">USN: gives the <span style="background-color:rgb(255,255,0);">uuid </span>and <span style="background-color:rgb(0,255,0);">device type info</span></span>

# Communications protocol

A simple text-based protocol is used. Commands are sent to the SMD4, checked and executed, and a response returned. Data are buffered on receipt and commands are evaluated and executed on a first in first out basis. Although not a requirement, it is usually easiest to send a command and evaluate the response before sending the next command.

Commands are in the form (Note that angle brackets are shown for clarity only, they are not part of the protocol):

`<span style="font-size:11pt;"><em><address prefix></em><mnemonic>,<argument 1>,<argument 2>,<argument n>…<CR><LF></span>`

And responses are in the form:

`<span style="line-height:107%;"><span style="font-size:11pt;"><em><address prefix>,</em><SFLAGS>,<EFLAGS>,<data 1>,<data 2>,<data n>…<CR><LF></span></span>`

<span style="line-height:107%;">If the command executed successfully, or:</span>

`<span style="line-height:107%;"><span style="font-size:11pt;"><em><address prefix></em>,<SFLAGS>,<EFLAGS>,<error code><CR><LF></span></span>`

<span style="line-height:107%;">If the command failed to execute correctly.</span>

<span style="line-height:107%;">Where:</span>

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-item-description-%3Cad"><tbody><tr><td>Item

</td><td>Description

</td></tr><tr><td>*&lt;address prefix&gt;*

</td><td>**Optional** prefix included when multiple SMD4s exist on the same bus. If not using addressing can be omitted.

</td></tr><tr><td>&lt;mnemonic&gt;

</td><td>Short sequence of characters representing a command, case insensitive

</td></tr><tr><td>&lt;argument n&gt;

</td><td>Zero or more command arguments

</td></tr><tr><td>&lt;data n&gt;

</td><td>Zero or more response data items

</td></tr><tr><td>&lt;error code&gt;

</td><td>An error code, see section [Error Codes](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-error-codes). This includes both a number and text description of the error to aid when using the SMD4 via a terminal program.

</td></tr><tr><td>&lt;SFLAGS&gt;

</td><td>Set of flags representing the status of the SMD4, such as the state of the limit inputs or whether the joystick is connected. See section [Status Flags](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-status-flags-%28sflags)

</td></tr><tr><td>&lt;EFLAGS&gt;

</td><td>Set of flags representing the error state of the SMD4, such as invalid mnemonic, or motor over-temperature fault.

</td></tr><tr><td>&lt;CR&gt;&lt;LF&gt;

</td><td>Message terminator; carriage return followed by line-feed (0x0D,0x0A)

</td></tr></tbody></table>

### **Addressing**

This section is only applicable where multiple SMD4s are connected together on the same bus, using the serial interface in either RS232 or RS485 mode. The addressing logic described in this section works for all interfaces, but is redundant for USB and the network interface since those inherently implement addressing.

When multiple SMD4s exist on the same bus, a mechanism is required to allow them to be addressed uniquely or as a group. Likewise, only one device must use the bus at a time otherwise bus contention results when more than one device tries to drive the bus at a time.

This is accomplished via the address prefix, which is the at '@' symbol followed by a numeric address:

- 0 = Broadcast address, all SMD4s execute the command, but no response is sent
- 1 to 247 = Valid secondary address range. The addressed SMD4 executes the command and returns a response
- Any address outside this range is invalid, and the packet is silently ignored

Upon receipt of the first complete packet with an address prefix, the SMD4 enters addressing mode, and behaviour then changes as follows, until restart.

- Malformed packets are silently ignored. This includes any packet that does not include the addressing prefix but that is otherwise valid.
- Broadcast packets are silently parsed and executed. A response is not sent, and as such it cannot be determined whether the command executed successfully without submitting a further query addressed directly to the target SMD4.
- <span style="font-family:inherit;font-size:inherit;">Packets that are otherwise correctly formed but having a target address that does not match that of the SMD4 are silently ignored. </span>

### **Comma separation**

All elements are comma-separated, except for the message terminator which immediately follows the last item. A response is always sent on receipt of a message terminator except where addressing criteria are not met. If an argument was supplied with a command, for example, to set a value, the value set will be returned in the response and serves as an additional confirmation of the command having executed as expected.

Many commands accept a real number argument when the underlying quantity is an integer, or finite set of real numbers. In this case, the supplied value being otherwise acceptable is rounded to the closest integer or real number from the allowed set, and it is this value that is returned in the response.

**No data items to return**  
If there are no data items as part of a response, only the SFLAGS and EFLAGS are returned. If an error occurred, then this will be reflected in the EFLAGS.

### <span>Data types</span>

The SMD4 uses the following data types. Arguments sent to and from the SMD4 will be one of these types. Bracketed values are notes or converted values and not part of the data sent to or from the SMD4. Same applies to quotes.

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-type-name-descriptio"><tbody><tr><td>Type</td><td>SMD4 accepts</td><td>SMD4 responds</td></tr><tr><td>INT</td><td>Integer value, with or without sign:

100, -3, +7

</td><td>Sign only included for negative numbers:

200, -3, 7

</td></tr><tr><td>UINT</td><td>Unsigned integer value, no sign:

0, 7, 1000

Hexadecimal format is also accepted:

0x38e3 (14,563)

0x005F (95)

</td><td>Unsigned integer value, no sign:

100, 200

Status and error flags are returned in upper case 2-byte hexadecimal format, E.g. 0x1234, 0xA4DE

</td></tr><tr><td>FLOAT</td><td>Real number, with or without sign:

100, 34.5, 89.234234

Scientific format may also be used:

100e-3, 2.454E+1, 2e+3

</td><td>Scientific format, with variable places after the decimal point and a 2-digit exponent:

1.23000E+04, 5.761592342E-06

</td></tr><tr><td>STRING</td><td colspan="2">ASCII string, consisting of characters 0x20 to 0x7E inclusive:

"hello", "1234 abc"

</td></tr><tr><td>BOOL</td><td colspan="2">Binary, true/false value:

0, 1

</td></tr><tr><td>DOTTED DECIMAL</td><td colspan="2">IPV4 address or mask, four numbers separated by dots:

"192.168.0.1", "255.255.255.255"

</td></tr><tr><td>MAC</td><td colspan="2">12 hexadecimal characters grouped into pairs separated by a colon:

"44:b7:d0:c7:16:75"

</td></tr><tr><td>OTHER</td><td colspan="2">The data type is described in the command reference section

</td></tr></tbody></table>

### <span>Flags</span>

Flags are reported by the device in hexadecimal format as explained above. E.g. a value of 0x0002 means bit 1 is set. The value of reserved flags is undefined and no particular value should be assumed.

#### <span>Error flags (EFLAGS)</span>

These indicate error conditions and are latching (i.e. remain set even after the error condition that caused them no longer persists). Reset the fault using the clear command, or the reset fault input. The motor is disabled if one or more error flags are set.

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-bit-name-description"><tbody><tr><td>Bit

</td><td>Name

</td><td>Description

</td></tr><tr><td>0</td><td>Temperature sensor short</td><td>Selected temperature sensor is short-circuited (Not applicable to Thermocouple)</td></tr><tr><td>1</td><td>Temperature sensor open</td><td>Selected temperature sensor is open circuit</td></tr><tr><td>2</td><td>Motor over temperature</td><td>Selected temperature sensor is reporting temperature &gt; 190 °C and power has been removed from the motor to protect the windings</td></tr><tr><td>3</td><td>Motor short</td><td>Motor phase to phase or phase to ground short has been detected</td></tr><tr><td>4</td><td>External disable</td><td>Motor disabled via external input</td></tr><tr><td>5</td><td>Emergency stop</td><td>Motor disabled via software</td></tr><tr><td>6</td><td>Configuration error</td><td>Motor configuration is corrupted</td></tr><tr><td>7</td><td>Reserved 7</td><td>  
</td></tr><tr><td>8</td><td>Reserved 8</td><td>  
</td></tr><tr><td>9</td><td>SDRAM</td><td>Memory self-test failed</td></tr><tr><td class="text-nowrap">10</td><td>Reserved 10</td><td>  
</td></tr><tr><td>11</td><td>Reserved 11</td><td>  
</td></tr><tr><td>12</td><td>Reserved 12</td><td>  
</td></tr><tr><td>13</td><td>Reserved 13</td><td>  
</td></tr><tr><td>14</td><td>Reserved 14</td><td>  
</td></tr><tr><td>15</td><td>Motion control fault</td><td>One or more motion control features (EPC, ROML etc.) are in a fault state</td></tr></tbody></table>

#### <span>Status flags (SFLAGS)</span>

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-bit-name-description-1"><tbody><tr><td>Bit

</td><td>Name

</td><td>Description

</td></tr><tr><td>0

</td><td>Joystick connected</td><td>Joystick is connected (determined via state of the </td></tr><tr><td>1

</td><td>Limit negative</td><td>Limit input is active (Note that the polarity is configurable, so active can mean high or low signal level)</td></tr><tr><td>2

</td><td>Limit positive</td><td>Limit input is active (Note that the polarity is configurable, so active can mean high or low signal level)</td></tr><tr><td>3

</td><td>External enable</td><td>External enable input state</td></tr><tr><td>4

</td><td>Ident</td><td>Ident mode is active, green status indicator is flashing to aid in identifying device</td></tr><tr><td>5

</td><td>EPC activity</td><td>Endpoint correction activity indicator; on when this feature is busy</td></tr><tr><td>6</td><td>ROML activity</td><td>Range of motion limiter activity indicator; true when this feature is busy</td></tr><tr><td>7

</td><td>Standby</td><td>Motor stationary. Check this bit before performing a function that requires the motor to be stopped first, such as changing mode</td></tr><tr><td>8

</td><td>Baking</td><td>Bake mode running</td></tr><tr><td>9

</td><td>Target Velocity Reached</td><td>Set when the motor is at target velocity</td></tr><tr><td>10

</td><td>GUARD activity</td><td>Guard activity indicator; true when this feature is busy</td></tr><tr><td>11

</td><td>Boost Operational</td><td>Internal 48 V to 67 V boost supply is operational</td></tr><tr><td>12

</td><td>Boost disable jumper</td><td>Boost supply disable jumper is fitted</td></tr><tr><td>13

</td><td>Boost UVLO</td><td>Boost supply is disabled because input voltage is too low (&lt; 48 V approx.)</td></tr><tr><td>14

</td><td>Reserved 14</td><td>  
</td></tr><tr><td>15

</td><td>Motion control warning</td><td>One or more motion control features (EPC, ROML etc.) are in a warning state</td></tr></tbody></table>

#### <span>Error codes</span>

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-error-description--1"><tbody><tr><td>Error

</td><td>Description

</td></tr><tr><td>-1 (Stop motor first)

</td><td>Several actions, such as changing resolution or operating mode require that the motor is stopped first. Trying to run such a command before the motor has come to a stop and the standby flag in the status register is set will result in this error.

</td></tr><tr><td>-2 (Argument validation)

</td><td>An argument supplied to the command is invalid, for example, it is outside the allowable range.

</td></tr><tr><td>-3 (Unable to get)

</td><td>The command is write-only, read is not valid. This applies to commands such as stop, where read would have no meaning.

</td></tr><tr><td>-5 (Action failed)

</td><td>The command failed to execute due to an internal error, for example, the internal flash in which settings are stored has reached the end of life and data cannot be reliably written to it.

</td></tr><tr><td>-6 (Not possible in mode)

</td><td>The command is not applicable to this mode, for example, trying to start bake when not in bake mode.

</td></tr><tr><td>-7 (Not possible when motor disabled)

</td><td>The motor is disabled (due to a fault, or external enable) and the command is one that starts motion.

</td></tr><tr><td>-101 (Argument type)

</td><td>The argument is of the wrong type, for example a non-integer value was given where an integer value was required.

</td></tr><tr><td>-102 (Argument count)

</td><td>The argument count is incorrect, either too few or too many arguments have been supplied.

</td></tr><tr><td>-103 (Invalid Mnemonic)

</td><td>Command mnemonic is not valid

</td></tr><tr><td>-104 (Packet error)

</td><td>Packet is malformed

</td></tr></tbody></table>

### <span>Quick reference</span>

#### <span>Bake</span>

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-mnemonic-description-6"><tbody><tr><td>Mnemonic

</td><td>Description

</td><td>R

</td><td>W

</td><td>Type

</td></tr><tr><td>[BAKE:ELAPSED](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-bake%3Aelapsed-%E2%80%93-elaps)

</td><td>Elapsed bake time in format h:mm:ss

</td><td>●

</td><td></td><td>STRING

</td></tr><tr><td>[BAKE:RUN](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-bake%3Arun-%E2%80%93-start-bak)

</td><td>Start bake

</td><td></td><td>●

</td><td></td></tr><tr><td>[BAKE:T](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-baket-%E2%80%93-bake-tempera)

</td><td>Bake temperature setpoint

</td><td>●

</td><td>●

</td><td>UINT

</td></tr></tbody></table>


#### Boost

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-mnemonic-description-7"><tbody><tr><td>Mnemonic

</td><td>Description

</td><td>R

</td><td>W

</td><td>Type

</td></tr><tr><td>[BOOST:EN](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-boost%3Aen-%E2%80%93-boost-ena)

</td><td>Boost enable</td><td>●</td><td>●</td><td>BOOL</td></tr><tr><td>[BOOST:JUMPER](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-boost%3Ajumper-%E2%80%93-boost)

</td><td>Check if boost disable PCB jumper is fitted</td><td>●</td><td>  
</td><td>BOOL</td></tr></tbody></table>

#### Coms

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-mnemonic-description-8"><tbody><tr><td>Mnemonic

</td><td>Description

</td><td>R

</td><td>W

</td><td>Type

</td></tr><tr><td>[COMS:NET:DHCP](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-coms%3Anet%3Adhcp-%E2%80%93-dhcp)

</td><td>DHCP enable</td><td>●</td><td>●</td><td>BOOL</td></tr><tr><td>[COMS:NET:GATEWAY](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-coms%3Anet%3Agateway-%E2%80%93-g)

</td><td>Gateway address</td><td>●</td><td>●</td><td>DOTTED DECIMAL</td></tr><tr><td>[COMS:NET:IP](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-coms%3Anet%3Aip-%E2%80%93-ip-add)

</td><td>IP address</td><td>●</td><td>●</td><td>DOTTED DECIMAL</td></tr><tr><td>[COMS:NET:IPCONF](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-coms%3Anet%3Aipconf-%E2%80%93-ge)

</td><td>Summary of network configuration in human readable form</td><td>●</td><td>  
</td><td>STRING</td></tr><tr><td>[COMS:NET:LINK](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-coms%3Anet%3Alink-%E2%80%93-get-)

</td><td>Ethernet interface link is up</td><td>●</td><td>  
</td><td>BOOL</td></tr><tr><td>[COMS:NET:MAC](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-coms%3Anet%3Amac-%E2%80%93-get-m)

</td><td>Ethernet interface MAC address</td><td>●</td><td>  
</td><td>MAC</td></tr><tr><td>[COMS:NET:NETMASK](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-coms%3Anet%3Anetmask-%E2%80%93-s)

</td><td>Ethernet subnet mask</td><td>●</td><td>●</td><td>DOTTED DECIMAL</td></tr><tr><td>[COMS:SERIAL:BAUD](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-coms%3Aserial%3Abaud-%E2%80%93-b)

</td><td>Serial baud rate</td><td>●</td><td>●</td><td>UINT</td></tr><tr><td>[COMS:SERIAL:MODE](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-coms%3Aserial%3Amode-%E2%80%93-r)

</td><td>Serial coms mode, RS232 or 485</td><td>●</td><td>●</td><td>UINT</td></tr><tr><td>[COMS:SERIAL:RS485DEL](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-coms%3Aserial%3Ars485del)

</td><td>RS485 turnaround delay</td><td>●</td><td>●</td><td>UINT</td></tr><tr><td>[COMS:SERIAL:SLAVEADDR](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-coms%3Aserial%3Aslaveadd)

</td><td>Slave address</td><td>●</td><td>●</td><td>UINT</td></tr><tr><td>[COMS:SERIAL:TERM](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-coms%3Aserial%3Aterm-%E2%80%93-t)

</td><td>Enable RS485 line termination</td><td>●</td><td>●</td><td>BOOL</td></tr></tbody></table>

#### <span>Encoder</span>

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-mnemonic-description-1"><tbody><tr><td>Mnemonic

</td><td>Description

</td><td>R

</td><td>W

</td><td>Arguments

</td></tr><tr><td>[ENC:BSN](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Absn-%E2%80%93-board-seri)</td><td>Encoder board serial number</td><td>●</td><td> </td><td>STRING</td></tr><tr><td>[ENC:DAT](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Adat-%E2%80%93-encoder-re)</td><td>Encoder readout data</td><td>●</td><td> </td><td>OTHER</td></tr><tr><td>[ENC:DPC](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Adpc-%E2%80%93-displaceme)</td><td>Encoder displacement per count</td><td>●</td><td>●</td><td>FLOAT</td></tr><tr><td>[ENC:FLIP](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Aflip%E2%80%93-flip)</td><td>Reverse encoder direction</td><td>●</td><td>●</td><td>BOOL</td></tr><tr><td>[ENC:FLIP:AUTOSET](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Aflip%3Aautoset---a)</td><td>Auto configure flip</td><td>  
</td><td>●</td><td> </td></tr><tr><td>[ENC:FW](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Afw---firmware-ve)</td><td>Encoder firmware version</td><td>●</td><td> </td><td>STRING</td></tr><tr><td>[ENC:INC:LIMITS:EN](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Ainc%3Alimits%3Aen---)</td><td>Enable incremental PQ limits</td><td>●</td><td>●</td><td>BOOL</td></tr><tr><td>[ENC:INC:LIMITS:P:EN](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Ainc%3Alimits%3Ap%3Aen-)</td><td>Enable incremental P limit</td><td>●</td><td>●</td><td>BOOL</td></tr><tr><td>[ENC:INC:LIMITS:Q:EN](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Ainc%3Alimits%3Aq%3Aen-)</td><td>Enable incremental Q limit</td><td>●</td><td>●</td><td>BOOL</td></tr><tr><td>[ENC:INC:LIMITS:STOPMODE](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Ainc%3Alimits%3Astopm)</td><td>Incremental PQ limits stop mode</td><td>●</td><td>●</td><td>UINT</td></tr><tr><td>[ENC:INC:LIMITS:SWAP](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Ainc%3Alimits%3Aswap-)</td><td>Incremental swap P and Q</td><td>●</td><td>●</td><td>BOOL</td></tr><tr><td>[ENC:INC:RSTZ](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Ainc%3Arstz---incre)</td><td>Incremental reset the Z counter</td><td>  
</td><td>●</td><td> </td></tr><tr><td>[ENC:OFS](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Aofs---offset)</td><td>Encoder readout offset</td><td>●</td><td>●</td><td>FLOAT</td></tr><tr><td>[ENC:SEL](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Asel---selection)</td><td>Select absolute or incremental encoder</td><td>●</td><td>●</td><td> </td></tr><tr><td>[ENC:USEINCE](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-enc%3Auseince---use-in)</td><td>Incremental use the E (error) signal</td><td>●</td><td>●</td><td>  
</td></tr></tbody></table>


#### <span>Limit inputs</span>

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-mnemonic-description-4"><tbody><tr><td>Mnemonic

</td><td>Description

</td><td>R

</td><td>W

</td><td>Arguments

</td></tr><tr><td>[LIMIT:EN](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-l-%E2%80%93-limits-global-en)

</td><td>Global enable

</td><td>●

</td><td>●

</td><td>BOOL

</td></tr><tr><td>[LIMIT:EN+](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-limit%3Aen-%2C-limit%3Aen%2B)

</td><td>Limit positive (Limit 1) enable

</td><td>●

</td><td>●

</td><td>BOOL

</td></tr><tr><td>[LIMIT:EN-](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-limit%3Aen-%2C-limit%3Aen%2B)

</td><td>Limit negative (Limit 2) enable

</td><td>●

</td><td>●

</td><td>BOOL

</td></tr><tr><td>[LIMIT:POL](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-lp-%E2%80%93-global-limit-po)

</td><td>Limit polarity for both Limit positive (Limit 1) and negative (Limit 2), (0 for active high, 1 for active low)

</td><td></td><td>●

</td><td>BOOL

</td></tr><tr><td>[LIMIT:POL+](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-lp%2B%2C-lp--individual-)

</td><td>Limit n polarity (0 for active high, 1 for active low)

</td><td>●

</td><td>●

</td><td>BOOL

</td></tr><tr><td>[LIMIT:POL-](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-lp%2B%2C-lp--individual-)

</td><td>Limit n polarity (0 for active high, 1 for active low)

</td><td>●

</td><td>●

</td><td>BOOL

</td></tr><tr><td>[LIMIT:STOPMODE](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-lsm-%E2%80%93-limit-stop-mod)

</td><td>How to stop on limit being triggered

</td><td>●

</td><td>●

</td><td>BOOL

</td></tr></tbody></table>

#### <span>Motion control</span>

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-mnemonic-description-2"><tbody><tr><td>Mnemonic

</td><td>Description

</td><td>R

</td><td>W

</td><td>Arguments

</td></tr><tr><td>[MCON:ESTOP](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-estop-%E2%80%93-emergency-st)

</td><td>Emergency stop. Stops the motor immediately

</td><td></td><td>●

</td><td></td></tr><tr><td>[MCON:MPRESET](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Ampreset---mech-)

</td><td>Mechanism presets

</td><td>●

</td><td>●

</td><td>UINT

</td></tr><tr><td>[MCON:NUDGE:RUN:NEG](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Anudge%3Arun%3Aneg-%E2%80%93)

</td><td>Execute negative nudge

</td><td>●

</td><td>●

</td><td></td></tr><tr><td>[MCON:NUDGE:RUN:POS](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Anudge%3Arun%3Apos-%E2%80%93)

</td><td>Execute positive nudge

</td><td>●

</td><td>●

</td><td></td></tr><tr><td>[MCON:NUDGE:VALUE](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Anudge%3Avalue---n)

</td><td>Nudge distance

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MCON:RUNA](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-runa-%E2%80%93-run%2C-absolute)

</td><td>Move motor absolute positioning mode

</td><td></td><td>●

</td><td>INT

</td></tr><tr><td>[MCON:RUNH](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-motor%3Arunh---run%2C-ho)

</td><td>Start home mode procedure

</td><td></td><td>●

</td><td>STRING

</td></tr><tr><td>[MCON:RUNR](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-runr---run%2C-relative)

</td><td>Move motor relative positioning mode

</td><td></td><td>●

</td><td>INT

</td></tr><tr><td>[MCON:RUNV](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-%C2%A0-6)

</td><td>Move motor velocity mode

</td><td></td><td>●

</td><td>STRING

</td></tr><tr><td>[MCON:SF:EPC](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Asf%3Aepc---closed)  
</td><td>Closed loop (Endpoint Correction, EPC) behaviour</td><td>●</td><td>●</td><td>UINT</td></tr><tr><td>[MCON:SF:EPC:N](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Asf%3Aepc%3An%3A---clo)</td><td>Closed loop (Endpoint Correction, EPC) maximum iterations</td><td>●</td><td>●</td><td>UINT</td></tr><tr><td>[MCON:SF:EPC:T](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Asf%3Aepc%3At%3A---clo)  
</td><td>Closed loop (Endpoint Correction, EPC) tolerance</td><td>●</td><td>●</td><td>FLOAT</td></tr><tr><td>[MCON:SF:GUARD](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Asf%3Aguard---guar)  
</td><td>Guard behaviour</td><td>●</td><td>●</td><td>UINT</td></tr><tr><td>[MCON:SF:GUARD:1](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Asf%3Aguard%3An---gu)  
</td><td>Guard value one</td><td>●</td><td>●</td><td>FLOAT</td></tr><tr><td>[MCON:SF:GUARD:2](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Asf%3Aguard%3An---gu)  
</td><td>Guard value two</td><td>●</td><td>●</td><td>FLOAT</td></tr><tr><td>[MCON:SF:ROML](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Asf%3Aroml--range-)  
</td><td>Range of motion limiter behaviour</td><td>●</td><td>●</td><td>UINT</td></tr><tr><td>[MCON:SF:ROML:1](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Asf%3Aroml%3An---ran)  
</td><td>Range of motion limiter value one</td><td>●</td><td>●</td><td>FLOAT</td></tr><tr><td>[MCON:SF:ROML:2](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Asf%3Aroml%3An---ran)  
</td><td>Range of motion limiter value two</td><td>●</td><td>●</td><td>FLOAT</td></tr><tr><td>[MCON:SF:ROML:J](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Asf%3Aroml%3Aj---ran)  
</td><td>Range of motion limiter, enable for step direction mode</td><td>●</td><td>●</td><td>BOOL</td></tr><tr><td>[MCON:SSTOP](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sstop-%E2%80%93-stop-motor-i)

</td><td>Stop motor in 1 second on full step position independently of the current motion profile

</td><td></td><td>●

</td><td></td></tr><tr><td>[MCON:STOP](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-stop-%E2%80%93-stop-motor)

</td><td>Bring motor to a stop according to the current profile

</td><td></td><td>●

</td><td></td></tr><tr><td>[MCON:U](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Au---displacemen)  
</td><td>Mechanism displacement per step</td><td>●</td><td>●</td><td>FLOAT</td></tr><tr><td>[MCON:ZEROA](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Azeroa-%E2%80%93-zero-ab)  
</td><td>Zero the absolute counter</td><td>  
</td><td>●</td><td>  
</td></tr><tr><td>[MCON:ZEROAR](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Azeroar-%E2%80%93-zero-a)  
</td><td>Zero absolute and relative counters</td><td>  
</td><td>●</td><td>  
</td></tr><tr><td>[MCON:ZEROR](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mcon%3Azeror-%E2%80%93-zero-re)</td><td>Zero relative counter</td><td>  
</td><td>●</td><td>  
</td></tr></tbody></table>

#### <span>Motor</span>

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-mnemonic-description-3"><tbody><tr><td>Mnemonic

</td><td>Description

</td><td>R

</td><td>W

</td><td>Arguments

</td></tr><tr><td>[MOTOR:AMAX](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-amax---acceleration)

</td><td>Acceleration in Hz/s

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:DMAX](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-dmax---deceleration)

</td><td>Deceleration in Hz/s

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:EDGE](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-edge-%E2%80%93-edge-to-step-)

</td><td>Which edges of step input to generate a step on

</td><td>●

</td><td>●

</td><td>UINT

</td></tr><tr><td>[MOTOR:F](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-f-%E2%80%93-freewheel-mode)

</td><td>Freewheel mode

</td><td>●

</td><td>●

</td><td>UINT

</td></tr><tr><td>[MOTOR:IA](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-ia-%E2%80%93-acceleration-cu)

</td><td>Acceleration current in amps

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:IH](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-ih-%E2%80%93-hold-current)

</td><td>Hold current in amps

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:IHD](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-ihd-%E2%80%93-current-reduct)

</td><td>Delay per current reduction step

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:INTERP](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-interp-%E2%80%93-step-interp)

</td><td>Interpolate step input to 256 micro steps

</td><td>●

</td><td>●

</td><td>BOOL

</td></tr><tr><td>[MOTOR:IR](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-ir-%E2%80%93-run-current)

</td><td>Run current in amps

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:PACT](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-pact-%E2%80%93-actual-positi)

</td><td>Actual position

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:PDDEL](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-pddel-%E2%80%93-power-down-d)

</td><td>Power down delay in milliseconds

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:PREL](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-prel-%E2%80%93-relative-posi)

</td><td>Relative position

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:RES](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-%C2%A0-24)

</td><td>Resolution

</td><td>●

</td><td>●

</td><td>UINT

</td></tr><tr><td>[MOTOR:SDMODE](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-motor%3Asdmode---step%2F)

</td><td>Step/direction mode

</td><td>●

</td><td>●

</td><td>UINT

</td></tr><tr><td>[MOTOR:T](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-tmot-%E2%80%93-motor-tempera)

</td><td>Temperature in °C

</td><td>●

</td><td></td><td>UINT

</td></tr><tr><td>[MOTOR:THIGH](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-thigh-%E2%80%93-microstep-tr)

</td><td>Full step – micro stepping transition

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:TSEL](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-tsel-%E2%80%93-temperature-s)

</td><td>Temperature sensor selection, T/C or RTD

</td><td>●

</td><td>●

</td><td>UINT

</td></tr><tr><td>[MOTOR:TZW](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-tzw-%E2%80%93-zero-wait-time)

</td><td>Time to stop before moving again in seconds

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:VACT](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-vact-%E2%80%93-actual-freque)

</td><td>Actual motor velocity

</td><td>●

</td><td></td><td>FLOAT

</td></tr><tr><td>[MOTOR:VMAX](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-vmax-%E2%80%93-step-frequenc)

</td><td>Target motor velocity

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:VSTART](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-vstart-%E2%80%93-start-frequ)

</td><td>Start velocity

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr><tr><td>[MOTOR:VSTOP](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-vstop-%E2%80%93-stop-frequen)

</td><td>Stop velocity

</td><td>●

</td><td>●

</td><td>FLOAT

</td></tr></tbody></table>

#### <span>General</span>

<table class="table-shaded-header table-striped table-grey-borders" id="bkmrk-mnemonic-description"><tbody><tr><td>Mnemonic

</td><td>Description

</td><td>R

</td><td>W

</td><td>Arguments

</td></tr><tr><td>[SYS:BSN](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Absn-%E2%80%93-get-mother)

</td><td>Get main board serial number

</td><td>●

</td><td></td><td>STRING

</td></tr><tr><td>[SYS:CLR](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Aclr-%E2%80%93-clear-faul)

</td><td>Clear error flags

</td><td></td><td>●

</td><td></td></tr><tr><td>[SYS:EXTEN](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk--4)

</td><td>External enable used

</td><td>●

</td><td>●

</td><td>BOOL

</td></tr><tr><td>[SYS:FLAGS](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Aflags-%E2%80%93-get-stat)

</td><td>Get status and error flags

</td><td>●

</td><td></td><td></td></tr><tr><td>[SYS:FLAGSV](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Aflagsv-%E2%80%93-get-sta)

</td><td>Get human readable summary of status and error flags

</td><td>●

</td><td></td><td>STRING

</td></tr><tr><td>[SYS:FW](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Afw-%E2%80%93-get-firmwar)

</td><td>Read main board firmware version number

</td><td>●

</td><td></td><td>STRING

</td></tr><tr><td>[SYS:IDENT](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-ident---blinks-statu)

</td><td>Set the status indicator flashing to help identify the device

</td><td>●

</td><td>●

</td><td>BOOL

</td></tr><tr><td>[SYS:JS:EN](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-%C2%A0-15)

</td><td>Enable or disable the joystick input

</td><td>●

</td><td>●

</td><td>BOOL

</td></tr><tr><td>[SYS:JS:MODE](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-jsmode-%E2%80%93-joystick-mo)

</td><td>Joystick mode

</td><td>●

</td><td>●

</td><td>UINT

</td></tr><tr><td>[SYS:LOAD](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Aload-%E2%80%93-load-last)

</td><td>Load saved configuration

</td><td></td><td>●

</td><td></td></tr><tr><td>[SYS:LOADFD](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Aloadfd-%E2%80%93-load-fa)

</td><td>Load factory default settings

</td><td></td><td>●

</td><td></td></tr><tr><td>[SYS:MODE](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mode---choose-mode-o)

</td><td>Mode of operation

</td><td>●

</td><td>●

</td><td>UINT

</td></tr><tr><td>[SYS:NAME](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Apsn-%E2%80%93-get-produc)

</td><td>Device name tag

</td><td>●

</td><td>●

</td><td>STRING

</td></tr><tr><td>[SYS:PROG](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Aprog-%E2%80%93-enter-pro)

</td><td>Enter programming mode

</td><td></td><td>●

</td><td></td></tr><tr><td>[SYS:RESET](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Areset%E2%80%93-restart-t)

</td><td>Restart the SMD4

</td><td></td><td>●

</td><td></td></tr><tr><td>[SYS:SER](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Aser-%E2%80%93-get-produc)</td><td>Product serial number</td><td>●</td><td> </td><td>STRING</td></tr><tr><td>[SYS:STORE](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Astore)</td><td>Store settings</td><td> </td><td>●</td><td> </td></tr><tr><td>[SYS:UNITS](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Aunits)</td><td>Get or set the measurement unit</td><td>●</td><td>●</td><td>UINT</td></tr><tr><td>[SYS:UPTIME](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Auptime-%E2%80%93-get-upt)</td><td>Get the uptime in milliseconds</td><td>●</td><td> </td><td>UINT</td></tr><tr><td>[SYS:UUID](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-sys%3Auuid-%E2%80%93-get-uuid)</td><td>Get a the products UUID (Universally Unique ID)</td><td>●</td><td> </td><td>STRING</td></tr></tbody></table>


### <span>Command reference</span>

<span>In the examples <span style="color:rgb(224,62,45);">red <span>text is data transmitted to the SMD4, and <span style="color:rgb(53,152,219);">blue </span>text is data received from the SMD4. <span style="color:rgb(224,62,45);"><span><span style="color:rgb(45,194,107);">// </span></span></span><span style="color:rgb(45,194,107);">Green </span>text preceded by a double forward slash is a comment relating to that data. Arguments where present are given as an argument name in angle brackets.</span></span></span>

#### Bake

##### BAKE:RUN – Start bake

Start bake. Configure the bake temperature setpoint using [BakeTemperature](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-baket-%E2%80%93-bake-tempera).

<table id="bkmrk-command%3A-bake%3Arun%3Ccr"><colgroup><col></col><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="3">**BAKE:RUN**&lt;CR&gt;&lt;LF&gt;</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-bake%3Arun%3Ccr%3E%3Clf%3E" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:368px;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">BAKE:RUN&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Run bake</span>

</td></tr></tbody></table>


##### BAKE:ELAPSED – Elapsed bake time

Gets the elapsed bake time.

<table id="bkmrk-query%3A-bake%3Aelapsed%3C"><colgroup><col></col><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="3">**BAKE:ELAPSED**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="3"><span style="background-color:rgb(248,202,198);">&lt;duration&gt;</span><span style="background-color:rgb(248,202,198);">  
</span></td></tr><tr><td colspan="4">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td colspan="2">**Description  
</td></tr><tr><td><span style="background-color:rgb(248,202,198);">duration</span></td><td><span style="color:rgb(53,152,219);">STRING</span></td><td colspan="2">Elapsed time in format h:mm:ss, where h is hours, m minutes and s seconds.

</td></tr></tbody></table>

<table class="MsoNormalTable" id="bkmrk-tx%3A-bake%3Aelapsed%3Ccr%3E"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;height:45.8667px;"><span style="color:rgb(224,62,45);">Tx: BAKE:ELAPSED&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x0000,0x0000,2:34:12&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;height:45.8667px;"><span style="color:rgb(45,194,107);">// Bake has run for 2 hours 34 minutes and 12 seconds</span>

</td></tr></tbody></table>


##### BAKE:T – Bake temperature setpoint

Gets or sets the bake temperature setpoint. To run bake, select bake mode using the [MODE,](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-mode---choose-mode-o) then start bake using the run bake command. Use stop command to end bake.

<table id="bkmrk-command%3A-bake%3At%2C%3Cset"><colgroup><col></col><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="3">**BAKE:T<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;setpoint&gt;</span>&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Query:</td><td colspan="3">**BAKE:T &lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="3"><span style="background-color:rgb(248,202,198);">&lt;setpoint&gt;</span><span style="background-color:rgb(248,202,198);">  
</span></td></tr><tr><td colspan="4">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td colspan="2">**Description  
</td></tr><tr><td><span style="background-color:rgb(248,202,198);">setpoint</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td colspan="2">\[Default: 150 °C\]

Min. 0 °C

Max. 200 °C

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-baket%2C100%3Ccr%3E%3Clf" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">BAKE:T,100&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,100&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">BAKE:T&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,100&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set bake setpoint to 100 °C</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

#### Boost

##### BOOST:EN – Boost enable

Gets or sets a value indicating whether the boost supply should be enabled. The boost supply steps up the input voltage from 48 V to 67 V to maximise motor dynamic performance. Enable for best performance. Regardless of this setting, the boost supply is disabled when input voltage falls below 48 V, and or the boost disable jumper is fitted.

<table id="bkmrk-command%3A-boost%3Aen%2C%3Cs"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**BOOST:EN<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**BOOST:EN &lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>0: Disable

\[1: Enable\]

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-boost%3Aen%2C1%3Ccr%3E%3Cl" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">BOOST:EN,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">BOOST:EN&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Enable boost</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### BOOST:JUMPER – Boost disable PCB jumper

Gets a value indicating whether the boost supply disable jumper is fitted. If the jumper is fitted, the boost supply is disabled and the maximum voltage supplied to the motor will equal the input voltage to the SMD4. This will compromise motor dynamic performance.

<table id="bkmrk-query%3A-boost%3Ajumper%C2%A0"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**BOOST:JUMPER &lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>0: Jumper is not fitted, boost supply is enabled provided input voltage criteria met

1: Jumper is fitted, boost supply is disabled

</td></tr></tbody></table>

#### Coms: Network

##### COMS:NET:DHCP – DHCP

Gets or sets a value indicating whether DHCP is enabled. If enabled, DHCP (Dynamic Host Configuration Protocol) will be used to automatically assign network configuration, such as IP address and gateway, to the device.

<table id="bkmrk-command%3A-coms%3Anet%3Adh"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**COMS:NET:DHCP<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Query:</td><td colspan="2"> **COMS:NET:DHCP**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>0: Disable

\[1: Enable\]

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-coms%3Anet%3Adhcp%2C1%3C" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">COMS:NET:DHCP,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">COMS:NET:DHCP&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Enable DHCP</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### COMS:NET:GATEWAY – Gateway

Gets or sets the gateway address. When DHCP is enabled, the value read back will be the value assigned by DHCP rather than any value you might have set. Any value set however is retained, and will apply if DHCP is disabled at a later time.

<table id="bkmrk-command%3A-coms%3Anet%3Aga"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**COMS:NET:GATEWAY<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;address&gt;</span>&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**COMS:NET:GATEWAY**&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;address&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">address</span></td><td><span style="color:rgb(53,152,219);">DOTTED DECIMAL</span></td><td>Gateway address</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-coms%3Anet%3Adhcp%3Ccr" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">COMS:NET:DHCP&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">COMS:NET:GATEWAY,192.168.1.1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,10.0.96.1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">COMS:NET:DHCP,0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">COMS:NET:GATEWAY&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,192.168.1.1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query DHCP state and find that it's enabled</span>

<span style="color:rgb(45,194,107);">// Set the gateway; the returned value is that assigned by DHCP // not the value we just set</span>

<span style="color:rgb(45,194,107);">// Turn DHCP off</span>

<span style="color:rgb(45,194,107);">// Query gateway again</span>

<span style="color:rgb(45,194,107);">// Now DHCP is off, our assigned gateway value is used</span>

</td></tr></tbody></table>

##### COMS:NET:IP – IP Address

Gets or sets the IP address. When DHCP is enabled, the value read back will be the value assigned by DHCP rather than any value you might have set. Any value set however is retained, and will apply if DHCP is disabled at a later time.

<table id="bkmrk-command%3A-coms%3Anet%3Aip"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**COMS:NET:IP<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;address&gt;</span>&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**COMS:NET:IP**&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;address&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">address</span></td><td><span style="color:rgb(53,152,219);">DOTTED DECIMAL</span></td><td>IP address</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-coms%3Anet%3Aip%3Ccr%3E%3C" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">Tx: COMS:NET:IP&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x0000,0x0000,10.0.97.70&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query the IP address</span>

</td></tr></tbody></table>

##### COMS:NET:IPCONF – Get network config summary

Outputs a summary of network configuration in human readable form.

<table id="bkmrk-query%3A-coms%3Anet%3Aipco"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**COMS:NET:IPCONF**&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;summary&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">summary</span></td><td><span style="color:rgb(53,152,219);">STRING</span></td><td>ASCII table summarizing the network configuration, see example.</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-coms%3Anet%3Aipconf%3C" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:60.5596%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">Tx: COMS:NET:IPCONF&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x0000,0x0000,&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Ethernet interface:&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);"> IPv4 Address. . . . . . . . . . . :10.0.97.70&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);"> Subnet Mask . . . . . . . . . . .:255.255.248.0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);"> Default Gateway . . . . . . . :10.0.96.1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);"> DHCP State. . . . . . . . . . . . :Enabled&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:39.325%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"></td></tr></tbody></table>

##### COMS:NET:LINK – Get link up status

Gets a value indicating whether the ethernet interface link is up. This will read back as false when the LAN connector is unplugged for example.

<table id="bkmrk-query%3A-coms%3Anet%3Alink"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**COMS:NET:LINK**&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>0: Link down

1: Link up

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-coms%3Anet%3Alink%3Ccr" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">Tx: COMS:NET:LINK&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

<span style="color:rgb(45,194,107);">// Link is up</span>

</td></tr></tbody></table>

##### COMS:NET:MAC – Get MAC address

Gets the Ethernet interface MAC address.

<table id="bkmrk-query%3A-coms%3Anet%3Amac%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**COMS:NET:MAC**&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;mac&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">mac</span></td><td><span style="color:rgb(53,152,219);">MAC</span></td><td>MAC address, 12 hexadecimal characters grouped into pairs separated by a colon, for example "44:b7:d0:c7:16:75"

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-coms%3Anet%3Amac%3Ccr%3E" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">Tx: COMS:NET:MAC&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x0000,0x0000,44:b7:d0:c7:16:75&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### COMS:NET:NETMASK – Subnet mask

Gets or sets the subnet mask. When DHCP is enabled, the value read back will be the value assigned by DHCP rather than any value you might have set. Any value set however is retained, and will apply if DHCP is disabled at a later time.

<table id="bkmrk-command%3A-coms%3Anet%3Ane"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**COMS:NET:NETMASK<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;mask&gt;</span>&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**COMS:NET:NETMASK**&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;mask&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">mask</span></td><td><span style="color:rgb(53,152,219);">DOTTED DECIMAL</span></td><td>Mask</td></tr></tbody></table>

<table class="MsoNormalTable" id="bkmrk-tx%3A-coms%3Anet%3Anetmask" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">COMS:NET:NETMASK&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,255.255.248.0&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>


#### Coms: Serial

##### COMS:SERIAL:BAUD – Baud rate

Gets or sets the baud rate.

<table id="bkmrk-command%3A-coms%3Aserial"><colgroup><col></col><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="3">**COMS:SERIAL:BAUD<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;baud&gt;</span>**&lt;CR&gt;&lt;LF&gt;**</td></tr><tr><td class="align-right">Query:</td><td colspan="3">**COMS:SERIAL:BAUD**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="3"><span style="background-color:rgb(248,202,198);">&lt;baud&gt;</span><span style="background-color:rgb(248,202,198);">  
</span></td></tr><tr><td colspan="4">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td colspan="2">**Description  
</td></tr><tr><td><span style="background-color:rgb(248,202,198);">baud</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td colspan="2">Baud rate:

4800  
9600  
14400  
19200  
38400  
57600  
\[115200\]  
230400  
460800  
921600

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-coms%3Aserial%3Abaud" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">COMS:SERIAL:BAUD,9600&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,9600&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">COMS:SERIAL:BAUD&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,9600&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set 9600 baud</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### COMS:SERIAL:MODE – RS232/RS485 mode selection

Gets or sets the serial coms mode, either RS232 or RS485. Unplug from the host device before changing the mode.

<table id="bkmrk-command%3A-coms%3Aserial-1"><colgroup><col></col><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="3">**COMS:SERIAL:MODE<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span>&lt;CR&gt;&lt;LF&gt;</td></tr><tr><td class="align-right">Query:</td><td colspan="3">**COMS:SERIAL:MODE**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="3"><span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span><span style="background-color:rgb(248,202,198);">  
</span></td></tr><tr><td colspan="4">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td colspan="2">**Description  
</td></tr><tr><td><span style="background-color:rgb(248,202,198);">mode</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td colspan="2">0: RS232

\[1: RS485\]

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-coms%3Aserial%3Amode" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">COMS:SERIAL:MODE,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">COMS:SERIAL:MODE&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set RS485 mode</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### COMS:SERIAL:RS485DEL – Turnaround delay

Gets or sets a value in milliseconds specifying the delay to execute between receipt of a command from the host and the client (SMD4) sending the response. Applicable to RS485 mode only.

The RS485 interface is half duplex (it can send or receive data, but cannot do both at once) and so by default is in the receive state. The interface switches to transmit mode when a command has been received, executed and a response is ready to send. The turnaround delay is used to insert an additional delay following execution of the command but preceding switching to transmit, to allow the host more time to switch into receive mode.

Experiment with increasing this setting if you find that host receives a response with a portion missing from the start of the response, for example missing some or all of the status an error flags.

<table id="bkmrk-command%3A-coms%3Aserial-2"><colgroup><col></col><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="3">**COMS:SERIAL:RS485DEL<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;delay&gt;</span>&lt;CR&gt;&lt;LF&gt;</td></tr><tr><td class="align-right">Query:</td><td colspan="3">**COMS:SERIAL:RS485DEL**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="3"><span style="background-color:rgb(248,202,198);">&lt;delay&gt;</span><span style="background-color:rgb(248,202,198);">  
</span></td></tr><tr><td colspan="4">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td colspan="2">**Description  
</td></tr><tr><td><span style="background-color:rgb(248,202,198);">delay</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td colspan="2">Delay in milliseconds.

Default: 0

Minimum: 0

Maximum: 1000

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-coms%3Aserial%3Ars48" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">COMS:SERIAL:RS485DEL,10&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">COMS:SERIAL:RS485DEL&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,10&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set delay of 10 ms</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### COMS:SERIAL:SLAVEADDR – Slave address

Gets or sets the slave address. Only applicable when addressing mode is used, see [addressing section](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-addressing).

<table id="bkmrk-command%3A-coms%3Aserial-3"><colgroup><col></col><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="3">**COMS:SERIAL:SLAVEADDR<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;address&gt;</span>&lt;CR&gt;&lt;LF&gt;</td></tr><tr><td class="align-right">Query:</td><td colspan="3">**COMS:SERIAL:SLAVEADDR**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="3"><span style="background-color:rgb(248,202,198);">&lt;address&gt;</span><span style="background-color:rgb(248,202,198);">  
</span></td></tr><tr><td colspan="4">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td colspan="2">**Description  
</td></tr><tr><td><span style="background-color:rgb(248,202,198);">address</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td colspan="2">Slave address.

Default: 1

Minimum: 1

Maximum: 247

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-coms%3Aserial%3Aslav" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">Tx: COMS:SERIAL:SLAVEADDR,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">Tx: COMS:SERIAL:SLAVEADDR&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Disable termination</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### COMS:SERIAL:TERM – Termination

Gets or sets a value indicating whether RS485 line termination should be used. If enabled, a 120 termination resistance is placed between the RS485 A and B pins. See [section on termination](https://bookstack.vps-da8d40f3.arunmicro.com/link/27#bkmrk-rs232%2F485).

<table id="bkmrk-command%3A-coms%3Aserial-4"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**COMS:SERIAL:TERM<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;  
</td></tr><tr><td class="align-right">Query:</td><td colspan="2"> **COMS:SERIAL:TERM**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>0: Disable

\[1: Enable\]

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-coms%3Aserial%3Aterm" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">COMS:SERIAL:TERM,0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">COMS:SERIAL:TERM&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Disable termination</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

#### <span style="line-height:107%;">Encoder</span>

##### ENC:BSN – Board serial number

Gets the encoder board serial number. If the encoder module is not present an empty string is returned.

<table id="bkmrk-query%3A-enc%3Absn%3Ccr%3E%3Cl"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**ENC:BSN**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;serial&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">serial</span></td><td><span style="color:rgb(53,152,219);">STRING</span></td><td>Encoder board serial number.

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-enc%3Absn%3Ccr%3E%3Clf%3E-0x00" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">ENC:BSN&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1232492&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### ENC:DAT – Encoder readout

Gets the latest data from the encoder. If the encoder module is not present, all values read as zero. Data relating to a particular type of encoder (incremental, or BiSS absolute) are only applicable when that type of encoder connected and otherwise are of undefined value.

<table id="bkmrk-query%3A-enc%3Adat%3Ccr%3E%3Cl"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**ENC:DAT**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">&lt;flags&gt;</span></span>,<span style="background-color:rgb(236,202,250);">&lt;incremental ab count&gt;</span>,<span style="background-color:rgb(194,224,244);">&lt;incremental z count&gt;</span>,<span style="background-color:rgb(191,237,210);">&lt;absolute count&gt;</span>,<span style="background-color:rgb(251,238,184);">&lt;absolute position&gt;</span>,<span style="background-color:rgb(248,202,198);">&lt;absolute velocity&gt;</span>,<span style="background-color:rgb(236,202,250);">&lt;relative position&gt;</span>,<span style="background-color:rgb(194,224,244);">&lt;relative velocity&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">flags</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>Encoder status flags. 16 bit value presented as an unsigned integer. The bits are:

Bit Description

0: Incremental P limit signal

1: Incremental Q limit signal

2: Incremental E (error) signal

3: BiSS CRC error

4: BiSS warning

5: BiSS error

6: reserved 6

7: reserved 7

8: Installed

9: Online

10: reserved 10

11: reserved 11

12: reserved 12

13: reserved 13

14: reserved 14

15: reserved 15

</td></tr><tr><td><span style="background-color:rgb(236,202,250);">incremental ab count</span></td><td><span style="color:rgb(53,152,219);">INT</span></td><td>Incremental encoder AB (position) count.

</td></tr><tr><td><span style="background-color:rgb(194,224,244);">incremental z count</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>Incremental encoder Z (reference marker) count. The value increments once per transition, which means that the counter will increment by 2 if it passes cleanly over the reference mark in either direction.

</td></tr><tr><td><span style="background-color:rgb(191,237,210);">absolute count</span></td><td><span style="color:rgb(53,152,219);">INT</span></td><td>Absolute encoder count

</td></tr><tr><td><span style="background-color:rgb(251,238,184);">absolute position</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Absolute position determined from the encoder. If the encoder is incremental then then the value is pseudo-absolute as explained <span style="color:rgb(224,62,45);">&lt;here&gt;</span>.

</td></tr><tr><td><span style="background-color:rgb(248,202,198);">absolute velocity</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Absolute velocity determined from the encoder

</td></tr><tr><td><span style="background-color:rgb(236,202,250);">relative position</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Relative position determined from the encoder.

</td></tr><tr><td><span style="background-color:rgb(194,224,244);">relative velocity</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Relative velocity determined from the encoder.

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-enc%3Adat%3Ccr%3E%3Clf%3E-0x88" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:55.1866%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">ENC:DAT&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x88c6,0x0000,888,7708795,128,0,5.00371093750000E+01,0.00000000000000E+00,5.00371093750000E+01,0.00000000000000E+00&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:44.7022%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### ENC:DPC – Displacement per count

Get or set the displacement per count, i.e. the distance represented by one encoder count.

<table id="bkmrk-command%3A-enc%3Adpc%2C%3Cdp"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**ENC:DPC,**<span style="background-color:rgb(248,202,198);">&lt;dpc&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**ENC:DPC**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;dpc&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">dpc</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Displacement per count.

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-enc%3Adpc%3Ccr%3E%3Clf%3E-0x00" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">ENC:DPC&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,50E-09&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// The displacement per count is 50e-9. If this were a linear encoder and the units were meters, then this would mean 50 nm.</span>

</td></tr></tbody></table>

##### ENC:FLIP – Flip

Gets or sets a value indicating whether the encoder readout should be flipped/inverted, such that positive is negative and vice versa. This is done internally by multiplying the encoder count by 1 when flip is disabled, and -1 when flip is enabled, and is applied as the last processing step (i.e. after offsets and other adjustments have been applied).

<table id="bkmrk-command%3A-enc%3Aflip%2C%3Cs"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**ENC:FLIP,**<span style="background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**ENC:FLIP**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>\[0: Disable\]

1: Enable

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-enc%3Adpc%3Ccr%3E%3Clf%3E-0x00-1" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">ENC:FLIP&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Flip is disabled</span>

</td></tr></tbody></table>

##### ENC:FLIP:AUTOSET - Autoset flip

Starts a process that automatically determines the correct flip setting. This takes a few seconds and is done by moving the motor a small amount, checking the resulting encoder displacement and then changing the flip setting if required. The motor is moved back to its initial position when the process completed.

<table id="bkmrk-command%3A-enc%3Aflip%2C%3Aa"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**ENC:FLIP:AUTOSET**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"> </td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-enc%3Aflip%3Aautoset%3Ccr%3E" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">ENC:FLIP:AUTOSET&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Autoset flip ran successfully</span>

</td></tr></tbody></table>

##### ENC:FW - Firmware version

Gets the encoder module firmware version.

<table id="bkmrk-query%3A-enc%3Afw%3Ccr%3E%3Clf"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**ENC:FW**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;version&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">version</span></td><td><span style="color:rgb(53,152,219);">STRING</span></td><td>Encoder firmware version

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-enc%3Afw%3Ccr%3E%3Clf%3E-0x088" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.94%;"><tbody><tr><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">ENC:FW&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0886,0x0000,24285.79&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.045%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Firmware version is 24285.79</span>

</td></tr></tbody></table>


##### ENC:INC:LIMITS:EN - Incremental PQ limits enable

Gets or sets a value indicating whether incremental PQ limits should be enabled. PQ limits can be configured as desired with the other related settings, and this option used to enable or disable them.

<table id="bkmrk-command%3A-enc%3Ainc%3Alim"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**ENC:INC:LIMITS:EN,**<span style="background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**ENC:INC:LIMITS:EN**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>\[0: Disable\]

1: Enable

</td></tr></tbody></table>

##### ENC:INC:LIMITS:P:EN - Incremental P limit enable

Gets or sets a value indicating whether incremental P limit should be enabled.

<table id="bkmrk-command%3A-enc%3Ainc%3Alim-1"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**ENC:INC:LIMITS:P:EN,**<span style="background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**ENC:INC:LIMITS:P:EN**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>\[0: Disable\]

1: Enable

</td></tr></tbody></table>

##### ENC:INC:LIMITS:Q:EN - Incremental Q limit enable

Gets or sets a value indicating whether incremental Q limit should be enabled.

<table id="bkmrk-command%3A-enc%3Ainc%3Alim-2"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**ENC:INC:LIMITS:Q:EN,**<span style="background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**ENC:INC:LIMITS:Q:EN**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>\[0: Disable\]

1: Enable

</td></tr></tbody></table>

##### ENC:INC:LIMITS:STOPMODE - Incremental PQ limits stop mode

Gets or sets the incremental PQ limits stop mode.

<table id="bkmrk-command%3A-enc%3Ainc%3Alim-3"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**ENC:INC:LIMITS:STOPMODE,**<span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**ENC:INC:LIMITS:STOPMODE**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">mode</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: Hard stop; the motor will stop immediately on a limit being triggered\]

1: Soft stop; the motor decelerates according to the profile

</td></tr></tbody></table>

**Remarks**

When using hard stop, keep in mind that steps may be lost depending on the slewing speed and load on the motor. Treat position counters with caution until the true position has been established. Conversely, when using soft stop, ensure that the motor can decelerate to a stop before the physical end of travel is reached and steps are lost.

##### ENC:INC:LIMITS:SWAP - Incremental PQ limits swap

Gets or sets a value indicating whether the P and Q limits should be swapped. The standard configuration is for the P limit to be positioned at the end of the scale reached by the encoder count incrementing, and the Q limit the end of the scale reached by the encoder count decrementing. If this does not match your configuration, enable swap.

<table id="bkmrk-command%3A-enc%3Ainc%3Alim-4"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**ENC:INC:LIMITS:SWAP,**<span style="background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**ENC:INC:LIMITS:SWAP**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>\[0: Disable\]

1: Enable

</td></tr></tbody></table>

##### ENC:INC:RSTZ - Incremental reset Z

Reset the incremental counter Z count.

<table id="bkmrk-command%3A-enc%3Ainc%3Arst"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**ENC:INC:RSTZ**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

##### ENC:OFS - Offset

Gets or sets the encoder position offset. This value is summed with the raw encoder position to arrive at the final readout. Use this to set the encoder zero as desired.

<table id="bkmrk-command%3A-enc%3Aofs%2C%3Cof"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**ENC:OFS,**<span style="background-color:rgb(248,202,198);">&lt;offset&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**ENC:OFS**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;offset&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">offset</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Offset value.

</td></tr></tbody></table>

##### ENC:SEL - Selection

Gets or sets the encoder selection.

<table id="bkmrk-command%3A-enc%3Asel%2C%3Cse"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**ENC:SEL,**<span style="background-color:rgb(248,202,198);">&lt;selection&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**ENC:SEL**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;selection&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">selection</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: None\]

1: Incremental

2: Absolute

</td></tr></tbody></table>

##### ENC:USEINCE - Use incremental E signal

Gets or sets a value indicating whether the incremental encoder E (error) signal should be used. Not all encoders have this signal so disable this option when that is the case.

<table id="bkmrk-command%3A-enc%3Auseince"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**ENC:USEINCE,**<span style="background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**ENC:USEINCE**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>0: Disabled

\[1: Enabled\]

</td></tr></tbody></table>

#### Hardware limits

##### LIMIT:EN – Limits global enable

Gets or sets global limit enable state. If this setting is false, limits are disabled regardless of the state of any other limits configuration item. This does not affect other limits configuration settings, allowing limits to be configured as desired, then globally enabled or disabled if required.

<table id="bkmrk-command%3A-limit%3Aen%2C-%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**LIMIT:EN<span style="color:#000000;">, </span>**<span style="background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**LIMIT:EN**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>\[0: Disabled\]

1: Enabled

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-l%2C0%3Ccr%3E%3Clf%3E-rx%3A-" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:105.804%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">LIMIT:EN,0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">LIMIT:EN&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Disable limits globally</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### LIMIT:EN-, LIMIT:EN+ Negative limit enable, positive limit enable

Gets or sets the negative limit (corresponding to decrementing step counter), or positive limit (corresponding to incrementing step counter) enable.

<table id="bkmrk-command%3A-limit%3Aenx%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**LIMIT:ENx**<span style="color:#000000;">**,**</span><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**LIMIT:ENx**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">Where 'x' is '-' for negative or '+' for positive limit.</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>\[0: Disabled\]

1: Enabled

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-l%2B%2C1%3Ccr%3E%3Clf%3E-rx%3A" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:103.458%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">LIMIT:EN+,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">LIMIT:EN-&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set positive limit enable</span>

<span style="color:rgb(45,194,107);">// Query negative limit enable state</span>

</td></tr></tbody></table>

##### LIMIT:POL – Global limit polarity

Set the polarity for both limits at once.

<table id="bkmrk-command%3A-limit%3Apol%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**LIMIT:POL,**<span style="background-color:rgb(248,202,198);">&lt;polarity&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;polarity&gt;</span></td></tr><tr><td colspan="3">Where 'x' is '-' for negative or '+' for positive limit.</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">polarity</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: Active high\]

1: Active low

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-lp%2C1%3Ccr%3E%3Clf%3E-rx%3A" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:102.1%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">Tx: LIMIT:POL,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set polarity of both limits to active low</span>

</td></tr></tbody></table>

##### LIMIT:POL-, LIMIT:POL+ Negative limit polarity, positive limit polarity

Gets or sets the negative or positive limit polarity.

<table id="bkmrk-command%3A-limit%3Apolx%2C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**LIMIT:POLx<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;polarity&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**LIMIT:POLx**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">Where 'x' is '-' for negative or '+' for positive limit.</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">polarity</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: Active high\]

1: Active low

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-lp-%2C1%3Ccr%3E%3Clf%3E-rx" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:101.853%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">LIMIT:POL-,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">LIMIT:POL+&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set negative limit polarity to active low</span>

<span style="color:rgb(45,194,107);">// Query positive limit polarity</span>

</td></tr></tbody></table>

##### LIMIT:STOPMODE – Limit stop mode

Gets or sets the limits stop mode, which determines behaviour on limit being triggered.

<table id="bkmrk-command%3A-limit%3Astopm"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**LIMIT:STOPMODE<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;mode&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**LIMIT:STOPMODE**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">mode</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: Hard stop; the motor will stop immediately on a limit being triggered\]

1: Soft stop; the motor decelerates according to the profile

</td></tr></tbody></table>

**Remarks**

When using hard stop, keep in mind that steps may be lost depending on the slewing speed and load on the motor. Treat position counters with caution until the true position has been established. Conversely, when using soft stop, ensure that the motor can decelerate to a stop before the physical end of travel is reached and steps are lost.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-lsm%2C1%3Ccr%3E%3Clf%3E-rx" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:105.927%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">LIMIT:STOPMODE,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">LIMIT:STOPMODE&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set soft stop mode</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

#### <span style="line-height:107%;">Motion control</span>

##### MCON:ESTOP – Emergency stop

Stop motor immediately disregarding deceleration profile and disable the motor. This should not be relied on as a safety interlock.

<table id="bkmrk-command%3A-motor%3Aestop"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:ESTOP**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

**Remarks**

The motor may stop on a fractional step position, but this is irrelevant as motor power is removed and the motor will snap to a full step position. Steps may be lost.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-estop%3Ccr%3E%3Clf%3E-rx" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:102.471%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MCON:ESTOP&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Stop the motor immediately</span>

</td></tr></tbody></table>

##### MCON:MPRESET - Mech preset

Apply a preset mechanism configuration. Drive properties including displacement per step, encoder and limits configuration will be set to suit the chosen mechanism. All AML standard mechanisms are available to chose from. Notice that the response is always 0, for both command and query. New presets will be added via firmware update as new mechanisms are released. Presets are discussed <span style="color:rgb(224,62,45);">&lt;here&gt;</span>.

<table id="bkmrk-command%3A-mcon%3Amprese"><colgroup><col></col><col></col><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:MPRESET<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;preset&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td><td></td><td></td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MCON:MPRESET**&lt;CR&gt;&lt;LF&gt;

</td><td></td><td></td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;0&gt;</span></td><td><span style="background-color:rgb(248,202,198);">  
</span></td><td><span style="background-color:rgb(248,202,198);">  
</span></td></tr><tr><td colspan="3">  
</td><td>  
</td><td>  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td colspan="3">**Description  
</td></tr><tr><td><span style="background-color:rgb(248,202,198);">preset</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>0: None  
1: VSM17-X-050  
2: VSM17-X-100  
3: VSM17-X-150  
4: VSM17-X-200  
5: VSM17-X-050-HR  
6: VSM17-X-100-HR  
7: VSM17-X-150-HR  
8: VSM17-X-200-HR  
9: VSM17-X-050-LS  
10: VSM17-X-100-LS  
11: VSM17-X-150-LS  
12: VSM17-X-200-LS  
13: VSM17-X-050-HR-LS  
14: VSM17-X-100-HR-LS  
15: VSM17-X-150-HR-LS  
16: VSM17-X-200-HR-LS  
17: VSM17-X-050-EA  
18: VSM17-X-100-EA  
19: VSM17-X-150-EA  
20: VSM17-X-200-EA  
21: VSM17-X-050-HR-EA  
22: VSM17-X-100-HR-EA  
23: VSM17-X-150-HR-EA  
24: VSM17-X-200-HR-EA  
25: VSM17-X-050-ER  
26: VSM17-X-100-ER  
27: VSM17-X-150-ER  
28: VSM17-X-200-ER  
29: VSM17-X-050-HR-ER  
30: VSM17-X-100-HR-ER  
31: VSM17-X-150-HR-ER  
32: VSM17-X-200-HR-ER  
33: VSM23-X-100  
34: VSM23-X-150  
35: VSM23-X-200  
36: VSM23-X-250  
37: VSM23-X-300  
38: VSM23-X-350  
39: VSM23-X-400  
40: VSM23-X-450  
41: VSM23-X-100-HR  
42: VSM23-X-150-HR  
43: VSM23-X-200-HR  
44: VSM23-X-250-HR  
45: VSM23-X-300-HR  
46: VSM23-X-350-HR  
47: VSM23-X-400-HR  
48: VSM23-X-450-HR  
49: VSM23-X-100-LS  
50: VSM23-X-150-LS  
51: VSM23-X-200-LS  
52: VSM23-X-250-LS  
53: VSM23-X-300-LS  
54: VSM23-X-350-LS  
55: VSM23-X-400-LS  
56: VSM23-X-450-LS  
57: VSM23-X-100-HR-LS  
58: VSM23-X-150-HR-LS  
59: VSM23-X-200-HR-LS  
60: VSM23-X-250-HR-LS  
61: VSM23-X-300-HR-LS  
62: VSM23-X-350-HR-LS  
63: VSM23-X-400-HR-LS  
64: VSM23-X-450-HR-LS  
65: VSM23-X-100-EA  
66: VSM23-X-150-EA  
67: VSM23-X-200-EA  
68: VSM23-X-250-EA  
69: VSM23-X-300-EA</td><td>70: VSM23-X-350-EA  
71: VSM23-X-400-EA  
72: VSM23-X-450-EA  
73: VSM23-X-100-HR-EA  
74: VSM23-X-150-HR-EA  
75: VSM23-X-200-HR-EA  
76: VSM23-X-250-HR-EA  
77: VSM23-X-300-HR-EA  
78: VSM23-X-350-HR-EA  
79: VSM23-X-400-HR-EA  
80: VSM23-X-450-HR-EA  
81: VSM23-X-100-ER  
82: VSM23-X-150-ER  
83: VSM23-X-200-ER  
84: VSM23-X-250-ER  
85: VSM23-X-300-ER  
86: VSM23-X-350-ER  
87: VSM23-X-400-ER  
88: VSM23-X-450-ER  
89: VSM23-X-100-HR-ER  
90: VSM23-X-150-HR-ER  
91: VSM23-X-200-HR-ER  
92: VSM23-X-250-HR-ER  
93: VSM23-X-300-HR-ER  
94: VSM23-X-350-HR-ER  
95: VSM23-X-400-HR-ER  
96: VSM23-X-450-HR-ER  
97: VSM30-X-500  
98: VSM30-X-600  
99: VSM30-X-700  
100: VSM30-X-800  
101: VSM30-X-900  
102: VSM30-X-1000  
103: VSM30-X-500-HR  
104: VSM30-X-600-HR  
105: VSM30-X-700-HR  
106: VSM30-X-800-HR  
107: VSM30-X-900-HR  
108: VSM30-X-1000-HR  
109: VSM30-X-500-EA  
110: VSM30-X-600-EA  
111: VSM30-X-700-EA  
112: VSM30-X-800-EA  
113: VSM30-X-900-EA  
114: VSM30-X-1000-EA  
115: VSM30-X-500-HR-EA  
116: VSM30-X-600-HR-EA  
117: VSM30-X-700-HR-EA  
118: VSM30-X-800-HR-EA  
119: VSM30-X-900-HR-EA  
120: VSM30-X-1000-HR-EA  
121: VSM30-X-500-ER  
122: VSM30-X-600-ER  
123: VSM30-X-700-ER  
124: VSM30-X-800-ER  
125: VSM30-X-900-ER  
126: VSM30-X-1000-ER  
127: VSM30-X-500-HR-ER  
128: VSM30-X-600-HR-ER  
129: VSM30-X-700-HR-ER  
130: VSM30-X-800-HR-ER  
131: VSM30-X-900-HR-ER  
132: VSM30-X-1000-HR-ER  
133: VSM17-Z-050  
134: VSM17-Z-070  
135: VSM17-Z-050-LS  
136: VSM17-Z-070-LS  
137: VSM17-Z-050-EA  
138: VSM17-Z-070-EA  
139: VSM17-Z-050-ER</td><td>140: VSM17-Z-070-ER  
141: VSM17-R-72K  
142: VSM17-R-72K-LS  
143: VSM17-R-72K-EA  
144: VSM17-R-72K-ER  
145: VSM17-R-3K6  
146: VSM17-R-3K6-LS  
147: VSM17-R-3K6-EA  
148: VSM17-R-3K6-ER  
149: VSM24-R  
150: VSM24-R-LS  
151: VSM24-R-EA  
152: VSM24-R-ER  
153: VSM17-G-070  
154: VSM17-G-070-LS  
155: VSM17-G-114  
156: VSM17-G-114-LS  
157: VSM17-G-114-EA  
158: VSM17-G-114-ER</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-mcon%3Ampreset%2C3%3Ccr%3E%3Cl" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:102.471%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MCON:MPRESET,3&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set preset for "VSM17-X-150"</span>

<span style="color:rgb(45,194,107);">// Note response is 0, not 3</span>

</td></tr></tbody></table>

##### MCON:NUDGE:RUN:NEG – Nudge negative

Trigger a relative move of a distance specified by <span style="color:rgb(224,62,45);">&lt;MCON:NUDGE:VALUE&gt; <span style="color:rgb(0,0,0);">in the negative direction. A nudge is a preset relative move, and is the same as using the move relative command, except that in this case the distance is preset beforehand.</span></span>

<table id="bkmrk-command%3A-mcon%3Anudge%3A"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:NUDGE:RUN:NEG**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

##### MCON:NUDGE:RUN:POS – Nudge positive

Trigger a relative move of a distance specified by <span style="color:rgb(224,62,45);">&lt;MCON:NUDGE:VALUE&gt; <span style="color:rgb(0,0,0);">in the positive direction. A nudge is a preset relative move, and is the same as using the move relative command, except that in this case the distance is preset beforehand. </span></span>

<table id="bkmrk-command%3A-mcon%3Anudge%3A-1"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:NUDGE:RUN:NEG**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

##### MCON:NUDGE:VALUE - Nudge distance

<span style="color:rgb(224,62,45);"><span style="color:rgb(0,0,0);">A nudge is a preset relative move, and is the same as using the move relative command, except that in this case the distance is preset beforehand. Use this command to specify the preset distance to move, then <span style="color:rgb(224,62,45);">MCON:NUDGE:RUN:NEG</span> or <span style="color:rgb(224,62,45);">MCON:NUDGE:RUN:POS</span> to trigger the move.</span></span>

<table id="bkmrk-command%3A-mcon%3Anudge%3A-2"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:NUDGE:VALUE<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;displacement&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**LIMIT:STOPMODE**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;displacement&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">displacement</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Distance to move when nudge is triggered. The value is signed, and the actual relative move executed is displacement \* 1 for positive nudge and displacement \* -1 for negative nudge.

</td></tr></tbody></table>

##### MCON:RUNA – Run, absolute position

Move the motor to a specified absolute position.

<table id="bkmrk-command%3A-mcon%3Aruna%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:RUNA,**<span style="background-color:rgb(248,202,198);">&lt;position&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;position&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">position</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Absolute position to move to.

See <span style="color:rgb(224,62,45);">&lt;section&gt;</span> for notes on limiting values.

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-runa%2C1000%3Ccr%3E%3Clf" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100.866%;"><tbody><tr><td style="width:50.5362%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">SYS:UNIT,0</span>

<span style="color:rgb(224,62,45);"><span style="color:rgb(53,152,219);">0x0000,0x0000,0&lt;CR&gt;&lt;LF&gt;</span></span>

<span style="color:rgb(224,62,45);">MCON:RUNA,10&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.00000E+1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">SYS:UNIT,102</span>

<span style="color:rgb(224,62,45);"><span style="color:rgb(53,152,219);">0x0000,0x0000,102&lt;CR&gt;&lt;LF&gt;</span></span>

<span style="color:rgb(224,62,45);">MCON:RUNA,23.5&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:49.5539%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set units to steps</span>

<span style="color:rgb(45,194,107);">// Move to position 10 steps</span>

<span style="color:rgb(45,194,107);">// Set units to mm</span>

<span style="color:rgb(45,194,107);">// Move to position 23.5 mm (assumes that we've set </span>

<span style="color:rgb(45,194,107);">// displacement per step appropriately first)</span>

</td></tr></tbody></table>

##### MCON:RUNH - Run, home

Initiate a homing sequence to the specified limit.

<table id="bkmrk-command%3A-mcon%3Arunh%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:RUNH,**<span style="background-color:rgb(248,202,198);">&lt;direction&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"> </td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">direction</span></td><td><span style="color:rgb(53,152,219);">STRING</span></td><td>'+' : Home towards positive limit, step count increases

'-': Home towards negative, step count decreases

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-motor%3Arunr%2C2000%3C" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100.619%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MCON:RUNH,+&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MCON:RUNH,-&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Home motor in positive direction</span>

<span style="color:rgb(45,194,107);">// Home motor in negative dire</span>

</td></tr></tbody></table>

##### MCON:RUNR - Run, relative position

Move the motor a specified number of steps, relative to the current position.

<table id="bkmrk-command%3A-mcon%3Arunr%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:RUNR,**<span style="background-color:rgb(248,202,198);">&lt;displacement&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;displacement&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">displacement</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Relative distance to move by.

See <span style="color:rgb(224,62,45);">&lt;section&gt;</span> for notes on limiting values.

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-runr%2C2000%3Ccr%3E%3Clf" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100.619%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MCON:RUNR,2000&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MCON:RUNR,-2000&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Move motor in positive direction by 2000 steps</span>

<span style="color:rgb(45,194,107);">// Move motor in negative direction by 2000 steps</span>

</td></tr></tbody></table>

##### MOTOR:RUNV – Run, velocity

Start continuous rotation in specified direction.

<table id="bkmrk-command%3A-mcon%3Arunv%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:RUNV,**<span style="background-color:rgb(248,202,198);">&lt;direction&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"> </td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">direction</span></td><td><span style="color:rgb(53,152,219);">STRING</span></td><td>'+' : Spin in positive direction, step count increases

'-': Spin in negative direction, step count decreases

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-runv%2C%2B%3Ccr%3E%3Clf%3E-r" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100%;"><tbody><tr><td style="width:49.9423%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MCON:RUNV,+&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MCON:RUNV,-&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:49.9423%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Spin motor in positive direction</span>

<span style="color:rgb(45,194,107);">// Spin motor in negative direction</span>

</td></tr></tbody></table>

##### MCON:SF:EPC - Closed loop (EPC) behaviour

<span style="color:rgb(224,62,45);"><span style="color:rgb(0,0,0);">Get or set the EPC behaviour.</span></span>

<table id="bkmrk-command%3A-mcon%3Asf%3Aepc"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:SF:EPC<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;behaviour&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MCON:SF:EPC**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;behaviour&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">behaviour</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: None\]

1: Warn

2: Error

</td></tr></tbody></table>

##### MCON:SF:EPC:EG - Closed loop (EPC) error guard

<span style="color:rgb(224,62,45);"><span style="color:rgb(0,0,0);">Get or set the error guard feature. When enabled, if EPC detects that corrections appear to be resulting in positive feedback (i.e. the error is growing with each successive correction rather than reducing) then the current round of EPC is stopped.</span></span>

<table id="bkmrk-command%3A-mcon%3Asf%3Aepc-1"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:SF:EPC:EG<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MCON:SF:EPC:EG**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>0: Disabled

\[1: Enabled\]

</td></tr></tbody></table>

##### MCON:SF:EPC:N - Closed loop (EPC) number of iterations

<span style="color:rgb(224,62,45);"><span style="color:rgb(0,0,0);">Get or set the EPC number of iterations. Zero has the special meaning of infinity.</span></span>

<table id="bkmrk-command%3A-mcon%3Asf%3Aepc-2"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:SF:EPC:N<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;iterations&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MCON:SF:EPC:N**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;iterations&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">iterations</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>0: Infinite/unlimited

Maximum: 2^32

</td></tr></tbody></table>

##### MCON:SF:EPC:T - Closed loop (EPC) tolerance

<span style="color:rgb(224,62,45);"><span style="color:rgb(0,0,0);">Get or set the EPC tolerance.</span></span>

<table id="bkmrk-command%3A-mcon%3Asf%3Aepc-3"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:SF:EPC:T<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;tolerance&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MCON:SF:EPC:T**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;tolerance&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">tolerance</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Position tolerance

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-sys%3Aunit%2C100-0x0000%2C" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100.866%;"><tbody><tr><td style="width:50.5362%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">SYS:UNIT,100</span>

<span style="color:rgb(224,62,45);"><span style="color:rgb(53,152,219);">0x0000,0x0000,102&lt;CR&gt;&lt;LF&gt;</span></span>

<span style="color:rgb(224,62,45);">MCON:SF:EPC:T,0.5e-6&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:49.5539%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set units to meter</span>

<span style="color:rgb(45,194,107);">// Set tolerance to 0.5 um </span>

</td></tr></tbody></table>

##### MCON:SF:GUARD - Guard behaviour

<span style="color:rgb(224,62,45);"><span style="color:rgb(0,0,0);">Get or set the guard behaviour.</span></span>

<table id="bkmrk-command%3A-mcon%3Asf%3Agua"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:SF:GUARD<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;behaviour&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MCON:SF:GUARD**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;behaviour&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">behaviour</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: None\]

1: Warn

2: Error

</td></tr></tbody></table>

##### MCON:SF:GUARD:n - Guard value n

<span style="color:rgb(224,62,45);"><span style="color:rgb(0,0,0);">Get or set the guard value, where n is 1 or 2.</span></span>

<table id="bkmrk-command%3A-mcon%3Asf%3Agua-1"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:SF:GUARD:n<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;position&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MCON:SF:GUARD:n**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;position&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">position</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>See <span style="color:rgb(224,62,45);">&lt;section&gt;</span> for notes on limiting values.

</td></tr></tbody></table>

##### MCON:SF:ROML- Range of motion limiter behaviour

<span style="color:rgb(224,62,45);"><span style="color:rgb(0,0,0);">Get or set the range of motion limiter behaviour.</span></span>

<table id="bkmrk-command%3A-mcon%3Asf%3Arom"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:SF:ROML<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;behaviour&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MCON:SF:ROML**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;behaviour&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">behaviour</span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: None\]

1: Warn

2: Error

</td></tr></tbody></table>

##### MCON:SF:ROML:n - Range of motion limiter value n

<span style="color:rgb(224,62,45);"><span style="color:rgb(0,0,0);">Get or set the range of motion limiter value, where n is 1 or 2.</span></span>

<table id="bkmrk-command%3A-mcon%3Asf%3Arom-1"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:SF:ROML:n<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;position&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MCON:SF:ROML:n**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;position&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">position</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>See <span style="color:rgb(224,62,45);">&lt;section&gt;</span> for notes on limiting values.

</td></tr></tbody></table>

##### MCON:SF:ROML:J - Range of motion limiter enable for joystick and step/direction

<span style="color:rgb(224,62,45);"><span style="color:rgb(0,0,0);">Get or set a value indicating whether the function should be applied when using the joystick or step direction mode.</span></span>

<table id="bkmrk-command%3A-mcon%3Asf%3Arom-2"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:SF:ROML:J<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MCON:SF:ROML:J**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">state</span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>0: Disabled

\[1: Enabled\]

</td></tr></tbody></table>

##### MCON:SSTOP – Stop motor in &lt;=1 s

Decelerates the motor to a stop within 1 second, disregarding the current profile to do so.

<table id="bkmrk-command%3A-motor%3Asstop"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:SSTOP**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

**Remarks**

This command does not consider the deceleration set in the profile. Instead, it calculates the deceleration required to stop in 1 second, according to the actual velocity. The motor will stop in a full step position. Steps may be lost if the load requires greater than this duration to stop.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-sstop%3Ccr%3E%3Clf%3E-rx" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:101.483%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MCON:SSTOP&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Stop the motor in 1 seconds</span>

</td></tr></tbody></table>

##### MCON:STOP – Stop motor

Stop the motor, decelerating according to the current profile

<table id="bkmrk-command%3A-mcon%3Asf%3Asto"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:SF:STOP**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

**Remarks**

During the deceleration phase that stops the motor, any modifications to the acceleration or deceleration interrupt the stopping phase. Re-send the command to restart the motor stopping phase.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-stop%3Ccr%3E%3Clf%3E-rx%3A" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:102.224%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MCON:STOP&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Stop the motor</span>

</td></tr></tbody></table>

##### MCON:U - Displacement per step

<span style="color:rgb(224,62,45);"><span style="color:rgb(0,0,0);">Get or set a value representing the displacement per step of the mechanism. That is, the distance the mechanism moves per step. This property must be configured correctly to use units other than steps.</span></span>

<table id="bkmrk-command%3A-mcon%3Au%2C%3Cdis"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:U<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;displacement&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MCON:U**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;displacement&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);">displacement</span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Displacement per step.

</td></tr></tbody></table>

##### MCON:ZEROA – Zero absolute position counter

Zero the absolute position counter.

<table id="bkmrk-command%3A-mcon%3Azeroa%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:ZEROA**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

##### MCON:ZEROAR – Zero absolute and relative position counters

Zero the absolute and relative position counters.

<table id="bkmrk-command%3A-mcon%3Azeroar"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:ZEROAR**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

##### MCON:ZEROR – Zero relative position counter

Zero the relative position counter.

<table id="bkmrk-command%3A-mcon%3Azeror%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MCON:ZEROR**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

#### Motor

##### MOTOR:xMAX - Acceleration and deceleration  


Gets or sets acceleration or deceleration.

<table id="bkmrk-command%3A-motor%3A_max%2C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:xMAX<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;user value&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:xMAX**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;user value&gt;</span>,<span style="background-color:rgb(236,202,250);">&lt;real value&gt;</span></td></tr><tr><td colspan="3">Where 'x' is 'A' for acceleration and 'D' for deceleration.</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">user value</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>See <span style="color:rgb(224,62,45);">&lt;section&gt;</span> for notes on limiting values.

For the response, this is the value as entered.

</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(236,202,250);">real value</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>The value, rounded to the closest real value the SMD4 can achieve.

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-amax%2C150%3Ccr%3E%3Clf%3E" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:102.347%;"><tbody><tr><td style="width:52.9053%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:AMAX,150&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.5000E+02,1.4988E+02&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:AMAX&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.5000E+02,1.4988E+02&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:46.9793%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Assuming unit is steps, set acceleration to 150Hz/s</span>

<span style="color:rgb(45,194,107);">// Note that the target value of 150 has been adjusted to the // closest real value, which deviates from the requested value // by 0.12 Hz/s</span>

</td></tr></tbody></table>

##### MOTOR:EDGE – Edge to step on

Gets or sets which edge(s) a step occurs on when in step direction mode.

<table id="bkmrk-command%3A-motor%3Aedge%2C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:EDGE<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;edge&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:EDGE &lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;edge&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">edge</span></span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: Rising edge only\]

1: Both rising and falling edges

</td></tr></tbody></table>

**Remarks**

Use option for both edges to halve the frequency on the step input required to obtain a given step rate.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-edge%2C1%3Ccr%3E%3Clf%3E-r" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100.617%;"><tbody><tr><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:EDGE,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:EDGE&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set step on both edges</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### MOTOR:F – Freewheel mode

Gets or sets the freewheel mode. For maximum passive braking use phases shorted. Use freewheel to electrically disconnect the motor and allow it to freewheel. Hold current must be set to zero for this option to work.

The chosen mode becomes active after a time period specified by ‘&lt;<span style="color:rgb(224,62,45);">MOTOR:PDDEL</span>&gt;’ and ‘<span style="color:rgb(224,62,45);">&lt;MOTOR:IHD&gt;</span>’

<table id="bkmrk-command%3A-motor%3Af%2C%3Cmo"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:F<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:F &lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">mode</span></span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>0: Normal  
1: Freewheel  
\[2: Phases shorted to GND\]

</td></tr></tbody></table>

**Remarks**

Use the freewheel mode to allow the motor shaft to spin freely when the motor current is zero. The phases shorted to GND option supplies no power to the motor, but by shorting the phases together a holding torque is produced, and the motor shaft offers considerable resistance to movement. This is enough in many applications to remove the need for any holding current, with the benefit that no heat is generated because the motor phases are not energised.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-f%2C1%3Ccr%3E%3Clf%3E-rx%3A-" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100.248%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:F,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:F&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set to freewheel mode</span>

<span style="color:rgb(45,194,107);">// motor shaft can be turned easily</span>

<span style="color:rgb(45,194,107);">// Query</span><span style="color:rgb(45,194,107);"> </span>

</td></tr></tbody></table>

##### MOTOR:Ix – Acceleration, run and hold currents  


Gets or sets the motor current in amps RMS applied during acceleration, run and hold phases of operation.

<table id="bkmrk-command%3A-motor%3Aix%2C%3Cc"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:Ix<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;current&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:Ix &lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;current&gt;</span></td></tr><tr><td colspan="3">Where 'x' is 'A' for acceleration, 'R' for run and 'H' for hold current.</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">current</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>\[Default: 1.044\]  
Minimum: 0  
Maximum: 1.044

</td></tr></tbody></table>

**Remarks**

Motor current is rounded to the closest multiple of 1.044 A / 31 (approx. 33 mA), so the queried value may differ slightly from that set for this reason.

Acceleration current must be set equal to or greater than run current. Acceleration current is not adjusted to match run current if acceleration current is smaller than run current.

Run current must be set equal to or smaller than acceleration current. Acceleration current is automatically adjusted to be equal to run current, if a change to run current makes it greater than acceleration current.

If your application allows it, set [MOTOR:PDDEL](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-pddel-%E2%80%93-power-down-d), [MOTOR:IHD ](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-ihd-%E2%80%93-current-reduct)and [MOTOR:IH ](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-ih-%E2%80%93-hold-current)to zero in order to reduce run current to zero as quickly as possible after stopping which minimises motor temperature rise.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-ia%2C1.044%3Ccr%3E%3Clf%3E" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:103.582%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:IA,1.044&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.0440E+00&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:IA&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.0440E+00&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set acceleration current to 1.044 A</span>

<span style="color:rgb(45,194,107);">// Query acceleration current</span>

</td></tr></tbody></table>

##### MOTOR:IHD – Delay per current reduction step

Gets or sets the delay in seconds per current reduction step that occurs when run current is reduced to hold current. Non-zero values result in a smooth reduction in current which reduces the chance of a jerk upon power down. The range is 0 to 328 ms, with a resolution of 4 bits or approx. 20 ms. Current setting has a resolution of 5 bits, or 32 steps, and consequently the current reduction process will only have as many steps as exist between the configured run and hold current. See also [MOTOR:PDDEL](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-pddel-%E2%80%93-power-down-d).

If your application allows it, set <span style="text-decoration:underline;color:rgb(53,152,219);">[MOTOR:PDDEL,](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-pddel-%E2%80%93-power-down-d)</span> [<span style="text-decoration:underline;"><span style="color:rgb(53,152,219);">MOTOR:IHD</span></span> ](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-ihd-%E2%80%93-current-reduct)and<span style="text-decoration:underline;color:rgb(53,152,219);"> [MOTOR:IH](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-ih-%E2%80%93-hold-current)</span> to zero in order to reduce run current to zero as quickly as possible after stopping which minimises motor temperature rise.

<table id="bkmrk-command%3A-motor%3Aihd%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:IHD<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;seconds&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:IHD &lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;seconds&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">seconds</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>\[Default: 0\]  
Minimum: 0  
Maximum: 328 ms

Notice that the duration is in seconds, so to set the value to 100 ms for example, you'd enter '100e-3' or '0.1'

</td></tr></tbody></table>

**Remarks**

See also section [Going to standby](https://bookstack.vps-da8d40f3.arunmicro.com/link/10#bkmrk-going-to-standbyperi)

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-ihd%2C327%3Ccr%3E%3Clf%3E-" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.446%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:IHD,328E-3&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,3.2800E-01&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:IHD&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,3.2800E-01&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set to 328 ms</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### MOTOR:INTERP – Step interpolation

Gets or sets a value indicating whether the step input should be interpolated to 256 microsteps. Applicable in step direction mode only.

<table id="bkmrk-command%3A-motor%3Ainter"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:INTERP<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:INTERP &lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">mode</span></span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: Normal; each step input will cause one step at the current resolution\]

1: Interpolate; each step input will be interpolated to 256 microsteps.

</td></tr></tbody></table>

**Remarks**

Enabling this feature affords the benefits of high-resolution microstepping, without the drawback of very high step clock rates. Internal logic tracks the rate at which steps are supplied and smooths them out into 256 microsteps; e.g. if resolution is set to full-step and see [edge to step on](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-edge-%E2%80%93-edge-to-step-) is set to rising, then each rising edge on the step input generates a series of 256 microsteps at the motor.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-interp%2C1%3Ccr%3E%3Clf%3E" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:102.84%;"><tbody><tr><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:INTERP,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:INTERP&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Enable interpolation</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### MOTOR:PACT – Actual position

Gets or sets the actual position. The usual way to position the motor is to initialise the actual position to some reference value, usually 0, then adjust the target position to move the motor. In this way, by setting [MOTOR:RUNA](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-runa-%E2%80%93-run%2C-absolute) to 0 the motor can be homed to the initial 0 position. If you wish to perform relative movements, while still retaining an absolute reference, see [MOTOR:PREL](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-prel-%E2%80%93-relative-posi) command.

It is best to use the <span style="color:rgb(224,62,45);">&lt;MCON:ZERO&gt;</span> commands to zero the absolute or relative positions, then use this command to read the position.

<table id="bkmrk-command%3A-motor%3Apact%2C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:PACT<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;position&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:PACT**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;position&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">position</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>See <span style="color:rgb(224,62,45);">&lt;section&gt;</span> for notes on limiting values.

</td></tr></tbody></table>

**Remarks**

Query is applicable any time, Set requires the motor in standby condition.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-pact%3Ccr%3E%3Clf%3E-rx%3A" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:101.728%;"><tbody><tr><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:PACT&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x0000,0x0000,1000.00&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:PACT,0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x0000,0x0000,0.00&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

<span style="color:rgb(45,194,107);">// Set actual position 0</span>

</td></tr></tbody></table>

##### MOTOR:PDDEL – Power down delay

Gets or sets the delay time in seconds between stand still occurring and the motor current being reduced from the acceleration current to the hold current. The range is 0 to 5.5 seconds, with approximately 8 bit / 20 ms resolution. See also [DelayPerCurrentReductionStep](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-ihd-%E2%80%93-current-reduct).

If your application allows it, set <span style="text-decoration:underline;"><span style="color:rgb(53,152,219);text-decoration:underline;">MOTOR:</span><span style="color:rgb(53,152,219);text-decoration:underline;">PDDEL</span></span>, [<span style="text-decoration:underline;"><span style="color:rgb(53,152,219);">MOTOR:IHD</span></span>](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-ihd-%E2%80%93-current-reducthttps://bookstack.vps-da8d40f3.arunmicro.com/link/51%23bkmrk-ihd-%E2%80%93-current-reduct) and [<span style="text-decoration:underline;color:rgb(53,152,219);">MOTOR:IH</span>](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-ih-%E2%80%93-hold-current) to zero in order to reduce run current to zero as quickly as possible after stopping which minimises motor temperature rise.

<table id="bkmrk-command%3A-motor%3Apddel"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:PDDEL<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;delay&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:PDDEL**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;delay&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">delay</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Delay in seconds. The response value is rounded to the closest value the SMD4 can set, so may not match the set value exactly.

\[Default: 0\]

Minimum: 0

Maximum: 5.5\]

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-pddel%2C100%3Ccr%3E%3Clf" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:102.347%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:PDDEL,100E-3&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.0000E-01&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:PDDEL&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.0000E-01&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set to 100 ms</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### MOTOR:PREL – Relative position

Gets or sets the relative position counter in steps.

Use this function to perform relative movement, while still retaining reference to absolute position via <span style="color:rgb(53,152,219);">[MOTOR:PACT](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-pact-%E2%80%93-actual-positi)</span>. Set the desired value then use the <span style="color:rgb(53,152,219);">[MOTOR:RUNR](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-runr---run%2C-relative)</span> command to initiate movement.

<table id="bkmrk-command%3A-motor%3Aprel%2C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:PREL<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;displacement&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:PREL**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;displacement&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">displacement</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>See <span style="color:rgb(224,62,45);">&lt;section&gt;</span> for notes on limiting values.

</td></tr></tbody></table>

**Remarks**

Set requires the motor be in standby condition.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-prel%3Ccr%3E%3Clf%3E-rx%3A" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100.864%;"><tbody><tr><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:PREL&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1000.00&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:PREL,0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0.00&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

<span style="color:rgb(45,194,107);">// Set relative position 0</span>

</td></tr></tbody></table>

##### MOTOR:RES - Resolution

Gets or sets the microstep resolution.

<table id="bkmrk-command%3A-motor%3Ares%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:RES<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;res&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:RES**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;res&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">res</span></span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>Microstep resolution as an integer.

\[Default: 256\]

Possible values: 8, 16, 32, 64, 128, 256\]

</td></tr></tbody></table>

**Remarks**

Motor must be in standby to set the resolution.

The resolution applies globally, including for the step/direction interface. Each step on the step/direction interface generates a 1/8, 1/16, 1/32 etc. step according to the resolution set here.

Above a configurable step frequency, the drive switches from the microstepping resolution specified here to full step mode in any case. See section <span style="color:rgb(224,62,45);">&lt;MOTOR:</span><span style="text-decoration:underline;color:rgb(53,152,219);">[<span style="color:rgb(224,62,45);text-decoration:underline;">THIGH&gt;</span>](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-thigh-%E2%80%93-microstep-tr)</span>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-res%2C256%3Ccr%3E%3Clf%3E-"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;height:90.3704px;"><span style="color:rgb(224,62,45);">MOTOR:RES,256&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,256&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:RES&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,256&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;height:90.3704px;"><span style="color:rgb(45,194,107);">// Set resolution to 256</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### MOTOR:SDMODE - Step/direction mode

Gets of sets the step/direction mode. In normal mode, edges on the step input generate steps according to the edge setting, see [edge](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-edge-%E2%80%93-edge-to-step-). In triggered mode, continuous motion is triggered by an edge on the step input; this is akin to how continuous mode works for the joystick, see [joystick continuous mode](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-jsmode-%E2%80%93-joystick-mo).

<table id="bkmrk-command%3A-motor%3Asdmod"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:SDMODE<span style="color:#000000;">,</span>**<span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:SDMODE**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">mode</span></span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: Normal\]

1: Triggered\]

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-motor%3Asdmode%2C0%3Cc"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;height:35.3667px;"><span style="color:rgb(224,62,45);">MOTOR:SDMODE,0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;height:35.3667px;"><span style="color:rgb(45,194,107);">// Set mode 0, normal</span>

</td></tr></tbody></table>

##### MOTOR:T – Motor temperature

Get the motor temperature in °C.

<table id="bkmrk-query%3A-motor%3At%3Ccr%3E%3Cl"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:T**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;temperature&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">temperature</span></span></td><td><span style="color:rgb(53,152,219);">INT</span></td><td>Motor temperature in degrees centigrade.

</td></tr></tbody></table>

**Remarks**

The reported temperature is intended for monitoring motor temperature only and should not be used for or relied upon for any other purpose.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-tmot%3Ccr%3E%3Clf%3E-rx%3A" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100%;"><tbody><tr><td style="width:50.0046%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:T&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,25&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0046%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Get motor temperature</span>

<span style="color:rgb(45,194,107);">// Response is 25 degrees Celsius</span>

</td></tr></tbody></table>

##### MOTOR:THIGH – Microstep transition

Gets or sets the full step / microstepping transition. When frequency falls below this threshold (approximately), the motor switches from full step to the selected microstep resolution. The product determines the upper threshold automatically and applies hysteresis to avoid possible jitter between the two stepping modes. The upper threshold cannot be adjusted.

<table id="bkmrk-command%3A-motor%3Athigh"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:THIGH<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;user value&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:THIGH**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;user value&gt;</span>,<span style="background-color:rgb(236,202,250);">&lt;real value&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">user value</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>See <span style="color:rgb(224,62,45);">&lt;section&gt;</span> for notes on limiting values.

For the response, this is the value as entered.

</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(236,202,250);">real value</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>The value, rounded to the closest real value the SMD4 can achieve.

</td></tr></tbody></table>

**Remarks**

AML Device control software calculates and displays the upper threshold value for reference, although as noted above it cannot be adjusted.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-thigh%2C500%3Ccr%3E%3Clf" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:104.198%;"><tbody><tr><td style="width:54.5102%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:THIGH,500&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,5.0000E+02,5.0400E+02&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:THIGH&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,5.0000E+02,5.0400E+02&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:45.3744%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set threshold to 500 Hz (assuming units are steps)</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### MOTOR:TSEL – Temperature sensor selection

Gets or sets the motor temperature sensor type.

<table id="bkmrk-command%3A-motor%3Atsel%2C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:TSEL<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;selection&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:TSEL**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;selection&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">selection</span></span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: Thermocouple\]

1: RTD

</td></tr></tbody></table>

**Remarks**

To protect the motor from possible damage, the motor is disabled if the temperature sensor is faulty or missing. The response is not immediate, and several seconds may elapse between emergence of a fault and the motor being disabled.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-tsel%2C0%3Ccr%3E%3Clf%3E-r" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100.495%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:TSEL,0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:TSEL&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Select thermocouple sensor</span>

<span style="color:rgb(45,194,107);">// Get selected sensor, returning 0 for thermocouple</span>

</td></tr></tbody></table>

##### MOTOR:TZW – Zero wait time

Gets or sets the waiting time after ramping down to a stop before the next movement or direction inversion can start. Can be used to avoid excess acceleration, e.g. from [MOTOR:VSTOP](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-vstop-%E2%80%93-stop-frequen) to [MOTOR:VSTART](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-vstart-%E2%80%93-start-frequ).

When using higher values for the start and stop frequency, a subsequent move in the opposite direction would result in a jerk equal to start frequency + stop frequency. The motor may not be able to follow this. Zero wait time can be used to introduce a short delay between the two and eliminate the jerk.

<table id="bkmrk-command%3A-motor%3Atzw%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:TZW<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;duration&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:THIGH**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;duration&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">duration</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Waiting time in seconds:

\[Default: 0\]

Minimum: 0

Maximum: 2.7 s

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-tzw%2C100%3Ccr%3E%3Clf%3E-" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:101.111%;"><tbody><tr><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:TZW,0.1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.0000E+02&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:TZW&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.0000E+02&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set TZW to 100 ms</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### MOTOR:VACT – Actual velocity

Gets the actual velocity of the motor from the step counters. This value is derived from the stepper motor control logic; there is no feedback from the motor itself. Hence, the motor could be stalled while which continues to indicate the expected.

<table id="bkmrk-query%3A-motor%3Avact%3Ccr"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:VACT**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;velocity&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">velocity</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Motor velocity.

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-vact%3Ccr%3E%3Clf%3E-rx%3A" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100.864%;"><tbody><tr><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">Tx: MOTOR:VACT&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x0000,0x0000,1.50E+01&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Motor velocity is 15 (assuming units are steps, 15 steps per </span>

<span style="color:rgb(45,194,107);">// second)</span>

</td></tr></tbody></table>

##### MOTOR:VMAX – Target motor speed

Gets or sets the target motor speed to use when positioning. This is the maximum speed the motor will be run at. This will only be reached if there is enough time or distance to do so; if moving for a short time, for example, the motor may only accelerate to some fraction of the target speed before it is time to decelerate to a stop.

<table id="bkmrk-command%3A-motor%3Avmax%2C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:VMAX<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;user value&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:VMAX**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;user value&gt;</span>,<span style="background-color:rgb(236,202,250);">&lt;real value&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">user value</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>See <span style="color:rgb(224,62,45);">&lt;section&gt;</span> for notes on limiting values.

For the response, this is the value as entered.

</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(236,202,250);">real value</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>The value, rounded to the closest real value the SMD4 can achieve.

</td></tr></tbody></table>

**Remarks**

Motor torque decreases with speed, and each motor will have a different maximum speed that it can achieve while reliably maintaining synchronicity (when synchronicity is lost, the motor fails to complete the steps that it is commanded to, leading to a difference between the true and actual positions), depending on the load it is driving.

Target motor speed must be set equal to or greater than start speed and stop speed. Target motor speed is not adjusted to match start speed and stop speed if target speed is smaller than start speed and stop speed.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-vmax%2C1000%3Ccr%3E%3Clf" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100.617%;"><tbody><tr><td style="width:53.5247%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:VMAX,12.3&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.0000E+03,1.0000E+03&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:VMAX&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.0000E+03,1.0000E+03&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:46.3599%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set speed to 12.3 (assuming units are degrees, this means</span>

<span style="color:rgb(45,194,107);">// 12.3°/second</span>

</td></tr></tbody></table>

##### MOTOR:VSTART – Start speed

Get or set the start speed. Must be set less than or equal to [MOTOR:VSTOP](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-vstop-%E2%80%93-stop-frequen). The acceleration ramp starts from this speed.

The start speed is the initial step rate, and helps to allow the motor to overcome inertia and start moving smoothly; if start speed were zero, the duration of the initial few steps might be long enough that the motor would overcome inertia on the first step, then effectively stop for a time, then have to overcome inertia once more for the second step, and so on, until the steps were frequent enough that the motor remains moving.

<table id="bkmrk-command%3A-motor%3Avstar"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:VSTART<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;user value&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:VSTART**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;user value&gt;</span>,<span style="background-color:rgb(236,202,250);">&lt;real value&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">user value</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Valid range in steps per second (if using other units, convert these values to your unit using the displacement per count value to determine the limits in your unit):

\[Default: 100\]

Minimum: 1

Maximum: 700

For the response, this is the value as entered.

</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(236,202,250);">real value</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>The value, rounded to the closest real value the SMD4 can achieve.

</td></tr></tbody></table>

**Remarks**

Start speed must be set equal to or less than stop speed. If a change to start speed makes it bigger than stop speed, stop speed is automatically adjusted to be equal to start speed.

Start speed must be set equal to or less than target speed. Start speed is not adjusted to match target speed if start speed is greater than target speed.

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-vstart%2C0%3Ccr%3E%3Clf%3E" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:100.617%;"><tbody><tr><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:VSTART,0&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0.0000+00,0.0000+00&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:VSTART&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,0.0000+00,0.0000+00&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Assuming units are steps...</span>

<span style="color:rgb(45,194,107);">// Set start frequency to 0 Hz</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### MOTOR:VSTOP – Stop speed

Get or set the stop speed. Must be greater than or equal to [MOTOR:VSTART](https://bookstack.vps-da8d40f3.arunmicro.com/link/51#bkmrk-vstart-%E2%80%93-start-frequ). The deceleration ramp ends at this speed. The final step before stop will occur at this speed.

The stop speed is the speed at which the deceleration ramp ends; i.e. the deceleration ramp does not go from the target speed linearly down to 0, but from the target speed linearly down to the stop speed.

<table id="bkmrk-command%3A-motor%3Avstop"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**MOTOR:VSTOP<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;user value&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**MOTOR:VSTOP**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;user value&gt;</span>,<span style="background-color:rgb(236,202,250);">&lt;real value&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">user value</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>Valid range in steps per second (if using other units, convert these values to your unit using the displacement per count value to determine the limits in your unit):

\[Default: 100\]

Minimum: 1

Maximum: 700

For the response, this is the value as entered.

</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(236,202,250);">real value</span></span></td><td><span style="color:rgb(53,152,219);">FLOAT</span></td><td>The value, rounded to the closest real value the SMD4 can achieve.

</td></tr></tbody></table>

**Remarks**

Start speed must be set equal to or less than stop speed. If a change to start speed makes it bigger than stop speed, stop speed is automatically adjusted to be equal to start speed.

Start speed must be set equal to or less than target speed. Start speed is not adjusted to match target speed if start speed is greater than target speed

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-vstop%2C10%3Ccr%3E%3Clf%3E" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:99.8765%;"><tbody><tr><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">MOTOR:VSTOP,10&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.0000+01,9.9996+00&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">MOTOR:VSTOP&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1.0000+01,9.9996+00&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0245%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Assuming units are steps...</span>

<span style="color:rgb(45,194,107);">// Set stop frequency to 10 Hz</span>

<span style="color:rgb(45,194,107);">// Notice the closest real value of 9.9996 Hz set</span>

<span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

#### <span style="line-height:107%;">System</span>

##### SYS:BSN – Get motherboard serial number

Gets the serial number of the motherboard.

<table id="bkmrk-query%3A-sys%3Absn%3Ccr%3E%3Cl"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**SYS:BSN**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;serial&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">serial</span></span></td><td><span style="color:rgb(53,152,219);">STRING</span></td><td>Board serial number

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-sys%3Absn%3Ccr%3E%3Clf%3E-" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:99.5076%;"><tbody><tr><td style="width:49.9415%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">SYS:BSN&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x088e,0x0000,1234ABCD&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:49.9415%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### SYS:CLR – Clear faults  


Clear all error flags.

<table id="bkmrk-command%3A-sys%3Aclr%3Ccr%3E"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**SYS:CLR**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

##### SYS:EXTEN – External enable used

Gets or sets a value indicating whether the external enable signal should be respected. If not using the external enable and it remains disconnected, set to false.

<table id="bkmrk-command%3A-sys%3Aexten%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**SYS:EXTEN<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**SYS:EXTEN**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">state</span></span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>0: Disabled

\[1: Enabled\]

</td></tr></tbody></table>

**Remarks**

The external enable input requires a voltage to be applied between SDE COM and EN on the I/O connector which may be inconvenient if you do not wish to use the enable input. In that case, disable the enable input by sending this command with the argument set to false.

##### SYS:FLAGS – Get status and error flags

Gets status and error flags, per <span style="color:rgb(224,62,45);">&lt;section&gt;</span>.

##### SYS:FLAGSV – Get status and error flags summary

Gets a human readable summary of status and error flags. Set flags are marked by an 'x'.

<table id="bkmrk-query%3A-sys%3Aflagsv%3Ccr"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**SYS:FLAGSV**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;verbose flags&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">verbose flags</span></span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>0: Disabled

\[1: Enabled\]

</td></tr></tbody></table>

<table class="MsoNormalTable" id="bkmrk-tx%3A-sys%3Aflagsv%3Ccr%3E%3Cl" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:99.5076%;"><tbody><tr><td style="width:49.9415%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">SYS:FLAGSV&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0886,0x0000,</span>

<span style="color:rgb(53,152,219);">-------Status flags------</span>  
<span style="color:rgb(53,152,219);">\[ \]JsCon</span>  
<span style="color:rgb(53,152,219);">\[X\]LimitNeg</span>  
<span style="color:rgb(53,152,219);">\[X\]LimitPos</span>  
<span style="color:rgb(53,152,219);">\[ \]Exten</span>  
<span style="color:rgb(53,152,219);">\[ \]Ident</span>  
<span style="color:rgb(53,152,219);">\[ \]EpcActive</span>  
<span style="color:rgb(53,152,219);">\[ \]RomlActive</span>  
<span style="color:rgb(53,152,219);">\[X\]Standby</span>  
<span style="color:rgb(53,152,219);">\[ \]Baking</span>  
<span style="color:rgb(53,152,219);">\[ \]TargetVelocityReached</span>  
<span style="color:rgb(53,152,219);">\[ \]GuardActive</span>  
<span style="color:rgb(53,152,219);">\[X\]BoostOperational</span>  
<span style="color:rgb(53,152,219);">\[ \]BoostDisableJumper</span>  
<span style="color:rgb(53,152,219);">\[ \]BoostUVLO</span>  
<span style="color:rgb(53,152,219);">\[ \]OmWaiting</span>  
<span style="color:rgb(53,152,219);">\[ \]MconsfWarning</span>

<span style="color:rgb(53,152,219);">-------Error flags-------</span>  
<span style="color:rgb(53,152,219);">\[ \]TempShort</span>  
<span style="color:rgb(53,152,219);">\[ \]TempOpen</span>  
<span style="color:rgb(53,152,219);">\[ \]TempOver</span>  
<span style="color:rgb(53,152,219);">\[ \]MotorShort</span>  
<span style="color:rgb(53,152,219);">\[ \]ExternalInhibit</span>  
<span style="color:rgb(53,152,219);">\[ \]EmergencyStop</span>  
<span style="color:rgb(53,152,219);">\[ \]ConfigError</span>  
<span style="color:rgb(53,152,219);">\[ \]\_reserved7</span>  
<span style="color:rgb(53,152,219);">\[ \]\_reserved8</span>  
<span style="color:rgb(53,152,219);">\[ \]SDRAM</span>  
<span style="color:rgb(53,152,219);">\[ \]\_reserved10</span>  
<span style="color:rgb(53,152,219);">\[ \]\_reserved11</span>  
<span style="color:rgb(53,152,219);">\[ \]\_reserved12</span>  
<span style="color:rgb(53,152,219);">\[ \]\_reserved13</span>  
<span style="color:rgb(53,152,219);">\[ \]\_reserved14</span>  
<span style="color:rgb(53,152,219);">\[ \]MconsfFault</span>

</td></tr></tbody></table>

##### SYS:FW – Get firmware version

Gets firmware version string.

<table id="bkmrk-query%3A-sys%3Afw%3Ccr%3E%3Clf"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**SYS:FW**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;version&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">version</span></span></td><td><span style="color:rgb(53,152,219);">STRING</span></td><td>Firmware version.

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-sys%3Afw%3Ccr%3E%3Clf%3E-r" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:99.5076%;"><tbody><tr><td style="width:49.9415%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">Tx: SYS:FW&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x088e,0x0000,24044.12&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:49.9415%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### <span style="line-height:107%;"> </span><span style="line-height:107%;">SYS:IDENT - Blink the status indicator to help identify the unit</span>

Gets or sets a value indicating whether the identify function is enabled. When set to true, the green status light on the front of the product flashes. This can be used to help identify one device amongst several.

<table id="bkmrk-command%3A-sys%3Aident%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**SYS:IDENT<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**SYS:IDENT**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">state</span></span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>\[0: Disabled\]

1: Enabled

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-ident%2C1%3Ccr%3E%3Clf%3E-"><tbody><tr><td style="width:49.9588%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;background:rgb(244,244,244);padding:0cm 5.4pt;height:77.9167px;"><span style="color:rgb(224,62,45);">Tx: SYS:IDENT,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">Tx: SYS:IDENT&lt;CR&gt;&lt;LF&gt;</span>

R<span style="color:rgb(53,152,219);">x: 0x0000,0x0000,1&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:49.9588%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(244,244,244);padding:0cm 5.4pt;height:77.9167px;"><span style="color:rgb(45,194,107);">// Set ident function on</span>

<span style="color:rgb(45,194,107);">// Query state of ident function</span>

</td></tr></tbody></table>

##### SYS:JS:EN – Enable joystick input  


Gets or sets a value indicating whether the joystick input should be enabled.

<table id="bkmrk-command%3A-sys%3Ajs%3Aen%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**SYS:JS:EN<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;state&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**SYS:JS:EN**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;state&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">state</span></span></td><td><span style="color:rgb(53,152,219);">BOOL</span></td><td>0: Disabled

\[1: Enabled\]

</td></tr></tbody></table>

##### SYS:JS:MODE – Joystick mode

Gets or sets the joystick mode. See <span style="color:rgb(224,62,45);">&lt;section&gt;</span>.

<table id="bkmrk-command%3A-sys%3Ajs%3Amode"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**SYS:JS:MODE<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;mode&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**SYS:JS:MODE**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">state</span></span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: Single step\]

1: Continuous

2: Nudge

</td></tr></tbody></table>

##### SYS:LOAD – Load last stored settings

Load the last saves configuration.

<table id="bkmrk-command%3A-sys%3Aload%3Ccr"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**SYS:LOAD**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

##### SYS:LOADFD – Load factory default settings

Load the factory default configuration. Use the store command if you want to persist the changes.

<table id="bkmrk-command%3A-sys%3Aloadfd%2C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**SYS:LOADFD<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;mode&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

##### <span style="line-height:107%;">SYS:MODE - Choose mode of operation </span>

Gets or sets the operating mode. See section [Operating Modes](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-operating-modes) for an explanation of each mode. The motor must be stopped before changing mode.

<table id="bkmrk-command%3A-sys%3Amode%2C%3Cm"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**SYS:MODE<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;mode&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**SYS:MODE**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;mode&gt;</span> (<span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(236,202,250);">name</span></span>)</td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">mode</span></span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>Mode number:

0: Step/direction

1: Normal

3: Bake

</td></tr><tr><td><span style="background-color:rgb(236,202,250);">name</span></td><td><span style="color:rgb(53,152,219);">STRING</span></td><td>A space follows the mode number, then the mode name in round brackets.

</td></tr></tbody></table>

<table class="MsoNormalTable" id="bkmrk-tx%3A-mode%2C2%3Ccr%3E%3Clf%3E-r" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:99.878%;"><tbody><tr><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">SYS:MODE,1&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1 (Remote)&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(224,62,45);">SYS:MODE&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x0000,0x0000,1 (Remote)&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:50.0537%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Set mode to remote</span>

<span style="color:rgb(45,194,107);">// Query state of mode</span>

</td></tr></tbody></table>

##### SYS:NAME – Device name tag

Gets or sets a name tag for the SMD4.

<table id="bkmrk-query%3A-sys%3Aser%3Ccr%3E%3Cl"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**SYS:NAME**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;name&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">name</span></span></td><td><span style="color:rgb(53,152,219);">STRING</span></td><td>Name for this SMD4.

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-sys%3Apsn%3Ccr%3E%3Clf%3E-" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:99.5076%;"><tbody><tr><td style="width:49.9415%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">Tx: SYS:NAME&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x088e,0x0000,MyDevice&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:49.9415%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### SYS:PROG – Enter programming mode

Reboot the SMD4 into programming mode. Used by AML device control software to initiate a firmware update. Power cycle to cancel this mode. There is no response to this command.

<table id="bkmrk-command%3A-sys%3Aprog%3Ccr"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td>**SYS:PROG**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-sys%3Aprog%3Ccr%3E%3Clf%3E" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:99.5076%;"><tbody><tr><td style="width:49.9415%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">SYS:PROG&lt;CR&gt;&lt;LF&gt;</span>

</td></tr></tbody></table>

##### SYS:RESET– Restart the SMD4

Reboot the SMD4. There is no response to this command.

<table id="bkmrk-command%3A-sys%3Areset%3Cc"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td>**SYS:RESET**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

##### SYS:SER – Get product serial number

Gets the serial number of the product. This matches the serial number label installed on the product.

<table id="bkmrk-query%3A-sys%3Aser%3Ccr%3E%3Cl-1"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**SYS:SER**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;serial&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">serial</span></span></td><td><span style="color:rgb(53,152,219);">STRING</span></td><td>Serial number of the SMD4.

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-sys%3Aser%3Ccr%3E%3Clf%3E-" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:99.5076%;"><tbody><tr><td style="width:49.9415%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">Tx: SYS:SER&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x088e,0x0000,00000-000&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:49.9415%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

##### SYS:STORE

Save the current settings. These settings will be loaded on restart.

<table id="bkmrk-command%3A-sys%3Astore%3Cc"><colgroup><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td>**SYS:STORE**&lt;CR&gt;&lt;LF&gt;

</td></tr></tbody></table>

##### SYS:UNITS

Get or set the measurement units used.

<table id="bkmrk-command%3A-sys%3Aunits%2C%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Command:</td><td colspan="2">**SYS:UNITS<span style="color:#000000;">,</span>**<span style="color:#000000;background-color:rgb(248,202,198);">&lt;units&gt;</span>&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Query:</td><td colspan="2">**SYS:UNITS**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;units&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">units</span></span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>\[0: Step\]

100: Meter

101: Inch

102: Millimeter

103: Micron

200: Degree

201: Radian

202: Revolution

</td></tr></tbody></table>

##### SYS:UPTIME – Get uptime

Gets the elapsed time since start up in milliseconds.

<table id="bkmrk-query%3A-sys%3Auptime%3Ccr"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**SYS:UPTIME**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;uptime&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">uptime</span></span></td><td><span style="color:rgb(53,152,219);">UINT</span></td><td>Uptime in milliseconds.

</td></tr></tbody></table>

<table class="MsoNormalTable" id="bkmrk-tx%3A-sys%3Auptime%3Ccr%3E%3Cl" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:99.5076%;"><tbody><tr><td style="width:49.9415%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">SYS:UPTIME&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">0x088e,0x0000,10000&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:49.9415%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

<span style="color:rgb(45,194,107);">// Uptime is 10 seconds</span>

</td></tr></tbody></table>

##### SYS:UUID – Get UUID

Gets a unique ID number which is included in the data reported when using SSDP. See SSDP. Not the same as the MAC address.

<table id="bkmrk-query%3A-sys%3Auuid%3Ccr%3E%3C"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-right">Query:</td><td colspan="2">**SYS:UUID**&lt;CR&gt;&lt;LF&gt;

</td></tr><tr><td class="align-right">Response:</td><td colspan="2"><span style="background-color:rgb(248,202,198);">&lt;uuid&gt;</span></td></tr><tr><td colspan="3">  
</td></tr><tr><td>**Data**</td><td>**Type**</td><td>**Description**</td></tr><tr><td><span style="background-color:rgb(248,202,198);"><span style="background-color:rgb(248,202,198);">uuid</span></span></td><td><span style="color:rgb(53,152,219);">STRING</span></td><td>UUID string

</td></tr></tbody></table>

**Examples**

<table class="MsoNormalTable" id="bkmrk-tx%3A-sys%3Auuid%3Ccr%3E%3Clf%3E" style="background:rgb(244,244,244);border-collapse:collapse;border:none;width:99.5076%;"><tbody><tr><td style="width:68.8183%;border-top:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-right:none;padding:0cm 5.4pt;"><span style="color:rgb(224,62,45);">Tx: SYS:UUID&lt;CR&gt;&lt;LF&gt;</span>

<span style="color:rgb(53,152,219);">Rx: 0x088e,0x0000,f4562fb1-d002-11ee-b3e5-44b7d0c71675&lt;CR&gt;&lt;LF&gt;</span>

</td><td style="width:31.0647%;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;padding:0cm 5.4pt;"><span style="color:rgb(45,194,107);">// Query</span>

</td></tr></tbody></table>

# Software APIs

### Introduction

Software APIs provide a means to control the SMD4 through your own software application. The AML device control application uses the same APIs to interact with the SMD4. The API is natively a C# class library supplied as a DLL which can be wrapped allowing use in other environments.

### C#

Download the DLL from the downloads section of the product page on our website, [https://arunmicro.com/products/smd4-stepper-motor-drive/](https://arunmicro.com/products/smd4-stepper-motor-drive/)

It is supplied as a zip file containing a visual studio project, and the API DLL and associated files. The example project demonstrates basic aspects such as connecting to a device, configuring it and programming sequences of moves.

<div class="overflow-y-auto p-4" dir="ltr" id="bkmrk-for-smd4%3A"><div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950"><div class="overflow-y-auto p-4" dir="ltr"></div></div></div><div class="overflow-y-auto p-4" dir="ltr" id="bkmrk--6"></div><div class="overflow-y-auto p-4" dir="ltr" id="bkmrk-for-the-smd3%3A-from-s"></div><div id="bkmrk-you-can-create-multi"></div><div id="bkmrk--7"></div><div id="bkmrk-smd3-%3D-smd3%28%29"></div><div id="bkmrk--11"></div>

# Guidance on use of VCSMs

It is assumed that the reader is familiar with the production and handling of UHV components. The successful application of vacuum stepper motors requires an appreciation of their thermal as well as their mechanical properties. Compared to motors operated in air, the available cooling means for motors in vacuum are much less effective.

Apart from extending the run time, operation at a low temperature improves the outgassing performance of motors. Therefore, minimum running times and motor currents should always be pursued. Selection of the largest motor possible for the application will result in longer running times, lower motor temperature and lowest outgassing.

Design mechanisms with balanced loads whenever possible or arrange that either the static friction in the system or the motor detent torque will hold position without the necessity of maintaining phase currents to produce a holding torque. The [IH](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/communications-protocol#bkmrk-ih-%E2%80%93-hold-current) command may be used to reduce the phase currents and produce a holding torque which is intermediate between the pull-out torque and the detent torque. Refer to section [Low power techniques](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/guidance-on-use-of-vcsms#bkmrk-low-power-techniques) for a full description of power reduction techniques.

Many applications that appear to require continuous running, for example, substrate rotation for ensuring uniformity of deposition or implantation, can be equally well performed by intermittent short periods of stepping at low duty cycle. Stepper motors should not be disassembled as this partially demagnetises the permanent magnet in the rotor and permanently reduces the torque.

### Operating temperature and run times

The maximum recommended running temperature of AML motors is 190 °C, as measured by the embedded type K thermocouple or RTD.

Current D-series motors have published temperature and time graphs for typical operating conditions with the motor mounted by its flange. Continuous running can readily be achieved with care at medium phase currents. Run times at higher currents can be increased by additional heatsinking at the other end of the motor.

Some AML motors are suitable for operation at 77 °K and they are believed to be suitable for use at lower temperatures. Because the resistance of the windings at low temperatures is small, the efficiency of the motor is much greater than at normal temperatures. A resistance of a few ohms should be connected in series with each winding, in order to present a normal load to the SMD4. The leads of the motor will be very brittle at low temperatures and should not be allowed to flex. The normal mechanical and electrical properties of all materials are recovered on return to room temperature.

### Outgassing and bakeout

Newly installed motors will outgas, mainly due to water-vapour retention in polyimide. As this material is microporous the water is released rapidly, and the rate will subside after a few hours. The rate may be accelerated by running the motor to self-heat it.

Baking at up to 200 °C is permissible, and a 24-hour bake at this temperature will normally reduce the outgassing to its minimum.

Motors are typically operated at some distance from the chamber walls where the bakeout temperature is most often controlled. If the temperature indicated by the motor temperature sensor during bakeout is not high enough when the bakeout period is well advanced, it may be increased to 200 °C by using the bake mode. This energises both phases, keeping the motor stationary in a half-step position. Phase current is modulated to achieve the programmed setpoint. Keeping the motor hot by this means while the rest of the vacuum system cools is recommended as this will prevent condensation on the motor.

Where internal infra-red heaters are used for bakeout it is advisable to shield the motor from direct radiation and to achieve the desired temperature during bakeout by using the bake program.

Irreversible deterioration of the winding insulation will begin to occur above 230 °C and the motor may subsequently produce larger amounts of gas, even at lower temperatures.

### Resonances

Stepper motors are classic second-order systems and have one or more natural resonant frequencies. These are normally in the 50 – 100 Hz region for unloaded motors. Operation at step rates around these frequencies will excite the resonances, resulting in very low output torques and erratic stepping. Another set of resonances can occur in the 1 – 2 kHz region, but these do not normally present any practical problems.

#### <span style="color:rgb(0,0,0);">Load inertia, friction and drive characteristics</span>

The primary (lower) resonant frequency cannot be stated with any precision, since it is modified by the friction and inertia of the load, the temperature of the motor and by the characteristics of the drive. Coupling a load inertia reduces the resonant frequency and decreases the damping factor. Load friction increases damping. Because the drive circuits of the SMD4 produce a controlled phase current this produces heavy damping. Drives which are voltage sources and which rely on the motor winding and other resistance to define the current have a lower damping factor.

The effect of changing the damping on the single step response of the motor is shown in the diagram below.

![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-fufanscz.png)

#### <span style="color:rgb(0,0,0);">Control of resonance</span>

The simplest method of controlling resonances is to avoid operation of the motor close to the resonant frequencies. It is usually possible to start a motor at rates in excess of 300 Hz if the load inertia is small, thereby completely avoiding the primary resonance. Resonances are not usually a problem when the motor speed is accelerating or retarding through the resonance frequency region.

If it is necessary to operate at slow speeds or with large load inertia, using microstepping helps. It effectively increases the stepping rate by the step division factor and reduces the amplitude of the step transients that excite the resonances. This is shown in the diagram below. Because both phases are energised in microstepping there are some other processes of interchange of energy between the windings which do not occur in the single step mode and these increase the damping factor.

In particularly difficult cases, modifying the step frequency at which transition from full stepping to microstepping occurs can be helpful.

A typical motor response to a single step and to a single step subdivided into eight microsteps is shown in the diagram below.

![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-jk5rus6y.png)

### Mechanisms for use with VCSMs

The following section is an introduction to this topic and is intended to indicate the major mechanical and vacuum considerations for various types of mechanisms. A working knowledge of mechanics and vacuum construction techniques is assumed. AML supply a range of standard mechanisms which can be customised, as well as designing custom mechanisms and components.

#### <span style="color:rgb(0,0,0);">Rotation (Position control)</span>

The load inertia coupled to the motor shaft should ideally be small compared to the rotor inertia of the motor. Load inertia up to two or three times that of the motor can be driven, without significant difference to the maximum start speed and acceleration which is achieved by the unloaded motor. Load inertia of around ten times that of the motor can be driven with absolute synchronism, provided care is taken over specifying the microstep and acceleration parameters. Larger inertia loads should be driven through reduction gearing.

Significant loads should have their centre of gravity on their axis of rotation, unless they are rotating in a horizontal plane.

Angular resolution at the motor shaft is limited to a single step of 1.8 °. The actual rest position within the step is determined mainly by the load friction and any torque imposed by the load on the motor at rest. If the rotor position is displaced θ° from the nominal step position, the restoring torque increases approximately in proportion to sin⁡(100 × θ)° The maximum torque at the half step position is either the detent torque or the holding torque, depending on whether the motor is powered at rest. If the static friction and any torque due to an unbalanced load are known, this allows the rest position error to be estimated using the above approximation. The friction within the motor bearings is very low, so that a completely unloaded D42.2 motor will normally settle within 0.2 ° of the desired position if brought suddenly to rest from full stepping at 300 Hz.

Angular resolution may be improved by reduction gearing: this is discussed below.

#### <span style="color:rgb(0,0,0);">Rotation (Speed control)</span>

In some applications, the precise position of a rotating load is not important or can be deduced by other means, but the speed of rotation may need to be controlled very precisely. Beam choppers and sample rotators for control of deposition uniformity are applications of this type. An increased load inertia may be desirable to smooth out the stepping action of the motor. Loads of up to about 1000 times the inertia of the motor can be controlled by using long acceleration ramps. Some steps may be lost during acceleration and retardation of such loads, but precise synchronism at constant stepping frequency is easily achieved and recognised.

Significant rotating loads should be balanced, at least to the extent that the torque presented to the motor shaft is less than the detent torque of the motor. The motor torque requirement will then be dominated by that required to accelerate the load.

A typical example of a large inertia load was a 1.5 kg disk of uniform section, 20 cm in diameter. This was directly coupled to a D42.2 motor and rotated continuously in vacuum at 30 RPM.

#### <span style="color:rgb(0,0,0);">Translation</span>

Translation may be produced by a leadscrew and nut, wire-and-drum or rack-and-pinion mechanisms. The choice depends on the precision, length of travel, force and speed required. Leadscrew-based translators are capable of exerting forces of kilograms with resolutions of a few microns per step.

Accurate leadscrews are practical up to 400 mm long. With anti-backlash gearing between the motor and leadscrew resolution of one micron is practical. Anti-backlash nuts are not normally necessary for vertical motions. If a conventional nut is used with the leadscrew the load will be dominated by friction, especially if there is a reduction gear between the lead screw and the motor shaft which reduces the reflected load inertia.

Because of the lubrication restrictions and the slow speeds of UHV mechanisms the static friction is usually much more significant than dynamic friction. The optimum material for nuts is phosphor bronze and for lead screws is stainless steel with a diamond-like coating (DLC). DLC has a very low coefficient of friction in vacuum. Burnishing or sputtering a layer of pure Molybdenum Disulphide on the leadscrew may be useful in reducing friction and wear. The typical coefficient of friction between these materials is 0.1 and typical efficiencies are 40 % with ground trapezoidal threads. The gas load generated by frictional heating of the leadscrew is usually somewhat less than that of the motor.

The frictional losses in drum or rack drives are lower than in conventional leadscrew drives and considerations of inertia usually dominate. Rack and pinion drives are suitable for travel up to a few hundred millimetres and wire and drum mechanisms may be made several metres long. Another alternative for heavy loads is a studded stainless-steel band and matching pulleys. The repeatability and backlash of all these alternative translation drives are much worse than with screw-driven schemes.

#### <span style="color:rgb(0,0,0);">Linear guides</span>

Low-cost translation mechanisms can use simple bushes running on ground stainless-steel rods. A variety of carbon-reinforced polymer materials, such as PEEK, are suitable for the bushes.

'V' groove rollers and tracks and crossed-roller guides are suitable for more accurate translators. The former have the advantage of being practical to 1 metre and have minimal overall length for a given travel. Crossed-roller slides are more rigid and can support larger loads, but at higher cost. Both types have preload adjustments. 'V' rollers have smaller load-bearing surfaces and only have a rolling contact at a single point and are consequently liable to greater wear if heavily loaded. AML products of the VSM23 and VSM17 series are small-dimension examples of these types of mechanisms.

#### <span style="color:rgb(0,0,0);">Reduction gearing</span>

The inertia of loads coupled by reduction gearing is reduced at the motor in proportion to the square of the reduction ratio. Where reduction gearing is used for load matching, the spur gear meshing with the motor pinion will normally dominate the load inertia and it is important to keep its diameter small. Anti-backlash gears and standard pinions should be used in the gear train to damp any resonances in the mechanism. Gears for use in UHV should be designed for low friction without lubrication and with dissimilar materials in contact to avoid cold-welding. Nitrogen ion-implantation of the rolling surfaces or complete Titanium Nitride coating of gears are effective means of achieving this and other desirable properties in all-stainless-steel gear trains.

#### <span style="color:rgb(0,0,0);">Bearings</span>

Bearings for use in UHV should be unshielded and have a stainless steel cage and race. The balls should be either stainless steel coated with some other material or solid ceramic. As an alternative, all-stainless bearings having a PTFE composite component in the race (which is designed to transfer to the balls) are also suitable.

### Magnetic fields near motor

Motors should not be operated in fields of greater than 50 millitesla (500 gauss), as this will affect the performance while the field is present. Fields significantly greater than this may cause partial demagnetisation of the rotor, reducing the torque. Demagnetised motors can be restored by AML.

The leakage field of a motor is of the order of 1 millitesla (10 gauss) at 1 cm from the cylindrical surface of the motor in an axial direction and is present when the motor is not powered. Under drive an alternating component is added at the step frequency and its harmonics up to a few kHz. The field is easy to screen with Mu-metal or similar high permeability foil to below a few milligauss at the sides of the motor but is more difficult around the projection of the shaft. Early consideration of the interaction of stray fields on nearby equipment is recommended.

### <span style="color:rgb(0,0,0);">Low power techniques</span>

In the design of small mechanisms there are several factors that are not accurately known, or that have poor tolerances, for which generous allowances must be made. The result should be a conservative design where the available torque is in excess of the requirement. Some of this excess can be exchanged for increased running time or decreased outgassing in vacuum by various techniques. Used in combination the improvement can be very significant.

Most of the 'tuning' procedures below require the motor or mechanism to be run on the bench under realistic representative operating conditions while adjusting a parameter to the point where normal stepping operation fails. Erratic stepping is easy to see; a cable tie on the motor shaft makes a useful pointer. Familiarity with the SMD4 software and or remote interface is assumed.

#### <span style="color:rgb(0,0,0);">Techniques applicable to all applications</span>

<div id="bkmrk-the-following-techni">The following techniques can be used in all applications to reduce motor power:</div><div id="bkmrk-run-the-motor-at-ste">1. Run the motor at stepping rates between 500 Hz and 2 kHz, where its electromechanical efficiency is greatest, if possible
2. Reduce the acceleration for inertia-dominated loads
3. Reduce the phase current progressively to about 20% more than the minimum for consistent stepping. Some adjustment of the acceleration parameters may be needed
4. Make use of the run and acceleration current settings; try a higher current during acceleration to overcome inertia of a large load, and the minimum current possible during run to keep the load moving. This will reduce motor power dissipation versus using the same higher current all the time
5. Improve the heatsinking arrangements. A reduction in motor temperature decreases the winding resistance and increases its efficiency.

</div>#### <span style="color:rgb(0,0,0);">Techniques where step rates less than 100 Hz</span>

For applications where operation below few hundred steps per second is satisfactory, use the following technique beyond those above. The desired effect is to complete each step as quickly as possible and remove or reduce the power to the minimum as soon as possible. Each step is completed in a few milliseconds, so that the power saving is progressively greater at lower speeds. Read and ensure that you understand the complete procedure before starting.

Set the target frequency VMAX equal to the start speed VSTART and steadily increase them both to determine the highest speed at which the motor will start. Take care when increasing the speed through the expected resonance range because the motor may not start in that range, although it may start reliably at higher speeds.

Configure PDDEL, IHD and IH to zero, to reduce motor current to zero as quickly as possible after each step is completed. Move the motor in single steps at the highest reliable starting speed, followed by a delay of a few milliseconds or more. This reduces power dissipation in the motor and so minimises temperature rise. It also has the consequence of reducing the damping factor at the time the power is reduced, so some experimentation with the parameters is required to ensure an adequate margin of stability is obtained.

### <span style="color:rgb(0,0,0);">Possible causes of damage to VCSMs</span>

Vacuum motors must be de-magnetised before disassembly and re-magnetised and cleaned after repair. For these reasons most will need to be returned to AML for repair. The notes below offer guidance on the avoidance of the most common problems and diagnostic advice.

#### <span style="color:rgb(0,0,0);">Bearing damage</span>

The ceramic balls in the bearings are very strong but more brittle than steel balls. Dropping the motor on its end will probably break some balls. The damage is occasionally visible and any roughness felt when rotating the shaft manually will indicate that this has happened.

#### <span style="color:rgb(0,0,0);">Debris inside the motor</span>

Foreign material can enter the motor via the pumping holes and gaps in the bearings. Particles of magnetic materials are particularly likely to be attracted through the pumping holes and they eventually migrate into the gap between the rotor and stator. They usually cause the rotor to stick at one or more points per revolution and can often only be felt when rotating in a specific direction. Fortunately, the larger motors have enough torque to grind them into a dust.

The main cause of this type of problem has been users modifying shafts. This can be avoided by sealing the motor inside a cleaned polyethylene bag and supervising the machining closely. Clean the projecting shaft and remove magnetic particles with a magnet before opening the bag. Remove the motor or similarly seal it if any filing or drilling of nearby components is done.

#### <span style="color:rgb(0,0,0);">Overheating</span>

Motors which have been heated to 230 °C will produce a much greater gas load thereafter, although their electromechanical performance may not be affected. In extreme cases, the insulating material will ablate and deposit itself as a yellow powder inside the motor case and on any cool surfaces in line with the pumping holes.

Motors can overheat very quickly in vacuum. This is very unlikely to happen with a properly connected SMD4 drive. Never use a drive capable of providing more than 1 amp of phase current and ensure that the drive current is removed as soon as the indicated temperature exceeds 190 °C. This is performed automatically by the SMD4.

# Maintenance and service

The SMD4 contains no user-serviceable parts.

### <span style="color:rgb(0,0,0);">Cleaning</span>

If the instrument requires cleaning, disconnect the power and all other connections, and wipe it down with a cloth slightly dampened with water or a mild detergent.

# Troubleshooting

<table class="MsoNormalTable" id="bkmrk-problem-resolution-r" style="width:827px;border-collapse:collapse;border:none;height:425.302px;"><tbody><tr style="height:31.3125px;"><td style="width:269.59px;border:1pt solid rgb(127,127,127);background:rgb(109,111,113);padding:2.85pt 5.4pt;height:31.3125px;"><span style="color:rgb(255,255,255);">Problem</span>

</td><td style="width:553.421px;border-top:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:none;background:rgb(109,111,113);padding:2.85pt 5.4pt;height:31.3125px;"><span style="color:rgb(255,255,255);">Resolution</span>

</td></tr><tr style="height:53.6979px;"><td style="width:269.59px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:53.6979px;">Red and green status indicators off</td><td style="width:553.421px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:53.6979px;">Check that the power supply to SMD4 is correctly connected and meets the requirements given in section [Technical Information](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/technical-information)</td></tr><tr style="height:31.3125px;"><td style="width:269.59px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;height:31.3125px;">Red status indicator flashing or lit solidly</td><td style="width:553.421px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:31.3125px;">Each indication corresponds to a fault, review section [Faults](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/operation#bkmrk-faults)</td></tr><tr style="height:188.083px;"><td style="width:269.59px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;background:rgb(244,244,244);padding:2.85pt 5.4pt;height:188.083px;">Motor does not move when commanded</td><td style="width:553.421px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);background:rgb(244,244,244);padding:2.85pt 5.4pt;height:188.083px;">Is a fault present? Check the red status indicator on the front panel, and use the SMD3 software or remote interface to determine the nature of the fault. After the fault has been fixed, run the CLR command, or use the reset fault input to restore normal operation

  
Check the motor wiring to the SMD3; disconnect the motor, and use a multimeter to measure the resistance of each phase, see section [Lead Identification](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/installation#bkmrk-lead-identification-1), which should be approximately 3 – 15 ohms

</td></tr><tr style="height:120.896px;"><td style="width:269.59px;border-right:1pt solid rgb(127,127,127);border-bottom:1pt solid rgb(127,127,127);border-left:1pt solid rgb(127,127,127);border-top:none;padding:2.85pt 5.4pt;height:120.896px;"><span style="font-family:'DejaVu Sans', '-apple-system', BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;">Joystick does not work</span></td><td style="width:553.421px;border-top:none;border-left:none;border-bottom:1pt solid rgb(127,127,127);border-right:1pt solid rgb(127,127,127);padding:2.85pt 5.4pt;height:120.896px;">Is joystick mode selected?

If you want to switch to joystick mode automatically on connection of the joystick, see setting [AUTOJS](https://bookstack.vps-da8d40f3.arunmicro.com/books/smd4-user-manual/page/communications-protocol#bkmrk-%C2%A0-15) and section [Joystick](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-joystick). The joystick must be wired correctly for the auto-detect function to work as described in section [Joystick](https://bookstack.vps-da8d40f3.arunmicro.com/link/28#bkmrk-joystick).

</td></tr></tbody></table>

# Storage and disposal

The product must be disposed of in accordance with the relevant local regulations for the environmentally safe disposal of systems and electronical components.

<table class="MsoNormalTable" id="bkmrk-in-the-united-kingdo" style="border-collapse:collapse;width:103.088%;"><tbody><tr><td class="align-center" style="width:8.5184%;padding:0cm 5.4pt;border-style:hidden;vertical-align:middle;"><span>![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-exg78epy.png)  
</span>

</td><td style="width:91.4802%;padding:0cm 5.4pt;border-style:hidden;">In the United Kingdom (UK) and European Union (EU), waste from electrical and electronic equipment (WEEE) is subject to legislation designed to prevent the disposal of such waste and to encourage proper treatment measures to minimize the amount of waste ultimately disposed to landfill. To view AML’s WEEE policy please visit: [https://arunmicro.com/documentation/WEEE\_procedure.pdf](https://arunmicro.com/documentation/WEEE_procedure.pdf)

</td></tr></tbody></table>

# Assistance

In the first instance, contact the distributor or supplier of the equipment. Always quote the serial number of the instrument and firmware and software versions. Provide a written description of the problem. If the problem is related to a motor or mechanism manufactured by AML, include the serial number(s) of those items. Do not return products to AML without prior approval.

Arun Microelectronics Ltd  
Tel: +44 (0)1903 884141  
Email: info@arunmicro.com  
Website: [arunmicro.com](https://arunmicro.com/)

# Compliance Certificate

<table class="Tablehidden" id="bkmrk-%C2%A0-%C2%A0-%C2%A0%C2%A0%C2%A0-%C2%A0%C2%A0" style="border-collapse:collapse;width:132.718%;"><tbody><tr style="height:1cm;"><td style="width:50.045%;padding:0cm 5.4pt;height:1cm;border-style:hidden;">![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-qhd8u3vz.png)

</td><td style="width:50.045%;padding:0cm 5.4pt;height:1cm;border-style:hidden;"><span><span><span>![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-lrrjzqge.png) </span></span></span>![](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2023-10/embedded-image-j82ydiyv.png)

<span><span><span></span></span></span>

</td></tr></tbody></table>

<span> </span>

<span> </span><span>This declaration of conformity is issued under the sole responsibility of the manufacturer.</span>

<span> </span>

<table class="MsoTableGrid" id="bkmrk-manufacturer%3A-arun-m" style="border-collapse:collapse;border:none;width:111.607%;"><tbody><tr><td style="width:21.7734%;padding:0cm 5.4pt;border-style:hidden;"><span>**Manufacturer:**</span>

</td><td style="width:78.3167%;padding:0cm 5.4pt;border-style:hidden;"><span>Arun Microelectronics Limited</span>

<span> </span>

</td></tr><tr><td style="width:21.7734%;padding:0cm 5.4pt;border-style:hidden;"><span>**Address:**</span>

</td><td style="width:78.3167%;padding:0cm 5.4pt;border-style:hidden;"><span>Unit 2, Bury Mill Farm, Bury Gate, Pulborough, RH20 1NN, United Kingdom</span>

<span> </span>

</td></tr><tr><td style="width:21.7734%;padding:0cm 5.4pt;border-style:hidden;"><span>**Object:**</span>

</td><td style="width:78.3167%;padding:0cm 5.4pt;border-style:hidden;"><span>Stepper Motor Drive</span>

<span> </span>

</td></tr><tr><td style="width:21.7734%;padding:0cm 5.4pt;border-style:hidden;"><span>**Part No.:**</span>

</td><td style="width:78.3167%;padding:0cm 5.4pt;border-style:hidden;"><span>SMD4</span>

<span> </span>

</td></tr></tbody></table>

<span>The object of the declaration described above is in conformity with the relevant UK Statutory Instruments (and their amendments), and the relevant European Union harmonisation legislation:</span>

<table class="MsoTableGrid" id="bkmrk-statutory-instrument" style="border-collapse:collapse;border:none;width:114.076%;height:292.435px;"><tbody><tr style="height:20.2431px;"><td style="width:20.7407%;padding:0cm 5.4pt;height:20.2431px;border-style:hidden;"><span><span>**Statutory Instruments:**</span></span>

</td><td style="width:24.0741%;padding:0cm 5.4pt;height:20.2431px;border-style:hidden;"><span><span>2016 No. 1091</span></span>

</td><td style="width:55.1852%;padding:0cm 5.4pt;height:20.2431px;border-style:hidden;"><span><span>The Electromagnetic Compatibility Regulations 2016</span></span>

</td></tr><tr style="height:22.7778px;"><td style="width:20.7407%;padding:0cm 5.4pt;height:22.7778px;border-style:hidden;"><span><span> </span></span>

</td><td style="width:24.0741%;padding:0cm 5.4pt;height:22.7778px;border-style:hidden;"><span><span>2016 No. 1101</span></span>

</td><td style="width:55.1852%;padding:0cm 5.4pt;height:22.7778px;border-style:hidden;"><span><span>The Electrical Equipment (Safety) Regulations 2016</span></span>

</td></tr><tr style="height:57.7894px;"><td style="width:20.7407%;padding:0cm 5.4pt;height:57.7894px;border-style:hidden;"><span><span> </span></span>

</td><td style="width:24.0741%;padding:0cm 5.4pt;height:57.7894px;border-style:hidden;"><span><span>2012 No. 3032</span></span>

</td><td style="width:55.1852%;padding:0cm 5.4pt;height:57.7894px;border-style:hidden;"><span><span>The Restriction of Use of Certain Hazardous Substances in Electrical and Electronic Equipment Regulations 2012</span></span>

<span><span> </span></span>

</td></tr><tr style="height:19.2593px;"><td style="width:20.7407%;padding:0cm 5.4pt;height:19.2593px;border-style:hidden;"><span><span>**Directives:**</span></span>

</td><td style="width:24.0741%;padding:0cm 5.4pt;height:19.2593px;border-style:hidden;"><span><span>2014/30/EU</span></span>

</td><td style="width:55.1852%;padding:0cm 5.4pt;height:19.2593px;border-style:hidden;"><span><span>EMC Directive</span></span>

</td></tr><tr style="height:19.2593px;"><td style="width:20.7407%;padding:0cm 5.4pt;height:19.2593px;border-style:hidden;"><span><span> </span></span>

</td><td style="width:24.0741%;padding:0cm 5.4pt;height:19.2593px;border-style:hidden;"><span><span>2014/35/EU</span></span>

</td><td style="width:55.1852%;padding:0cm 5.4pt;height:19.2593px;border-style:hidden;"><span><span>Low Voltage Directive</span></span>

</td></tr><tr style="height:37.7778px;"><td style="width:20.7407%;padding:0cm 5.4pt;height:37.7778px;border-style:hidden;"><span><span> </span></span>

</td><td style="width:24.0741%;padding:0cm 5.4pt;height:37.7778px;border-style:hidden;"><span><span>2015/863</span></span>

</td><td style="width:55.1852%;padding:0cm 5.4pt;height:37.7778px;border-style:hidden;"><span><span>RoHS Directive</span></span>

<span><span> </span></span>

</td></tr><tr style="height:37.7778px;"><td style="width:20.7407%;padding:0cm 5.4pt;height:37.7778px;border-style:hidden;"><span><span>**Standards:**</span></span>

</td><td colspan="2" style="width:79.2593%;padding:0cm 5.4pt;height:37.7778px;border-style:hidden;"><span><span>Harmonised and international/national standards and specifications:</span></span>

<span><span> </span></span>

</td></tr><tr style="height:39.7732px;"><td style="width:20.7407%;padding:0cm 5.4pt;height:39.7732px;border-style:hidden;"><span><span> </span></span>

</td><td style="width:24.0741%;padding:0cm 5.4pt;height:39.7732px;border-style:hidden;"><span><span>**EN 61010-1:2010+A1:2019**</span></span>

</td><td style="width:55.1852%;padding:0cm 5.4pt;height:39.7732px;border-style:hidden;"><span><span>Safety requirements for electrical equipment for measurement, control and laboratory use</span></span>

</td></tr><tr style="height:37.7778px;"><td style="width:20.7407%;padding:0cm 5.4pt;height:37.7778px;border-style:hidden;"><span><span> </span></span>

</td><td style="width:24.0741%;padding:0cm 5.4pt;height:37.7778px;border-style:hidden;"><span><span>**EN IEC 61800-3:2023**</span></span>

</td><td style="width:55.1852%;padding:0cm 5.4pt;height:37.7778px;border-style:hidden;"><span><span>Adjustable speed electrical power drive systems</span></span>

</td></tr></tbody></table>

<span> </span>

<span>**Signature<span> [![sig.PNG](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-04/scaled-1680-/sig.PNG)](https://bookstack.vps-da8d40f3.arunmicro.com/uploads/images/gallery/2024-04/sig.PNG)</span>**</span>

<span style="margin-left:225px;margin-top:560px;width:359px;height:2px;"> </span>

<span>*Mr. R Burling, Product Design Manager*</span>

<span>**Place, Date**<span> </span>Pulborough, April 2024</span>