v3.2u1 to v3.3 Change Log (November 1, 2018)
Installer Changes
Change installation of runtime, RTX, WMX3 to silent installation.
Added WMX3 option installation function.
Support installing NIC and setting various RTX from installer.
Display the current installation and setup status on the installer.
New Functions
Motion
Implemented StartCoordinatedPos overload that takes a CoordinatedJerkRatioPosCommand argument. The follower axes execute a fixed-time jerk ratio profile to complete in the same time as the master axis. Multiple follower axes can be specified in one function call.
Added SetWatch/GetWatch functions to ApiBuffer. This function will cause the buffer to watch the specified axes for servo off, offline, amp alarm, and limit switch errors, and stop the buffer execution when any of these errors are detected. The watch function will check for these errors once every communication cycle. Also, the watch trigger routine can be set to execute another channel’s API buffer when the watch error occurs. Added WatchError, WatchErrorCode, and WatchErrorAxis to status.Added NandIOBit, NorIOBit, XnorIOBit, NandMBit, NorMBit, and XnorMBit event input types to the Event class.
Added SetOptions and GetOptions functions to ApiBuffer module.
Added enableAutoSmooth and autoSmoothRadius parameters to 3D path interpolation.
Implemented two link motion functions (8 functions).
Added motion completed flag. This flag is set to 1 when a motion command successfully completes, without any interruptions such as Stop, alarms, limit switches, etc.
Added path interpolation output functions to set an I/O output at particular positions along a path interpolation or path interpolation with rotation.
Added Completed Time trigger type.
Added option to path interpolation with look ahead to automatically switch to stopped state when the final point in the buffer is executed.
Platform
Added mask parameter for WriteTxPdo API to write specified bits.
Added API ClearTxPdoWrite to clear TxPdo write data.
Support alarm, servo on, home switch and limit switch simulation with specified IO.
Specs Changes
Motion
Removed ApiBufferOptions optional argument from Execute function in ApiBuffer module.
Modified the DEN (commandDistributionEnd) flag status to be set to 0 when in most non-Idle states. This fixes, for example, the issue in which the DEN flag was set to 1 immediately after starting a quick stop.
Moved ECAM, Dancer Control, Constant Linear Vel, CSpline/CBSpline, PVT/PT/VT/AT, Path Interpolation, Path Interpolation with Rotation, Path Interpolation with Look Ahead, Coordinated Position, and Simulate Path Interpolation functions from the CoreMotion module to the AdvancedMotion module. Related structures, errors, states, etc. have also been moved.
Removed List Motion module.
Moved several error codes to different enum classes. Reassigned several error code values.
Modified StartPVT function to return TimeArgumentOutOfRange error instead of ArgumentOutOfRange for errors concerning the time parameter.
Modified StartECAM function to return an error if the slave axis is in servo off state.
Modified StartECAM to return an error if the clutch type is SimpleCatchUp, but the SimpleCatchUpVelocity or SimpleCatchUpAcc arguments are out of range.
Modified AxisLimit type linear interpolations to ignore negative maximum velocity, maximum acc, etc.
Modified to skip updating the cyclic statuses of offline axes.
Modified path interpolation to always prohibit overtravel.
Platform
Changed EcAPI class and functions names for consistency and easy to understand.
Bug Fixes
Motion
Fixed issue in which API buffer channel 254 could not be used even though constants::maxApiBufferChannel is 255.
Fixed issue in which SimulateTimeAtDist for linear interpolation crashed the engine if the number of axes is greater than 2.
Fixed limit switch cancel motion not working for commands generated in modules other than CoreMotion.
Fixed issue in which the interpolation segment status was not cleared when executing a linear or circular interpolation after finishing an interpolation command with interpolation segments (such as path interpolation or spline interpolation).
Fixed issue in which certain events and trigger events could evaluate incorrectly if the axis state changes while the event is being processed.
Fixed issue in which ProfileRemainingTime status and triggered motion and events that reference the remaining cycle time were not working correctly with 3D Path Interpolation.
Fixed path interpolation with lookahead issue in which the positions of the axes not commanded by the first interpolation segment upon starting or resuming execution were incorrectly set to 0.
Fixed path interpolation with look ahead issue in which 3D circular interpolations that have no motion in one of the three axes could cause the motion to stop at that command.
Fixed path interpolation with look ahead issue in which pauses may be inserted incorrectly.
Fixed issue in which single turn and gear ratio did not work correctly when set together. For example, the feedback position became incorrect with gear ratio = 41943040 / 360 and single turn encoder = 41943040.
Fixed issue in which single turn axes stopped updating the feedback position after moving in one direction for 2^63 pulses.
Fixed issue in which single turn axis command and feedback positions strayed from each other for certain single turn encoder counts not evenly divisible into 2^32 after moving for 2^32 pulses.
Fixed single turn axis command potentially becoming incorrect when moving from less than the single turn encoder count to over 2^32 in one cycle.
Fixed issue in which max torque limit, positive torque limit, and negative torque limit parameters were applying 1/10 of the specified value.
Fixed issue in which the command position could suddenly change when homing single turn axes with certain large gear ratios.
Fixed issue in which the axis position command suddenly changed to 0 for path interpolation triggered motion, while the trigger condition has not been satisfied.
Fixed issue in which compPosCmd status sometimes did not stay within the single turn encoder count range for single turn axes.
Fixed issue with the feedback position, command position, encoder feedback position, or encoder command position changing when changing single turn mode after homing.
Fixed issue which caused the engine to crash rarely and randomly when starting communication with certain module settings and platforms.
Fixed typo in the error to string message for the WatchTriggerRoutineChannelSameAsExecChannel error.
Fixed issue in which RemainingDistance and CompletedDistance triggered motion position commands with the trigger value equal to 0 (remaining distance) or the target (completed distance) caused the trigger motion to have one cycle of zero velocity before starting.
Fixed issue in which overtravel could occur when the “prohibit overtravel” parameter is enabled when executing a Pause or Stop function for positioning or interpolation functions. (For example, pause or stop can be executed for a S-curve profile immediately after it starts to decelerate.)
Fixed issue in which blank profile might be generated for non-profile-type spline and path interpolation with look ahead, after using profile-type spline.
Fixed issue in which the engine crashed if an out of bounds axis is specified for StartPos functions.
Fixed issue in which simulate functions returned incorrect values for certain inputs, such as when using the Advanced-S profile and when the peak velocity is the end velocity.
Fixed issue in which simulate functions and profile time statuses for path interpolation returned incorrect values for certain inputs, such as when the end velocity of a segment is nonzero.
Fixed a bug that the number of axes can be specified only up to 7 axes in the following four output events.
EventOutputFunction::StartMultiplePos
EventOutputFunction::StartMultipleMov
EventOutputFunction::StartIntplPos
EventOutputFunction::StartIntplMov
Fixed an issue that ApiBuffer -> GetStatus () can not be used when calling the constructor of ApiBuffer before CreateDevice () of wmx3Api.
Platform
Update correct IO start address when both IO and Digital IO exist.