v3.5 to v3.6 Change Log (November 30, 2023)

Utility and Installer Changes

  1. Fixed issue in the ProfileAnalyzer that the communication cycle was not displayed in the Resolution area when the Start button was pressed.

  2. Fixed issue in the ProfileAnalyzer that the unit of the value specified for Record Time and the unit of the horizontal axis of the graph were not milliseconds but communication cycles. However, if a log data file saved by a previous version of ProfileAnalyzer is read, it will be displayed in units of communication cycles.

  3. Changed the title of the horizontal axis of the graph of ProfileAnalyzer to display Cycle when a log data file saved by a ProfileAnalyzer v3.5 or earlier is loaded.

  4. In EcConfigurator, the ec_network.def edit feature has been updated. Master parameters and user-defined parameters can be edited on the network editor tab.

  5. In EcConfigurator, the “Open Manual” button on the Help tab has been enabled. This button opens the utility manual of the revamped EcConfigurator.

  6. In EcConfigurator, fixed issue in which SlotGroupIndexIncrement, SlotGroupPdoIncrement, SlotIndexIncrement, SlotPdoIncrement, DependOnSlot, DependOnSlotGroup attributes were not reflected correctly in index addresses in certain cases. (e.g., in WMX3 3.5, the SlotIndexIncrement attribute of ESI was applied to InitCmd on a per-PDO basis instead of on a per-module basis).

  7. In EcConfigurator, fixed issue in which module configurations were not defined in 0xF030 (module configuration information) if it is needed when generating ENI files.

  8. In EcConfigurator, fixed issue in which the ENI files for servo drives and modular devices were not restored to the screen correctly when loading ENI. However, ENI files for modular devices generated by EcConfigurator versions earlier than WMX3 3.5u1 do not contain module configuration information, so module configuration information cannot be decoded if module settings are not configured manually.

  9. In EcConfigurator, fixed issue in which the ESI files may not be read correctly if these contain a comment description.

  10. In EcConfigurator, fixed issue in which the objects defined in array format in the object dictionary in ESI may not be loaded correctly when loading ESI files.

  11. In EcConfigurator, fixed issue in which the LED indicating the normality of Interrupt Interval on the main tab was judged to be normal unconditionally when 95%-105% was less than 20%.

  12. In EcConfigurator, fixed issue in which the SDODownload of a PDOEntry was not defined in ENI if Mailbox.CoE.PdoAssign was false despite Mailbox.CoE.PdoConfig in ESI being true.

  13. In EcConfigurator, reflecting the information in the ESI, Init2PreOpWaitTime/PreOp2InitWaitTime/PreOp2SafeOpWaitTime/SafeOp2PreOpWaitTime/SafeOp2OpWaitTime/Op2SafeOpWaitTime became output in ENI files. These are timeout times for per-slave ESM (EtherCAT State Machine) transitions and are variable parameters in WMX3 3.5 and later EcPlatform.

  14. In CCLinkConfigurator, supported multi-master function.

  15. In CCLinkConfigurator, supported network synchronization setting and coexistence of multiple cycles setting.

  16. In CCLinkConfigurator, supported sending and receiving SLMP function.

  17. In EcConfigurator, fixed issue in which the dictionary file specified in the DictionaryFile element was not loaded when loading ESI files.

  18. In EcConfigurator, fixed issue in which the module information file specified in the Desctiptions->Modules element was not loaded when only it existed as module information for the device when loading ESI files.

  19. In EcConfigurator, InitCmd is now properly placed in [preop2safeop], [safeop2preop], [safeop2op], or [op2safeop] based on the Transition attribute value when generating ENI files.

  20. In EcConfigurator, EoE device settings, DC settings, and user-defined SDODownloads are now supported in the ENI file’s advanced settings screen.

  21. WOS+ (WMX3 Operation Station Plus) is newly included as an integrated utility from this version onwards.

  22. NetConfigurator (Network Configurator) is newly included as an integrated utility from this version onwards.

New Functions

  1. Added Encoder Range Mode, Encoder Range Low, and Encoder Range High parameters to the AxisParam class. Added SetEncoderRange and GetEncoderRange functions for setting or getting these parameters (these parameters can also be set or get using any function that takes the AxisParam class as an argument).

  2. Overhauled path interpolation with look ahead as follows:

    -Added smoothing time parameters.

    -Reduced execution time. AddPathIntplLookaheadCommand takes approximately 16% less time, depending on the input.

    -StartPathIntplLookahead starts motion immediately (previously, motion started after several milliseconds or longer depending on the number of points that were added to the buffer). However, there still is a delay before starting motion when resuming a path interpolation with look ahead command that is paused with StopPathIntplLookahead.

    -Added auxiliary axis parameters to all linear and circular segment types. Previously, auxiliary axes could only be specified for the throughAndEnd3DCircularWithAuxiliary segment type.

    -Added overloaded AddPathIntplLookaheadCommand function for adding any number of points with one function call.

    -Added setSmoothingTime, firstSmoothingTimeMilliseconds, and secondSmoothingTimeMilliseconds parameters to PathIntplLookaheadConfiguration for applying a 2-pass moving average filter to the path. This will smooth the path and can also apply acceleration and jerk limits.

  3. Added support for trigger motion to spline functions. 32 overloaded functions have been added for the StartCSplinePos/Mov and StartCBSplinePos/Mov API functions with Trigger or TriggerEvents arguments.

  4. Added support for trigger motion to PVT functions. 12 overloaded functions have been added for the StartPVT, StartPT, StartVT, and StartAT API functions with Trigger or TriggerEvents arguments.

  5. Added overloaded functions that can execute commands for multiple axes with one API call to the StartTrq (with max motor speed specified), StartRampTimeTrq, StartRampRateTrq, StartPosToRampTimeTrq, StartPosToRampRateTrq, StartVelToRampTimeTrq, and StartVelToRampRateTrq API functions. (13 overloaded functions added in total.)

  6. Added overloaded function for StartVel (timed velocity command) for which max torque limit can be specified. Added overloaded functions that can execute commands for multiple axes with one API call for StartVel (velocity command with max torque limit specified and timed velocity command with max torque specified). (3 overloaded functions added in total.)

  7. Added support for trigger motion to the jog, velocity, and torque functions. 48 overloaded functions have been added for the StartJog, StartVel, StartTrq, StartRampTimeTrq, and StartRampRateTrq API functions with Trigger or TriggerEvents arguments.

  8. Expanded the functionality of PVT commands:

    -Modified specifications for PVT to not require the point times to be a multiple of the cycle time. Previously, if a point time was not a multiple of the cycle time, it was rounded to be a multiple of the cycle time. With this version, the PVT profile will be more smooth when point times that are not a multiple of the cycle time are specified.

    -Modified specifications for PVT to not require the user to specify a first point with a time of 0. Previously, an error was returned if the first point did not have a time of 0. With this version, the user can immediately start specifying points with time greater than 0. Existing user applications that specify a first point with a time of 0 still run as before.

  9. Added 20 cycle time independent profile types. These profile types can be used anywhere where a profile type can be specified.

  10. Position commands (StartPos) that are waiting for trigger conditions to be satisfied can be overridden by jog commands (StartJog). Previously, jog commands could only override position commands that are not waiting for trigger conditions to be satisfied.

  11. Added ExecuteMultipleChannel, HaltMultipleChannel, ClearMultipleChannel, and RewindMultipleChannel functions for starting, stopping, clearing, and rewinding multiple API buffer channels at once. These functions will start, stop, clear, or rewind multiple API buffer channels typically within 1 cycle of each other, which is much faster than calling Execute, Halt, Clear, or Rewind for each channel in previous versions.

  12. Added AxisIdle trigger motion condition to TriggerType and TriggerEventInputFunction.

  13. M4Platform supports SkipEventDriven in the Master section in m4_network.def. The comma-separated slave IDs specified on the right side of this parameter indicate the slaves to skip event-driven communication. For slave devices that skip event-driven communication, the vendor code and device code cannot be identified by the master before communication starts, so unless an explicit file name is specified by user definition, it should be associated with the MNI file 00000000_00000000.txt.

  14. On SimuPlatform, added setting NumOfAxes and StartAxis to specify the number of axes and start of axis of SimuPlatform.

  15. On EcPlatform, provided slave IO address/size information and IO read/write operation in EcApiPub.

  16. On EcPlatform, print txDelay to log after stopping communication.

  17. On EcPlatform, added eni command SoERead/SoEWrite and AoERead/AoEWrite.

  18. On EcPlatform, added API GetEniFilePath to get eni file path after network scan.

  19. On CCLinkPlatform, supported multi-master function.

  20. On CCLinkPlatform, supported network synchronization setting of slaves, and coexistence of multiple cycles setting for only I/O slaves.

  21. On CCLinkPlatform, added a loading cclink_network.def feature in ScanNetwork, and added parameter to select ScanNetwork operation mode. The default behavior is not to load UserDef settings.

  22. Changed the minimum linear and circular interpolation lengths and the minimum distance between the start position, end position, and center position of circular interpolations in path interpolation with look ahead from 1e-3 to 1e-6. Changed the minimum smooth radius (minimum length of two linear interpolations that can be replaced by a circular interpolation) in path interpolation with look ahead from 1e-1 to 1e-6.

  23. On EcPlatform, added virtual slave pdo read/write and event register related pub APIs.

  24. Added distMechanicalEndToZPulse parameter to AxisHomeData class of CoreMotion. This parameter indicates the distance from the mechanical end to the Z phase(index pulse) position.

  25. Added bitmask function for output to IoApi. This function allows to enable or disable operations on specific output bits.

  26. Added Free Position Mode to Pitch Error Compensation and 2D Pitch Error Compensation. In free position mode, pitch point positions are specified directly instead of as intervals from the pitch origin position.

  27. Added GreaterPositionError event input type to CoreMotionEventInput. Also added GreaterPositionError trigger motion condition to TriggerEventInputFunction.

Specs Changes

  1. Changed the minimum distance between the starting point, end point, through point, and center point of circular interpolation and helical interpolation from 1 user unit to 1e-6 user units.

  2. Removed FollowMotion command for path interpolation with look ahead added in WMX3 v3.4u5.

  3. Specifications for path interpolation with look ahead have been changed with the overhaul as follows:

    -Moved the smoothRadius, setSegmentCompositeVel, and segmentCompositeVel parameters of the PathIntplLookaheadCommandPoint class into the data structures for each segment type so that they cannot be specified for segment types that do not support these parameters.

    -When the smoothRadius is specified for consecutive linear interpolations with 4 or more axes, a circular interpolation segment is not inserted. Previously, a circular interpolation segment was inserted for the first 3 axes but not the remaining axes.

    -Removed the throughAndEnd3DCircularWithAuxiliary segment type. Auxiliary axes can now be specified in the standard throughAndEnd3DCircular segment type.

    -AuxiliaryAxisOutOfRange and AuxiliaryAxisCountOutOfRange errors are returned instead of AxisOutOfRange and AxisCountOutOfRange when the auxiliary axis parameters are out of range.

    -Reduced the maxPathIntplLookaheadAppendPoints constant from 2000 to 1500. (Any number of points can be appended at once with the new overloaded AddPathIntplLookaheadCommand function.)

    -Added PathIntplLookaheadState::Configured state. The state changes from Idle to Configured when the SetPathIntplLookaheadConfiguration function is successfully called. The state no longer changes to Stopped when adding a command.

    -Removed reserved PathIntplLookaheadProfileType enumerator class.

  4. Modified StartCoordinatedPos function to return the NumCommandsOutOfRange error instead of the AxisCountOutOfRange error when the number of commands is out of range.

  5. Defined initial home position and the initial command and feedback position calculated from the encoder feedback position when starting communication for the first time after starting the engine. Previously, these values were not explicitly defined. The definition can be found in the WMX3 User Manual, under [Motion\Architecture\Start Communication and Servo On].

  6. Moved internal functions and variables of the WMX3 C++ library from the global namespace to the wmx3Api namespace to prevent conflicts with identifiers defined in the global namespace by the user application.

  7. Modified trigger motion to always start the motion in the correct cycle, even when there is an extremely high load on the CPU. Previously, if there was an extremely high load on the CPU, the execution of the trigger motion may be delayed for one or more cycles.

  8. Modified the priority in which error codes are returned by the PosToJog, OverridePos, OverrideMov, OverrideVel, OverrideAcc, OverrideDec, OverrideJerkAcc, OverrideJerkDec, OverrideProfile, StopJogAtPos, Velocity::Stop, Velocity::ExecQuickStop, and StopTrq. These functions will return the CommNotStarted error instead of the AxisMismatch, AxisOutOfRange, DuplicateAxis, and TriggerAxisOutOfRange errors if they are called before communication is started with axis parameters that are out of range.

  9. Modified the specifications of Execute, Halt, Clear, and Rewind functions to block until the API buffer has finished processing the command. This adds about 1ms of delay before the function returns, but fixes the issue in which calling these functions in sequence causes the PrevSettingsBeingApplied error to be returned. When starting/stopping multiple API buffer channels at once, the ExecuteMultipleChannel or HaltMultipleChannel functions should be used to prevent degraded performance (see new functions).

  10. Specifications of splines have been modified as follows:

    -Modified spline specifications to not require the user to specify the first point with the current position. A first point with the current position will automatically be added. This reduces the minimum number of points from 3 to 2. The user can still specify the first point with the current position, so existing user applications will still work.

    -Modified point time spline specifications to not require the user to specify 0 for the first time. The user can still specify 0 for the first time, so existing user applications will still work.

    -Modified total time, profile, and velocity acceleration limited spline to not return the DistanceBetweenPointsTooClose error when the distance between consecutive points is less than 1e-6. Instead, consecutive points with distance less than 1e-6 are ignored. Previously, only consecutive points with distance exactly 0 were ignored.

    -Modified point time splines to be able to specify the time with more precision than integer multiples of milliseconds. This requires a change in the user application using point time splines (the argument type must be changed from unsigned int to double).

  11. On M4Platform, when UserDef=1 and HaltOnNetworkDiff=0, if the user-defined slave ID and the actual slave ID on the network collide and the two are different devices, the user-defined is discarded. Remark : In WMX3 3.5, user-defined slaves were reserved as virtual node, and inserted at the end of the network with available slave IDs.

  12. On CCLinkPlatform, changed RxMemAddr and TxMemAddr specifications. It allows arbitrary PDU size settings.

  13. On PMMotionApi, changed the PMMotion class member variables homeProfiles, velProfiles, and trqProfiles to private member variables.

  14. PVT, PVT interpolation, PT, VT, and AT commands have been moved from AdvancedMotion to CoreMotion.

  15. On EcPlatform, the maximum size of the Object Dictionary list has been extended from 50 to 256.

  16. Changed the argument type of StartEngine, RestartEngine, CreateDevice, and SetDeviceName to const char* in WMX3Api functions with char* arguments.

  17. When performing homing in Absolute Encoder Mode, the AbsoluteEncoderHomeOffset parameter has been changed to include the encoder value calculated from HomeShiftDistance. Previously, HomeShiftDistance was referenced in the calculation between the encoder value and the command position or feedback position, but it was not reflected in AbsoluteEncoderHomeOffset, so there was a problem where the position was not calculated correctly even if the same parameters were applied after the engine was reset.

  18. Changed to re-evaluate parameters related to Absolute Encoder Mode when the servo returns online from offline in Absolute Encoder Mode. This allows the HomeDone flag of the servo that has returned online to return to True.

  19. Changed the max number of channel in the Log module from 8 to 16.

  20. In position command mode, regneration attempt of a trapezoidal profile has been added if a profile generated during override execution cannot reach the target position (due to parameters, etc.). If the newly generated profile also cannot reach the target, the axis will switch to idle state, unlike the previous specification where the existing profile was performed.

Bug Fixes

  1. Fixed issue in which TimeAcc- profiles did not generate a profile with the correct acceleration time if the starting velocity is nonzero and there is no constant velocity segment.

  2. Fixed issue in which the API Log did not print out the correct data for the offset parameter of SetAbsoluteEncoderHomeOffset and GetAbsoluteEncoderHomeOffset.

  3. Fixed issue for the MechanicalEndDetectionReverseZP home type in which the axis decelerated at Homing Velocity Fast Dec instead of Homing Velocity Slow Dec when the mechanical end is detected.

  4. Fixed issue in which if the HomeDirection parameter is changed while homing, homing was not performed correctly for some home types.

  5. Fixed issue that started to occur from WMX3 v3.4u5 in which if a single turn axis is moved while the servo is off and the axis wraps around the single turn encoder range, the encoder command position became separated from the encoder feedback position, causing the axis to suddenly move when the servo is turned on.

  6. Fixed issue that the CurrentlyCollectingLogData error was returned when calling the SetMemoryLog function or the StartMemoryLog function if the RestartEngine function is called during memory log operation and then communication is started and the OpenMemoryLogBuffer function is called.

  7. Fixed issue that started to occur from WMX3 v3.4u5 in which if a single turn axis is moved by external force so that the feedback position wraps around the single turn encoder range and then the servo is turned off, the encoder command position became separated from the encoder feedback position, causing the axis to suddenly move when the servo is turned back on.

  8. Fixed path interpolation with look ahead issue in which the PathIntplLookaheadState::Stopped state was not defined in the .NET library. When using the .NET library, the PathIntplLookaheadState::Idle state was returned instead of PathIntplLookaheadState::Stopped while path interpolation with look ahead is stopping.

  9. Fixed issue that memory logs other than the items specified by SetMemoryLog were also retrieved when GetMemoryLogData was called with CoreMotionLogOutput specified as an argument. Among the member variables of CoreMotionLogOutput, the items that were not specified by SetMemoryLog are assigned 0 for numeric values and false for boolean values.

  10. Fixed issue in which the “Single Turn Reduce to Half Turn” motion parameter was not set to the default value (true) on engine startup.

  11. Fixed issue in which the StartPos, StartMov, and StartPosToJog functions with the numCommands and pTriggerEvents arguments caused invalid memory access when numCommands is out of range (<0 or >128).

  12. Fixed issue in which Stop, Velocity::Stop, and StopTrq functions called for axes that are not moving and waiting for a trigger condition returned immediately instead of waiting for the axis to change to Idle state when the “API Wait Until Motion Start” parameter is enabled. This caused the StartingPreviousCommand error to be returned if a StartPos/StartVel/StartTrq function is called immediately after Stop is called for an axis that is not moving and waiting for a trigger condition.

  13. Fixed API Buffer issue in which if the Execute function is called while an API Buffer is already executing a ApiBuffer::Wait command, any subsequent Execute, Halt, Clear, or Rewind functions will return the PrevSettingsBeingApplied error until the ApiBuffer::Wait command finishes. After the fix, no errors will be returned.

  14. Fixed issue for axes in servo off state in which the encoder command position was greater than the encoder feedback position by an amount equal to the change in compensation (backlash, pitch error) that cycle.

  15. Fixed issue for axes in servo off state in which the command position and feedback position oscillated if backlash compensation is enabled.

  16. Fixed issue for backlash compensation in which the compensation was applied one cycle late (for example, the backlash low is added one cycle after changing direction).

  17. Fixed issue in which jog and velocity functions did not return an error when the incompatible profile type TwoVelocityTrapezoidal, TwoVelocitySCurve, or TwoVelocityJerkRatio is specified.

  18. On M4Platform, fixed the problem that the SENS_ON command was not sent and the servo could not be turned on when the servo drive was operating in absolute encoder mode.

  19. On M4Platform, fixed the problem that communication start may fail when more than 16 slaves exist on the network, .

  20. On EcPlatform, fixed the issue that write data of SoE and VoE is not copied to packet correctly.

  21. On WMX3Engine, fixed the issue that info.pMP of normal axis was set to the one of pm axis when pm mode and cyclic mode are used in same time.

  22. On CCLinkPlatform, improved the error message in SlmpSend function of CUI, and eliminated data range limitations for one of its parameters.

  23. On CCLinkPlatform, modified the watchdog counter to count up on a time basis, and fixed an issue where it could cause communication errors with some slaves.

  24. On CCLinkApi, fixed an issue where the object in the callback argument would be null even of a response was successfully received in a SLMP send function which had object and callback as arguments.

  25. Fixed issue for Blending type interpolation overrides in which if all commanded axes are in Idle state when the override occurs, the commanded axes remain in interpolation state with no motion. There was a chance for this to occur if the API call of the interpolation command is interrupted by the cyclic processing and all the commanded axes complete their current interpolation command and change to Idle state during that cyclic processing. (This issue does not affect the FastBlending interpolation override type.)

  26. Fixed issue from v3.5u1 in which the starting position of the spline was calculated incorrectly for the StartCSplineMov and StartCBSplineMov functions when starting from a nonzero position.

  27. Fixed issue for velocity acceleration limited splines in which the acceleration limit could cause the velocity to be reduced by more than necessary.

  28. Fixed issue for 2D path interpolation and 2D path interpolation with rotation in which if the enableAutoSmooth option is enabled, a circular interpolation segment was not inserted between two linear interpolation segments if the starting position, end position, and/or the center position of the circular interpolation is within 1 user unit of each other. The minimum distance between the starting position, end position, and center position for the circular interpolation inserted this way has been changed to 1e-6 to reflect the specification changes from WMX3 v3.4u3.

  29. Fixed issue from v3.5u1 in which the overloaded StartPathIntplWithRotation functions with the point or pos argument ignored the values of these arguments (fixed issue in which path interpolation with rotation functions that moved the axes to a specific point or position along the path were not working).

  30. Fixed issue for path interpolation with rotation in which if the enableConstProfile option is enabled, the angleCorrectionMinimumAngle is not zero, and the point or pos argument is specified (the axes are moved to a specific point or position along the path instead of executing the entire path), and the specified point or position has an angle that is less than the angleCorrectionMinimumAngle, then the rotational axis moved to the incorrect angle after reaching the specified point or position.

  31. Fixed issue for path interpolation with look ahead from v3.5u1 in which the command positions of axes that are part of the path interpolation but not part of the currently executing segment were not calculated correctly.

  32. Fixed issue for path interpolation with look ahead from v3.5u1 in which outputs with trigger conditions that do not trigger before the next motion segment finishes were never set (normally, these outputs would be unconditionally set when the next motion segment finishes).

  33. Fixed issue for path interpolation with look ahead in which if the setSmoothingTime option is enabled, the axis command position was not calculated correctly at the beginning of the path unless the axis command position started from 0.

  34. Fixed issue for path interpolation with look ahead in which if the setSmoothingTime option is enabled and the stopOnEmptyBuffer option is enabled and the value of firstSmoothingTimeMilliseconds + secondSmoothingTimeMilliseconds is less for the first axis than any other axis, the path interpolation stopped before all axes are at their target positions.

  35. Fixed issue in which the execution of AddCommand function of the cyclic buffer fails with low probability even though the buffer is free.

  36. On EcPlatform, fixed the issue that a fixed sync start time error cased the DC shift calculation incorrect for the period 2ms/4ms/8ms.

  37. On EcPlatform, fixed the issue that DcDiffDetectSlaveId was written as DcDiffSlaveId in the information of statistics output on the Console Screen when PrintLog=1.

  38. On WMX3Engine, fixed the issue that one of the status channels may not work when multiple masters are activated.

  39. Fixed issue for 2D pitch error compensation in which the command position of axis0 could be set 0 if 2D pitch error compensation enabled.

  40. Fixed an issue in UserMemory where multiple settings for logging of analog data greater than 2 bytes were not logged correctly except for the last data. This fix increased the required buffer tick size in DataLog and MemoryLog by 110400 bytes.

  41. Fixed issue for absolute encoder mode in which if the engine was reset with homing using HomeShiftDistance completed, the command position and feedback position calculated from encoder value were incorrect even if the same parameters were applied. Please refer to the Specs Changes for details.

  42. Fixed issue for pitch error compensation and 2D pitch error compensation that the command potion and actual position of targe axis was not correctly initialized to 0 when performing homing.