Difference between revisions of "AXY:path-PLS"

From SoftMC-Wiki
Jump to: navigation, search
(PLSSource table - delete "new")
 
(15 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 +
<big><span style="color: red">'''Replaced by NEW PLS article - [[Programmable Limit Switch]]'''</span></big>
  
 +
<strike>
 +
 +
 +
 +
<div id="BackToTop"  class="noprint" style="background-color:; position:fixed; bottom:32px; left:95%; z-index:9999; padding:0; margin:0;">
 +
<span style="color:blue; font-size:8pt; font-face:verdana,sans-serif; border:0.2em outset:#ceebf7; padding:0.1em; font-weight:bolder; -moz-border-radius:8px; ">
 +
[[Image:TOP2.png|50px|link=#top]] </span></div>
 
= Introduction =
 
= Introduction =
  
Line 20: Line 28:
 
= Implementation =
 
= Implementation =
  
Path-PLSs can be defined in the same way as one-dimensional PLS.  Contrary to the one-dimensional PLSs the path-PLS can be activated only when explicitly given in a movement statement. Some of [[MC-Basic:axis.PLSSOURCE|Axis.PLSSource]] are especially to the path-PLS.
+
Path-PLSs can be defined in the same way as one-dimensional PLS.  Contrary to the one-dimensional PLSs the path-PLS can be activated only when explicitly given in a movement statement. Some of [[MC-Basic:element.PLSSOURCE|Axis.PLSSource]] are especially to the path-PLS.
  
== PLS Properties and Commands: ==
+
== PLS Properties and Commands ==
  
 
[[MC-Basic:COMMON SHARED ... AS PLS| Common Shared <pls> as PLS {<element>} <io> {Hwassistance = on/off} ]]
 
[[MC-Basic:COMMON SHARED ... AS PLS| Common Shared <pls> as PLS {<element>} <io> {Hwassistance = on/off} ]]
Line 36: Line 44:
 
Behaves the same as the regular PLS, but works on the selected '''PLSsource''' instead of the axis position.
 
Behaves the same as the regular PLS, but works on the selected '''PLSsource''' instead of the axis position.
  
[[MC-Basic:pls.PLSRELATEDO|PLSRELATEDO]]
+
[[MC-Basic:pls.PLSRELATEDTO|PLSRELATEDO]]
  
 
Flag used by '''oriented''' PLS-sources to define whether the PLSposition[*] is computed relative to the start(0) or to the target(1). For example, in '''PathLength''' it indicates whether the length is measured from the start or from the end of the motion. Default value is 0. If nothing is specified, all path-specific variables will be computed from the start.
 
Flag used by '''oriented''' PLS-sources to define whether the PLSposition[*] is computed relative to the start(0) or to the target(1). For example, in '''PathLength''' it indicates whether the length is measured from the start or from the end of the motion. Default value is 0. If nothing is specified, all path-specific variables will be computed from the start.
  
[[MC-Basic:axis.PLSSOURCE|PLSSOURCE]] <br/>
+
[[MC-Basic:element.PLSSOURCE|PLSSOURCE]] <br/>
<font color="green">
+
The following table summarizes the types of '''PLSSource'''.
The next table summarizes the '''PLSSource''' types:
 
</font>
 
 
{|border="1px" cellpadding="3" cellspacing="0"  
 
{|border="1px" cellpadding="3" cellspacing="0"  
 
| '''Source Name'''
 
| '''Source Name'''
Line 147: Line 153:
 
</pre>
 
</pre>
 
At point A the source changes its value from 100 to 0.<br/>
 
At point A the source changes its value from 100 to 0.<br/>
 
+
<br/>
 
Example:  '''PATHLENGTH''':
 
Example:  '''PATHLENGTH''':
 
<pre>
 
<pre>
Line 155: Line 161:
 
At point A the source changes its value from L<sub>1</sub>  to 0.<br/>
 
At point A the source changes its value from L<sub>1</sub>  to 0.<br/>
  
During joint-interpolated (MOVE) movements '''PathLength''' is not relevant since the physical dimensions of such a variable are non-existent. However, the option of using '''PathPercentage''' remains. For ''PathLength'' descriptor, if the units are not homogenous, the value in aggregate units is used. For CIRCLE interpolation this will be the angle on the circle-arc from the starting point.
+
During joint-interpolated (MOVE) movements '''PathLength''' is not relevant since the physical dimensions of such a variable are non-existent. However, the option of using '''PathPercentage''' remains. For '''PathLength''' descriptor, if the units are not homogenous, the value in aggregate units is used. For CIRCLE interpolation this will be the angle on the circle-arc from the starting point.
  
 
For''' PathPercentage''' all values of '''PlsPosition[]''', '''PlsHysteresis''' and '''PlsRepetition''' are in percentage units on a scale of 0 to 100. All values that are negative or above 100, are used as 0 or 100.
 
For''' PathPercentage''' all values of '''PlsPosition[]''', '''PlsHysteresis''' and '''PlsRepetition''' are in percentage units on a scale of 0 to 100. All values that are negative or above 100, are used as 0 or 100.
  
<font color="green"><br/>
+
Every local '''PLSSource''' can cause a change in I/O state at the start of the movement depending on the '''PLSPolarity''' definition (see [[MC-Basic:pls.PLSPOLARITY|PLSPOLARITY]]). The I/O will appear at the first sample of the movement without time delay, meaning that '''PlsDelayTime[0]''' or '''HWIOtime[0]''' will be equal to 0.
All local '''PLSSource''' can cause a change in IO state at the start of the movement that depend at '''PLSPolarity''' definition (sse [[MC-Basic:pls.PLSPOLARITY|PLSPOLARITY]] description) . The IO will appear at the first sample of the movement without time delay that mean '''PlsDelayTime[0]''' or '''HWIOtime[0]''' will be equal to 0.
 
</font>
 
  
 
+
{{Note | In an instance of two movements in which the first ends with '''VFinal > 0''', there will be no setting to '''!PLSPolarity''' at the start of the followed movement. The next toggling is done at the first PLS position of the second movement (see Example 7 below).}}<br/>
{{Note | In case of two movements when the first is ended with '''VFinal > 0'''. At the start of the followed movement there '''isn't''' setting to '''!PLSPolarity'''. The next toggling is done at the first PLS position of the second movement. See Example 7 below.}}<br/>
 
  
 
== PathTime  ==
 
== PathTime  ==
  
The time-based source is applicable in time-based profiles only [[MC-Basic:axis.PROFILERTYPE|prftype=2]], else an error is returned.
+
The time-based source is applicable in time-based profiles only [[MC-Basic:element.PROFILERTYPE|prftype=2]], else an error is returned.
  
 
{{Note | There are two categories of PLS-sources '''coordinate''' and '''œsingle'''. The only difference is observable during blending. The coordinate PLS-sources trigger the PLS output once per PLS-condition independently how many individual motions caused it. The single PLS-source trigger the PLS output as many times as the number of movements involved in the blended motion (could be maximally 2) }}<br/>
 
{{Note | There are two categories of PLS-sources '''coordinate''' and '''œsingle'''. The only difference is observable during blending. The coordinate PLS-sources trigger the PLS output once per PLS-condition independently how many individual motions caused it. The single PLS-source trigger the PLS output as many times as the number of movements involved in the blended motion (could be maximally 2) }}<br/>
Line 181: Line 184:
  
 
== PLS Tracking During Proceed Command ==
 
== PLS Tracking During Proceed Command ==
<font color="green"> <br/>
+
PLSSource can be defined as global or local, and as absolute or relative.   
PLSSource can be define as global or local and as absolute or relative.   
+
* '''Absolute''' - PLSSources that are positions in the spcase - PCMD , PFB, SetPoint1, SetPoint2 and SetPoint3.
* Absolute - PLSSources that are position in the spcase - PCMD , PFB, SetPoint1, SetPoint2 and SetPoint3.
+
* '''Relative''' - PLSSources that depend on the current movement as PLSLength, PLSPercentage and PLSTime.
* Relative - PLSSources that depend on the current movement as PLSLength, PLSPercentage and PLSTime.
+
* '''Global''' - PLSSources that are operated by the command '''PLSEnable'''.
* Global - PLSSources that are operated by '''PLSEnable''' command.
+
* '''Local''' - PLSSources that are connected to a specific movement, meaning they are operated by the command '''WithPLS'''.
* Local  - PLSSources that are connected to specific movement that mean that they are operated by '''WithPLS''' command.
 
  
The next table shows at what cases the PLS will be tracked during proceed command:
+
The following table shows how the PLS will be tracked during proceed command:
 
{|border="1px" cellpadding="3" cellspacing="0"  
 
{|border="1px" cellpadding="3" cellspacing="0"  
 
| '''PLSSource '''
 
| '''PLSSource '''
Line 206: Line 208:
 
|}
 
|}
 
<br/>
 
<br/>
</font>
 
  
 
== Notes  ==
 
== Notes  ==
Line 226: Line 227:
 
common shared P2 as pls GXY Sys.Dout.2
 
common shared P2 as pls GXY Sys.Dout.2
 
common shared P3 as pls GXY Sys.Dout.3
 
common shared P3 as pls GXY Sys.Dout.3
CreatePLSdata P1 2
+
CreatePLSdata 2 P1
CreatePLSdata P2 2
+
CreatePLSdata 2 P2  
CreatePLSdata P3 2
+
CreatePLSdata 2 P3  
  
 
P1.plsposition[1] = 10
 
P1.plsposition[1] = 10
Line 414: Line 415:
 
See Also: [[Concatenation of Movements| ConcatenationOfMovements]]
 
See Also: [[Concatenation of Movements| ConcatenationOfMovements]]
 
----
 
----
 +
 +
</strike>
 +
  
 
[[Category:Motion Control]]
 
[[Category:Motion Control]]
[[Category:Motion:PLS]]
+
<!-- [[Category:Motion:PLS]] -->
[[Category:Motion:HW-PLS]]
+
<!-- [[Category:Motion:HW-PLS]] -->
  
  

Latest revision as of 11:17, 16 October 2018

Replaced by NEW PLS article - Programmable Limit Switch


TOP2.png

Introduction

The path-PLS is associated with the motion nodally. Thus, instead of enabling/disabling using the command PLSEnable, the PLS will be automatically enabled at motion start and disabled at motion end. The motion path distance from the motion start, along the motion path, is the PLSsource variable of the PLS. Depending on the various interpolation modes, different PLSsource variables can be used:

  • Path length in position user units (e.g., mm) In case of straight line (MOVES) motion it is just a distance for the starting position. In case of joint interpolated motion (MOVE) there is no physical meaning of such a distance and in circular interpolation, we can choose between arc length and the angle from the starting point.
  • Percentage of the motion path from the start. This variable has the advantage that it is universal , means that it can be used in all motion types. However it has no physical meaning. Percentage can be very useful in motions having dominant orientation part.
  • Time elapsed from the motion start. This can be useful in certain application but can be applicable in time-based profiles only (PrfType = 2).
  • X,Y,Z coordinate. This is somehow a combination of path length and the percentage of the path, it has an advantage that it is a comfortable way of implementing application constrains. Also it can be applied to any type of motion interpolation. However, using it can cause multiple triggering of a same PLS position during one movement.

NOTE-Info.svgNOTE
  • All properties and behaviors of the path-PLS are identical to the regular PLS except when it is explicitly noted.
  • Contrary to the one-dimensional PLS, the path-PLS can be triggered using command values only. There are no feedback path-PLS sources.
  • Due to the complex nature of advanced interpolation path forms, the path-PLS is not applicable to these interpolation types.
  • The user must set the PLS output to the initial state. From then on, when the PLS is enabled, it will toggle the output. Disabling PLS does not affect the state of the digital output in any way.

Implementation

Path-PLSs can be defined in the same way as one-dimensional PLS. Contrary to the one-dimensional PLSs the path-PLS can be activated only when explicitly given in a movement statement. Some of Axis.PLSSource are especially to the path-PLS.

PLS Properties and Commands

Common Shared <pls> as PLS {<element>} <io> {Hwassistance = on/off}

Command for PLS language object definition. Can get an element as robots or groups. Joint-based or non-robot based PLSs are not allowed. Path-PLSs are PLSs defined on elements that are robots and not axes.

PLSENABLE

Enabling of path-PLS is done through nodal assignment only. Thus, setting this variable will return an error except when PLSsource = XCOO/YCOO/ZCOO. Querying this value will return the current state of a path-PLS depending on the movement being executed.

PLSREPEAT

Behaves the same as the regular PLS, but works on the selected PLSsource instead of the axis position.

PLSRELATEDO

Flag used by oriented PLS-sources to define whether the PLSposition[*] is computed relative to the start(0) or to the target(1). For example, in PathLength it indicates whether the length is measured from the start or from the end of the motion. Default value is 0. If nothing is specified, all path-specific variables will be computed from the start.

PLSSOURCE
The following table summarizes the types of PLSSource.

Source Name One-dimensional
PLS
Path-PLS Description During
Blending
Related to
Start/Target
POSITIONCOMMAND no Axis position command Coordinate No
POSITIONFEEDBACK no Axis position feedback
POSITIONEXTERNAL no External position
Setpoint1 no X axis position (SetPoint{1} value).
Setpoint2 no Y axis position (SetPoint{2} value).
Setpoint3 no Z axis position (SetPoint{3} value).
PathLength Length of the path in user units. Single Yes
PathPercentage Percentage of the path.
PathTime Time duration in ms.


WITHPLS

Nodal assignment of path-PLS used for enabling path-PLS during motion. The WithPLS command specifies the PLSs that will be enabled during execution of the given motion and disabled when the motion ends.

Related Properties and Commands

Path Percentage and Path Length

PLSsource can be PATHPERCENTAGE and PATHLENGTH. These are special types of position sources, both discontinuous variables that changes their values abruptly at the point where two movements are executed one after another.

Example: PATHPERCENTAGE

MOVE A  PLSSOURCE 0→100
MOVE B  PLSSOURCE 0→100

At point A the source changes its value from 100 to 0.

Example: PATHLENGTH:

MOVE A  PLSSOURCE 0 → L1
MOVE B  PLSSOURCE 0 → L2

At point A the source changes its value from L1 to 0.

During joint-interpolated (MOVE) movements PathLength is not relevant since the physical dimensions of such a variable are non-existent. However, the option of using PathPercentage remains. For PathLength descriptor, if the units are not homogenous, the value in aggregate units is used. For CIRCLE interpolation this will be the angle on the circle-arc from the starting point.

For PathPercentage all values of PlsPosition[], PlsHysteresis and PlsRepetition are in percentage units on a scale of 0 to 100. All values that are negative or above 100, are used as 0 or 100.

Every local PLSSource can cause a change in I/O state at the start of the movement depending on the PLSPolarity definition (see PLSPOLARITY). The I/O will appear at the first sample of the movement without time delay, meaning that PlsDelayTime[0] or HWIOtime[0] will be equal to 0.

NOTE-Info.svgNOTE
In an instance of two movements in which the first ends with VFinal > 0, there will be no setting to !PLSPolarity at the start of the followed movement. The next toggling is done at the first PLS position of the second movement (see Example 7 below).

PathTime

The time-based source is applicable in time-based profiles only prftype=2, else an error is returned.

NOTE-Info.svgNOTE
There are two categories of PLS-sources coordinate and œsingle. The only difference is observable during blending. The coordinate PLS-sources trigger the PLS output once per PLS-condition independently how many individual motions caused it. The single PLS-source trigger the PLS output as many times as the number of movements involved in the blended motion (could be maximally 2)

NOTE-Info.svgNOTE
In case of PLSsource from type length, percentage or time there is no continues in toggling no matter if the PLS was global enabled using PLSEnable or local using WithPLS.

Setpoint1, Setpoint2, Setpoint3

SetPoint sources are the virtual Cartesian axes, defined in the robot world frame (i.e., setpoint). Not relevant for Group without a defined kinematics. Those sources can be tracked independently at a specific movement (using PLSEnable ).

During Conveyor Tracking, values of Setpoint1, Setpoint2, Setpoint3 will assume values on absolute robot coordinates (i.e., setpoint, here) and not robot frame coordinates moving with the robot.

During joint-interpolated (MOVE) movements, values of Setpoint1, Setpoint2, Setpoint3 will be linearly interpolated between the samples. Therefore, depending on the sample rate and velocity, an interpolation error may occur.

PLS Tracking During Proceed Command

PLSSource can be defined as global or local, and as absolute or relative.

  • Absolute - PLSSources that are positions in the spcase - PCMD , PFB, SetPoint1, SetPoint2 and SetPoint3.
  • Relative - PLSSources that depend on the current movement as PLSLength, PLSPercentage and PLSTime.
  • Global - PLSSources that are operated by the command PLSEnable.
  • Local - PLSSources that are connected to a specific movement, meaning they are operated by the command WithPLS.

The following table shows how the PLS will be tracked during proceed command:

PLSSource Absolute Relative
Global Tracking Track will start from first PLS position at the buffer.
Local Tracking No tracking as the original path is no longer relevant.


Notes

NOTE-Info.svgNOTE
Path-PLS feature is not applicable for JOG, DELAY , PASS and DOPASS commands. An error will be returned.

NOTE-Info.svgNOTE
Stop command disables all PLSs given in the currently executing motion.


Refer to: PLS Timing Issues

Examples

Example 1

Using length of the path (distance from starting point) for the position source. Note the default value of PLSRelateTo is zero, therefore all given PLSposition values are computed from the motion start.

common shared GXY as group of axnm = A1 axnm = A2 of XY
common shared P1 as pls GXY Sys.Dout.1
common shared P2 as pls GXY Sys.Dout.2
common shared P3 as pls GXY Sys.Dout.3
CreatePLSdata 2 P1  
CreatePLSdata 2 P2 
CreatePLSdata 2 P3 

P1.plsposition[1] = 10
P1.plsposition[2] = 90
P2.plsposition[1] = 10
P2.plsposition[2] = 90
P3.plsposition[1] = 10
P3.plsposition[2] = 90

GXY.PLSsource = PathLength 
GXY.en = 1
MOVES {100,0} WithPLS = P1
MOVES {0,100} WithPLS = P2
MOVES {0,0}   WithPLS = P3

Axystems;Path-pls-example1.png

Example 2

Using Cartesian axis limits for position source (Setpoint1).

common shared GXY as group of axnm = A1 axnm = A2 of XY
common shared P1 as pls GXY Sys.Dout.1
CreatePLSdata P1 2 
P1.plsposition[1] = 10
P1.plsposition[2] = 100
GXY.PLSsource = Setpoint1
GXY.en = 1
MOVES {0,0} 
MOVES {200,200} WithPLS = P1

Example 3

Using path percentages to switch on/off an output during the motion. Two PL-positions are defined: one at 0% (motion start) and one at motion end (100%). Practically, this means the output will be ON during execution of the entire motion and will be switched OFF at the motion end. The default value of PLSRelatedTo determines that the percentage is calculated from the motion start.

common shared GXY as group of axnm = A1 axnm = A2 of XY
common shared P1 as pls GXY Sys.Dout.1
CreatePLSdata P1 2 
P1.plsposition[1] = 0
P1.plsposition[2] = 100
GXY.PLSsource = PathPercentage 
GXY.en = 1
MOVES {0,0} 
MOVES {200,200} WithPLS = P1

Axystems;Path-pls-example3.png

Example 4

Switching between two movements (not blended). If two motions with the same PLS are executed one after another, the PLS will be switched OFF within duration of one sample where the path-percentage changes from 100% (first motion) to 0% (second motion). The PLS remains enabled throughout the execution of the motion.

common shared GXY as group of axnm = A1 axnm = A2 of XY
common shared P1 as pls GXY Sys.Dout.1
CreatePLSdata P1 2 
P1.plsposition[1] = 0
P1.plsposition[2] = 100
GXY.PLSsource = PathPercentage 
GXY.en = 1
MOVES {0,0} 
MOVES {200,200} WithPLS = P1
MOVES {300,300} WithPLS = P1

Example 5

Switching between two blended movements.

The example shows the system behavior when the PLS-Source is of single type. During actual blending (time when two motions are executed simultaneously) the system considers two independent variables passing the given PLS values (simultaneously).

  • path length (or a percentage of it) of the first motion is checked if passing the PLSpositions
  • path length (or a percentage of it) of the second motion is checked if passing the PLSpositions

Thus, if two motions with the same PLS (having pos. on 0%,100%) are blended, the PLS output will be switched OFF during the "double movement" phase (when both motions are superposed/blended).

common shared GXY as group of axnm = A1 axnm = A2 of XY
common shared P1 as pls GXY Sys.Dout.1
CreatePLSdata P1 2 
P1.plsposition[1] = 0
P1.plsposition[2] = 100
GXY.PLSsource = PathPercentage
GXY.BlendingMwthod = 2
GXY.BlendignFactor = 90
GXY.en = 1
MOVES {0,0} 
MOVES {200,200} WithPLS = P1
MOVES {300,300} WithPLS = P1

Example 6

Switching the PLS on same distance from beginning and the end of the motion.

common shared GXY as group of axnm = A1 axnm = A2 of XY
common shared P1 as pls GXY Sys.Dout.1
common shared P2 as pls GXY Sys.Dout.2
common shared P3 as pls GXY Sys.Dout.3
CreatePLSdata P1 2 
CreatePLSdata P2 2
CreatePLSdata P3 2

P1.plsposition[1] = 10
P1.plsposition[2] = 70
P1.plsRelatedTo   = 0

P2.plsposition[1] = 10
P2.plsposition[2] = 70
P2.plsRelatedTo   = 1

P3.plsposition[1] = 10
P3.plsposition[2] = 70
P3.plsRelatedTo   = 0

GXY.PLSsource = PathLength 
GXY.en = 1
MOVES {100,0} WithPLS = P1
MOVES {0,100} WithPLS = P2
MOVES {0,0}   WithPLS = P3

Example 7

Shows the difference in serial movement once that are blend with Vfinal>0 . In both cases the PLSsource is from type percentage.

Serial movements with VFinal > 0

 common shared pathpls as pls GXY sys.DOut.1 HWAssistance =  TRUE

 createplsdata 1 pathpls 
 pathpls.plsposition[1] = 100
 pathpls.plspropagationdelay = 0
 pathpls.plspolarity  = 0
 plssource = pathpercentage

 sys.DOut.1 = 0
 move {100,100} vcruise = 100 vfinal = 100
 move {100,0} vcruise = 100   vfinal = 100 withpls = pathpls
 circle angle = -90 circlecenter = {0,0}   vcruise = 100 withpls = pathpls

caption Shows axes pcmd , IO (X20) and PLSEnable(X40)


Serial movements with VFinal = 0

 common shared pathpls as pls GXY sys.DOut.1 HWAssistance =  TRUE

 createplsdata 1 pathpls 
 pathpls.plsposition[1] = 100
 pathpls.plspropagationdelay = 0
 pathpls.plspolarity  = 0
 plssource = pathpercentage

 sys.DOut.1 = 0
 move {100,100} vcruise = 100 
 move {100,0} vcruise = 100    withpls = pathpls
 circle angle = -90 circlecenter = {0,0}   vcruise = 100 withpls = pathpls

caption Shows axes pcmd , IO (X20) and PLSEnable(X40)

See Also: ConcatenationOfMovements