Difference between revisions of "AXY:path-PLS"

From SoftMC-Wiki
Jump to: navigation, search
m (Introduction)
 
(76 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 10: Line 18:
  
 
<br/>{{Note|}}
 
<br/>{{Note|}}
::All properties and behaviors of the path-PLS are identical to the regular PLS except when it is explicitly noted.
+
::*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.
+
::*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.
+
::*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.
+
::*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 =
 
= 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 [[Axystems: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: ==
 
 
 
[[Axystems:MC-Basic:COMMON SHARED ... AS PLS | 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. So, path-PLSs are PLSs defined on elements that are robots and not axes.
 
  
[[Axystems:MC-Basic:pls.PLSENABLE|PLSENABLE]]
+
== PLS Properties and Commands ==
  
Enabling of path-PLS will be done through nodal assignment only. So, setting of 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.
+
[[MC-Basic:COMMON SHARED ... AS PLS| Common Shared <pls> as PLS {<element>} <io> {Hwassistance = on/off} ]]
  
[[Axystems:MC-Basic:pls.PLSREPEAT|PLSREPEAT]]
+
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.
  
Behaves in the same way as regular PLS. Just in this case it works on the selected '''''PLSsource''''' instead of axis position.
+
[[MC-Basic:pls.PLSENABLE|PLSENABLE]]
  
[[Axystems:MC-Basic:pls.PLSRELATEDO|PLSRELATEDO]]
+
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.
  
Flag used by '''oriented''' PLS-sources defining if the PLSposition[*] is computed relative from the start(0) or to the target(1).
+
[[MC-Basic:pls.PLSREPEAT|PLSREPEAT]]
For example in case of ''PathLength'' it means if the length is measured from the start or from the end of the motion.
 
  
It ''default'' value will be '''0''' so if nothing said all path-specific variables will be computed from the start.
+
Behaves the same as the regular PLS, but works on the selected '''PLSsource''' instead of the axis position.
  
[[Axystems:MC-Basic:axis.PLSSOURCE|PLSSOURCE]]
+
[[MC-Basic:pls.PLSRELATEDTO|PLSRELATEDO]]
  
In addition to adding this property to groups and robots, new assignment values will be defined:
+
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:element.PLSSOURCE|PLSSOURCE]] <br/>
 +
The following table summarizes the types of '''PLSSource'''.
 
{|border="1px" cellpadding="3" cellspacing="0"  
 
{|border="1px" cellpadding="3" cellspacing="0"  
| '''Soruce Name'''
+
| '''Source Name'''
 
| '''One-dimensional<br> PLS'''
 
| '''One-dimensional<br> PLS'''
 
| '''Path-PLS'''
 
| '''Path-PLS'''
Line 59: Line 62:
 
| ✓  
 
| ✓  
 
| no
 
| no
| Axis position command.
+
| Axis position command  
| rowspan="6"|'''coordinate'''
+
| rowspan="6"|Coordinate
| rowspan="6"|''' No '''
+
| rowspan="6"|No
  
 
|-
 
|-
| ''POSITIONFEEDBACK''
+
| POSITIONFEEDBACK  
 
| ✓  
 
| ✓  
 
| no
 
| no
Line 70: Line 73:
  
 
|-
 
|-
| ''POSITIONEXTERNAL''
+
| POSITIONEXTERNAL  
 
| ✓  
 
| ✓  
 
| no
 
| no
Line 76: Line 79:
  
 
|-
 
|-
| Setpoint1<sup>new</sup>
+
| Setpoint1
 
| no
 
| no
 
| ✓  
 
| ✓  
Line 82: Line 85:
  
 
|-
 
|-
| Setpoint2<sup>new</sup>
+
| Setpoint2
 
| no
 
| no
 
| ✓  
 
| ✓  
Line 88: Line 91:
  
 
|-
 
|-
| Setpoint3<sup>new</sup>
+
| Setpoint3
 
| no
 
| no
 
| ✓  
 
| ✓  
Line 94: Line 97:
  
 
|-
 
|-
| PathLength<sup>new</sup>
+
| PathLength
 
| ✓  
 
| ✓  
 
| ✓  
 
| ✓  
 
| Length of the path in user units.
 
| Length of the path in user units.
| rowspan="3"  | '''single'''
+
| rowspan="3"  | Single
| rowspan="3"  | ''' Yes '''
+
| rowspan="3"  | Yes
  
 
|-
 
|-
| PathPercentage<sup>new</sup>
+
| PathPercentage
 
| ✓  
 
| ✓  
 
| ✓  
 
| ✓  
Line 108: Line 111:
  
 
|-
 
|-
| PathTime<sup>new</sup>
+
| PathTime
 
| ✓  
 
| ✓  
 
| ✓  
 
| ✓  
Line 116: Line 119:
 
<br/>
 
<br/>
  
[[Axystems:MC-Basic:WITHPLS|WITHPLS]]
+
[[MC-Basic:WITHPLS|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.  
 
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 command =====   
+
===== Related Properties and Commands =====   
*[[Axystems:MC-Basic:pls.PLSENABLE|PLSENABLE]] <br>
+
*[[MC-Basic:pls.PLSENABLE|PLSENABLE]]  
*[[Axystems:MC-Basic:pls.PLSREPEAT|PLSREPEAT]] <br>
+
*[[MC-Basic:pls.PLSREPEAT|PLSREPEAT]]  
*[[Axystems:MC-Basic:pls.HWASSISTANCE|HWASSISTANCE]] <br>
+
*[[MC-Basic:pls.HWASSISTANCE|HWASSISTANCE]]  
*[[Axystems:MC-Basic:pls.PLSHYSTERESIS|PLSHYSTERESIS]] <br>
+
*[[MC-Basic:pls.PLSHYSTERESIS|PLSHYSTERESIS]]  
*[[Axystems:MC-Basic:pls.PLSAXISNAME|PLSAXISNAME]] <br>
+
*[[MC-Basic:pls.PLSAXISNAME|PLSAXISNAME]]  
*[[Axystems:MC-Basic:pls.PLSEMENTNAME|PLSELEMENTNAME]] <br>
+
*[[MC-Basic:pls.PLSEMENTNAME|PLSELEMENTNAME]]  
*[[Axystems:MC-Basic:pls.PLSPropagationEnableDelay|PLSPropagationEnableDelay]] <br>
+
*[[MC-Basic:pls.PLSPropagationEnableDelay|PLSPropagationEnableDelay]]  
*[[Axystems:MC-Basic:pls.PLSPropagationDisableDelay|PLSPropagationDisableDelay]]<br>
+
*[[MC-Basic:pls.PLSPropagationDisableDelay|PLSPropagationDisableDelay]]
*[[Axystems:MC-Basic:pls.PLSPropagationDelay|PLSPropagationDelay]] <br>
+
*[[MC-Basic:pls.PLSPropagationDelay|PLSPropagationDelay]]  
*[[AXY:PLS On/Off delay| PLS On/Off delay]] <br>
+
*[[AXY:PLS On/Off delay| PLS On/Off delay]]  
*[[Axystems:MC-Basic:pls.HWIOtime|HWIOtime]]<br>
+
*[[MC-Basic:pls.HWIOtime|HWIOtime]]
*[[Axystems:MC-Basic:pls.PLSOUTPUT|PLSOUTPUT]]<br>
+
*[[MC-Basic:pls.PLSOUTPUT|PLSOUTPUT]]
*[[Axystems:MC-Basic:pls.PLSPOLARITY|PLSPOLARITY]]<br>
+
*[[MC-Basic:pls.PLSPOLARITY|PLSPOLARITY]]
*[[Axystems:MC-Basic:pls.PLSPOSITION|PLSPOSITION]]<br>
+
*[[MC-Basic:pls.PLSPOSITION|PLSPOSITION]]
*[[Axystems:MC-Basic:pls.PLSdelaytime|PLSdelaytime]]<br>
+
*[[MC-Basic:pls.PLSdelaytime|PLSdelaytime]]
*[[Axystems:MC-Basic:CREATEPLSDATA|CREATEPLSDATA]]<br>
+
*[[MC-Basic:CREATEPLSDATA|CREATEPLSDATA]]
*[[Axystems:MC-Basic:DELETEPLS|DELETEPLS]]<br>
+
*[[MC-Basic:DELETEPLS|DELETEPLS]]
*[[Axystems:MC-Basic:PLSLIST|PLSLIST]]
+
*[[MC-Basic:PLSLIST|PLSLIST]]
  
 
== Path Percentage and Path Length ==
 
== Path Percentage and Path Length ==
  
PLSsources can be from type '''PATHPERCENTAGE''' and '''PATHLENGTH'''. Those are special kind of position sources, both of them are dis-continuous variables that changes their values abruptly. It happens at the point where two movements are executed one after another. In case of '''PATHPERCENTAGE''' it is:
+
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'''
 
<pre>
 
<pre>
 
MOVE A  PLSSOURCE 0→100
 
MOVE A  PLSSOURCE 0→100
 
MOVE B  PLSSOURCE 0→100
 
MOVE B  PLSSOURCE 0→100
 
</pre>
 
</pre>
 
+
At point A the source changes its value from 100 to 0.<br/>
so at the point A the source changes its value from 100 to 0!!
+
<br/>
 
+
Example:  '''PATHLENGTH''':
Similar is with '''PATHLENGTH''':
 
 
 
 
<pre>
 
<pre>
 
MOVE A  PLSSOURCE 0 → L1
 
MOVE A  PLSSOURCE 0 → L1
 
MOVE B  PLSSOURCE 0 → L2
 
MOVE B  PLSSOURCE 0 → L2
 
</pre>
 
</pre>
 +
At point A the source changes its value from L<sub>1</sub>  to 0.<br/>
  
so at the point A the source changes its value from L<sub>1</sub>  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.
  
During joint-interpolated (MOVE) movements '''PathLength''' is not relevant as the physical dimensions of such variable are non-existent. However, the option of using '''PathPercentage''' is kept. For ''PathLength'' descriptor, if the units are not homogenous the value in aggregate units is used. In case of 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.
Using ''' PathPercentage''' all values of '''PlsPosition[]''' , '''PlsHysteresis''' and '''PlsRepetition''' are in percentage units and are in scale of 0 to 100. All values that are negative or above 100 are '''silently''' used as 0 or 100.
 
Enabling PLS follows by checking the current position compare to the PLS position and if there is need the IO is changed to be at its right state according to '''PlsPolarity'''. As those '''PlsSource''' types are locally this checking is done at when the movement starts. The PLS polarity is set to be '''''!PLSPolarity''''' so at when reaching the first PLS position the IO will toggle to be as the request value of '''''PLSPolarity'''''. So if the PLS position is appeared at the first sample of the movement the IO will be set but without time delay value that means '''PlsDelayTime[0]''' or '''HWIOtime[0]''' return 0.
 
  
{{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.}}
+
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.
 +
 
 +
{{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/>
  
 
== PathTime  ==
 
== PathTime  ==
  
The time-based source is applicable in time-based profiles only [[Axystems: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) }}
+
{{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 | 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'''''. }}
+
{{Note | 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'''. }}<br/>
  
== Setpoint1 , Setpoint2 , Setpoint3 ==
+
== 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 ''').
+
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 an interpolation error depending on the sample rate and velocity can occur.
 
  
== Pls tracking during Proceed command ==
+
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.
Tracking the pls in case of proceed command is not trivial. The pls can be put into two categories - absolute and relative. Absolute are pls that are not depend in the current movement and are position in space - pcmd , pfb, xcoo, ycoo and zcoo. The relative pls are those how depend on the current movement - length, percentage and time. Another two categories of pls are global and local. Local refers to those how are enable just at a specific movement using the WithPls command otherwise it is a global pls.
 
Tracking the pls during proceed command depends on the pls type. Global pls from type absolute will continue to be followed. A global relative pls will be also followed but the proceed is consider to be a new movement. For example if the source pls is from type percentage and the movement was stopped after 50% of its length so it passed the first 5 pls that are in the buffer. In this case when executing a proceed command the tracking will be started from the first pls in the buffer , the percentage is now according to the length of the proceed command.
 
In case of local pls , again the behavior is changed according to the type. In case of an absolute pls the tracking will continued during proceed command. In case of relative pls - as the path length in proceed command is not the original one and a local pls is specific to the original movement those pls won't be tracked.
 
  
== Global Notes ==
+
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.
  
{{Note | Path-PLS feature is not applicable for JOG, DELAY , PASS and DOPASS commands. An error will be returned.}}
+
== PLS Tracking During Proceed Command ==
{{Note | Stop command disables all PLSs given in the currently executing motion.}}
+
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:
 +
{|border="1px" cellpadding="3" cellspacing="0"
 +
| '''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.
 +
 
 +
|}
 +
<br/>
  
----
+
== Notes  ==
  
Useful link: [[Axystems:PLS Timing Issues]]
+
{{Note | Path-PLS feature is not applicable for JOG, DELAY , PASS and DOPASS commands. An error will be returned.}}<br/>
 +
{{Note | Stop command disables all PLSs given in the currently executing motion.}}
 +
<br/>
 +
Refer to: [[PLS Timing Issues]]
  
 
= Examples =
 
= Examples =
Line 196: Line 220:
 
== Example 1 ==
 
== Example 1 ==
  
Using length of the path (distance from starting point) for the position source. Note that '''default''' value of PLSRelateTo is zero therefore all given PLSposition values are computed from the motion start.
+
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.
  
 
<pre>
 
<pre>
Line 203: 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 223: Line 247:
 
[[File:Axystems;Path-pls-example1.png|600px]]
 
[[File:Axystems;Path-pls-example1.png|600px]]
  
== example 2 ==
+
== Example 2 ==
  
 
Using Cartesian axis limits for position source (Setpoint1).
 
Using Cartesian axis limits for position source (Setpoint1).
Line 240: Line 264:
 
<gallery widths=400px heights=400px> Image:Axystems;Path-pls-example2.png | DOUT 1 is triggered when the path passes value X = 10 and X = 100 </gallery>
 
<gallery widths=400px heights=400px> Image:Axystems;Path-pls-example2.png | DOUT 1 is triggered when the path passes value X = 10 and X = 100 </gallery>
  
== example 3 ==
+
== Example 3 ==
 
 
 
 
Using path-percentages to switch on/off an output during the motion. We define two PL-positions on at 0% (motion start) and one at motion end (100%). This practically means that the output will be ON during execution of the whole motion and will be switched OFF at the motion end. Again the default value of PLSRelatedTo determines that the percentage is calculated from the motion start.
 
  
 +
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.
  
 
<pre>
 
<pre>
Line 260: Line 282:
 
[[File:Axystems;Path-pls-example3.png]]
 
[[File:Axystems;Path-pls-example3.png]]
  
== example 4  ==
+
== Example 4  ==
 
 
 
 
Switching between two movements ('''not blended'''). If two motions with same PLS are executed one after another the PLS will be switched OFF in duration of one sample where the path-percentage changes from 100% (first motion) to 0% (second motion). ''The PLS remains enabled all the time motion is executing.''
 
  
 +
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.
  
 
<pre>common shared GXY as group of axnm <nowiki>= A1 axnm = A2 of XY</nowiki>
 
<pre>common shared GXY as group of axnm <nowiki>= A1 axnm = A2 of XY</nowiki>
Line 283: Line 303:
 
</gallery>
 
</gallery>
  
== example 5 ==
+
== Example 5 ==
 +
Switching between two '''blended''' movements.
  
Switching between two '''blended''' movements.
 
 
The example shows the system behavior when the PLS-Source is of '''single''' type.
 
The example shows the system behavior when the PLS-Source is of '''single''' type.
During actual blending (''time when two motions are executed in parallel'') the system considers two independent variables passing the given PLS values (in parallel).
+
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 '''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
 
* path length (or a percentage of it) of the '''second''' motion is checked if passing the PLSpositions
  
This means that if two motions with same PLS ''(having pos. on 0%,100%)'' are belended together the PLS output will be switched OFF during   the "double movement" phase (when both motions are superposed/blended).
+
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).
 
 
 
 
  
 
<pre>common shared GXY as group of axnm <nowiki>= A1 axnm = A2 of XY</nowiki></pre>
 
<pre>common shared GXY as group of axnm <nowiki>= A1 axnm = A2 of XY</nowiki></pre>
 
  
 
<pre>
 
<pre>
Line 318: Line 335:
 
</gallery>
 
</gallery>
  
 +
== Example 6 ==
  
== example 6 ==
+
Switching the PLS on same distance from beginning and the end of the motion.
 
 
Switching the PLS on same distance from beginning and the end of the motion
 
 
 
  
 
<pre>
 
<pre>
Line 351: Line 366:
 
MOVES {0,0}  WithPLS = P3
 
MOVES {0,0}  WithPLS = P3
 
</pre>
 
</pre>
 
  
 
<gallery widths = 400px heights = 300px>
 
<gallery widths = 400px heights = 300px>
Line 357: Line 371:
 
</gallery>
 
</gallery>
  
== example 7 ==
+
== Example 7 ==
Shows the difference in serial movement once that are blend with '''''Vfinal'''''>0 . In both cases the '''''PLSsource'''''is from type percentage.
+
Shows the difference in serial movement once that are blend with '''Vfinal'''>0 . In both cases the '''PLSsource''' is from type percentage.
<br/>
+
 
 
'''Serial movements with VFinal > 0'''
 
'''Serial movements with VFinal > 0'''
 
<pre>
 
<pre>
Line 375: Line 389:
 
  circle angle = -90 circlecenter = {0,0}  vcruise = 100 withpls = pathpls
 
  circle angle = -90 circlecenter = {0,0}  vcruise = 100 withpls = pathpls
 
</pre>
 
</pre>
 +
 
[[File:Axystems;Pls with vfinal.png|caption|600px]]
 
[[File:Axystems;Pls with vfinal.png|caption|600px]]
 
Shows axes pcmd , IO (X20) and PLSEnable(X40)
 
Shows axes pcmd , IO (X20) and PLSEnable(X40)
 
  
 
<br/>
 
<br/>
Line 395: Line 409:
 
  circle angle = -90 circlecenter = {0,0}  vcruise = 100 withpls = pathpls
 
  circle angle = -90 circlecenter = {0,0}  vcruise = 100 withpls = pathpls
 
</pre>
 
</pre>
 +
 
[[File:Axystems;Pls with vfinal zero.png|caption|600px]]
 
[[File:Axystems;Pls with vfinal zero.png|caption|600px]]
 
Shows axes pcmd , IO (X20) and PLSEnable(X40)
 
Shows axes pcmd , IO (X20) and PLSEnable(X40)
  
See Also: [[Axystems:ConcatenationOfMovements| ConcatenationOfMovements]]
+
See Also: [[Concatenation of Movements| ConcatenationOfMovements]]
 
----
 
----
  
[[Category:Axystems:Motion Control]]
+
</strike>
[[Category:Axystems:Motion:PLS]]
+
 
[[Category:Axystems:Motion:HW-PLS]]
+
 
 +
[[Category:Motion Control]]
 +
<!-- [[Category:Motion: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