LabVIEW SoftMotion Module 2016 Q4 Notification


An issue affecting all installations of the LabVIEW SoftMotion Module has been identified. The description below identifies the problem, recommended solution, and a software workaround.


On multi-core real-time controllers using any version of the LabVIEW SoftMotion Module, it is possible for position data to be corrupted before a move is executed. This results in a large position error which causes the axis to move to the new setpoint in one Scan Engine period. Depending on the motion system hardware, this can result in a jump of the motor to a new position, an over-speed fault on the drive, or other errors.

Examples of multi-core real-time controllers are cRIO-906x, cRIO-903x, cRIO-908x, CVS-145x, IC-317x, and multi-core PXI controllers running LabVIEW Real Time.


This issue has been resolved in a software patch for LabVIEW SoftMotion Module versions 2015, 2015 SP1, and 2016. NI strongly recommends that users of multi-core real-time controllers upgrade any previous installation of SoftMotion, including LabVIEW and driver support, to 2015 SP1 or 2016. These patches are available via NI Update Service for existing SoftMotion installations.


For SoftMotion users that are not able to update software versions to 2015 or later, NI recommends a software workaround to prevent this issue from affecting motion control systems. The RT Simultaneous Multi-Processing (SMP) CPU Utilities VIs can be used to assign tasks to specific CPU cores on multi-core real-time controllers. Using the RT Set CPU Pool Assignments VI to limit execution of all LabVIEW processes on a real-time controller to one core will effectively prevent the position jump. See the attached VI as an example of implementing this workaround.

If limiting processing to one core causes the target’s CPU usage to exceed 100%, NI recommends increasing the Scan Engine period. This will linearly decrease the CPU usage of SoftMotion and other code running at the Scan Engine rate, such as EtherCAT communication. To change the Scan Engine period, right-click on your real-time target in the LabVIEW project and select Properties. Choose the Scan Engine category, then modify the Scan Period value. For most targets and applications, a Scan Engine period of 5 to 8 ms is recommended.