Technical Notes

TN250613 - Achieving High-Speed Serial Communication

Written by Iris Dynamics | Jun 20, 2025 8:31:02 PM

 


ORCATM Series Smart Linear Motors implement serial communications through a subset of the Modbus RTU specification. Through the Modbus communication protocol, communication rates of up to 1 kHz on Windows and Linux, are possible. High-speed communication is beneficial for generating a smooth motion profile and for providing high-resolution data from the motor.

To obtain higher data throughput and lower data latency through a serial connection, the motor’s baud rate can be increased and interframe delays, or time between frames, can be decreased. The orcaSDK also offers asynchronous communication through command streaming. Command streaming provides the ability to send commands to the motor and read data simultaneously.

 

When to Use High-Speed Communication 

  • When real-time feedback or smooth motion is critical.
  • When large volumes of data need to be streamed from the motor.

When High-Speed Communication is Not Ideal

  • When communicating over longer distances, use lower baud rates to maintain signal integrity.
  • When infrequent communication is required, using a lower baud rate can improve noise immunity and reduce client and server load.

 

Enabling Command Streaming 

To enable command streaming, when working with Python or C++, following creation of the actuator object, and opening the serial port, call enable_stream() on your Actuator object. This method enables asynchronous command stream messages to your connected motor.

Following this, call Actuator : : run( ) at a regular interval, such as within a while loop. Actuator : : run( ) determines whether an active message needs to be resolved, and sends a new command stream message if an active message is not present.

Command streaming in C++

Command streaming in Python 

 

Enabling High-Speed Communication

If developing in Windows, Windows sets the latency timer of all COM ports to 16 ms, by default. The Modbus RTU protocol requires a lower latency. Prior to working with interfaces such as C++, MATLAB, LabVIEW, set the latency of the Modbus COM port to 1 ms.

How To Set Modbus Latency

  1. Search for Device Manager in the search bar and select it.
  2. Expand the Ports (COM & LPT) drop-down.
  3. Determine the COM port being used for Modbus communications. Unplugging and plugging it in is an easy way to determine which it is, if unsure. 
  4. Right click the associated COM port, and select Properties.
  5. Select the Port Settings tab.
  6. Click the Advanced button.
  7. Select Latency Timer (msec) and set it to 1 ms.
  8. Click OK to save the changes.
  9. Restarting your computer may be required for the changes to take effect.

Latency timer settings within Windows

Configuring Communication Parameters Through IrisControls

Prior to configuring high-speed communication, the Modbus Rate on IrisControls will display a value of between 40 and 70 Hz. At this communication rate, between 40 and 70 messages are sent between the application and the motor each second.

To increase the motor’s communication rate, increase the baud rate; a higher baud rate correlates with a higher rate of communication. The interframe delay indicates the amount of time the motor will wait before a response is sent.

To set the motor to 1 Mbps and an interframe of zero use the following parameters in IrisControls, within the Modbus tab. After these parameters are set, click the Save Modbus Options tab.

Setting the Modbus tab parameters, within IrisControls, to increase communication speeds

Configuring Communication Parameters Through Code

To configure communication parameters in code, the baud rate and interframe delay parameters must match those set within IrisControls. These parameters are added within Actuator : : open_serial_port( ), as follows:

Enabling high-speed communication in C++

Enabling high-speed communication in Python