Motion Scaling Properties

From SoftMC-Wiki
Revision as of 11:24, 24 October 2017 by Miborich (talk | contribs) (New Set of Scaling Properties)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Motion Scaling Properties

Background

A general motion is limited by set of properties defined in modal or nodal way. The set consists of maximum values (vmax/amax/dmax/jmax) and command values (vcruise/acc/dec/jerk). The maximum values are usually defined according to the physical limitation (motor, gear, drive, load inertia) of each axis, the command values are determined by the application. If the command value is higher than max value it is automatically limited. This is how it works on simple one-element basis. It means this rule is used in one-axis systems and in groups on group values. In multi-axis elements, groups or joints, there is another rule, the commanded values are further limited by axes' limits and this is done proportionally to the part of the movement executed in each axis.


Practically this means that the user generally takes the maximum limit of all axes' limits as the new group limit, this in order to enable full group motion ability.


Reducing speed

There are two methods of speed reduction, one is using Velocity-Override (VORD) factors (system or group) and the other is by using the command values. In both methods the results will be seen only after the reduced command velocity (means the product between Vcruise and VORD) is lower than the correspondent limit. What is correspondent limit is determined according to the above described rules.


So what we see is that if the maximum values are set far below the commanded ones we will not see any influence of the motion by changing command or VORD properties in a wide range of values. This typically occurs in groups where there is a big deviations between maximum values of belonging axes. Here is an example:


Let's assume we have a group of three axes: X, Y and Z. The maxium velocity values are:

X.vmax = 100 mm/sec

Y.vmax = 250 mm/sec

Z.vmax = 1000 mm/sec

In order to use the full spectrum of group capabilities we set:

XYZ.vmax = 1000 mm/sec and XYZ.vcruise = 1000 mm/sec. In this way we assure that motions like "MOVE {0,0,100} abs=0" will be executed in fastest possible velocity. Now, let's assume we have a multi-axis motion defined by: "MOVE {10,10,1} abs=0", as it can be seen the motion is basically limited by the values of X and Y axes. Reducing VORD from 100% to 50% will cause actual commanded group velocity to be 500 both well above limits of the X and Y axes. So, in this case reducing VORD by a halve will cause no effect on the actual motion speed!


Another missing issue is that there is no override-factor for the values of acceleration/deceleration and jerk.


The new set of scaling factors solves the above problems.

Description

A set of scaling factor is added to the system. Maximum values of velocity, acceleration, deceleration and jerk can be scaled independently of each other. The scaling is done both nodally and modally. It has the hierarchy of system/element/axis and on all these three levels different rate factors can be added. The feature assures reducing velocity independently of used command values.


NOTE-Info.svgNOTE
The maximum velocity value of an element is reduced by the product of velocity-rate (<element>.VelocityRate) of that element by the system-wide velocity-rate (Sys.VelocityRate). In cases of multiple axes groups the group's velocity rate will be used for group's limits and the axes's velocity rate will be used in checking individual axes' limits.
NOTE-Info.svgNOTE
Velocity, Acceleration, Deceleration and Jerk rate factors are acting off-line. It means the currently executing motion and the motion already pre-computed (the one that is pending in the buffer) will be not affected by the changes of these factors. Only the motions after these will take the changes. So in this point it differs form the VORD property.

Example:
?x.vrate→ 100
xy.vrate = 50
?xy.vrate→ 50

?x.vrate→ 50


NOTE-Info.svgNOTE
Changing one of the rate factors of a group automatically changes the relevant factor of each axis to the new value. The opposite is not true; changing axis factors will not cause a change in the group factor.


NOTE-Info.svgNOTE
System velocity override multiplies corresponding group and axis properties. It means that if the sys.vrate is 10 and the group's vrate is also 10 the actual velocity of the group will be reduced to 1%.


NOTE-Info.svgNOTE
If the command value is below the maximum value the rate factors will have no effects in the range between 100% and the ratio of command over max. value.
Example: Vmax = 1000 Vcruse = 500, then the vrate will have no effect in the range between 100% and 50%.

Properties

SYSTEM.VELOCITYRATE
SYSTEM.VELOCITYOVERRIDE

SYSTEM.ACCELERATIONRATE
SYSTEM.DECELERATIONRATE
SYSTEM.JERKRATE