Difference between revisions of "AXY:path-PLS"
(→PLS Properties and Commands:) |
|||
(19 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: | + | 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. | + | [[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: | + | [[MC-Basic:element.PLSSOURCE|PLSSOURCE]] <br/> |
− | + | The following table summarizes the types of '''PLSSource'''. | |
− | The | ||
− | |||
{|border="1px" cellpadding="3" cellspacing="0" | {|border="1px" cellpadding="3" cellspacing="0" | ||
| '''Source Name''' | | '''Source Name''' | ||
Line 73: | Line 79: | ||
|- | |- | ||
− | | Setpoint1 | + | | Setpoint1 |
| no | | no | ||
| ✓ | | ✓ | ||
Line 79: | Line 85: | ||
|- | |- | ||
− | | Setpoint2 | + | | Setpoint2 |
| no | | no | ||
| ✓ | | ✓ | ||
Line 85: | Line 91: | ||
|- | |- | ||
− | | Setpoint3 | + | | Setpoint3 |
| no | | no | ||
| ✓ | | ✓ | ||
Line 91: | Line 97: | ||
|- | |- | ||
− | | PathLength | + | | PathLength |
| ✓ | | ✓ | ||
| ✓ | | ✓ | ||
Line 99: | Line 105: | ||
|- | |- | ||
− | | PathPercentage | + | | PathPercentage |
| ✓ | | ✓ | ||
| ✓ | | ✓ | ||
Line 105: | Line 111: | ||
|- | |- | ||
− | | PathTime | + | | PathTime |
| ✓ | | ✓ | ||
| ✓ | | ✓ | ||
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. | ||
− | + | 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 | + | {{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 [[MC-Basic: | + | 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 180: | Line 184: | ||
== PLS Tracking During Proceed Command == | == 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: | |
+ | {|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 == | == Notes == | ||
Line 206: | 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 | + | CreatePLSdata 2 P1 |
− | CreatePLSdata P2 | + | CreatePLSdata 2 P2 |
− | CreatePLSdata P3 | + | CreatePLSdata 2 P3 |
P1.plsposition[1] = 10 | P1.plsposition[1] = 10 | ||
Line 394: | 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
Contents
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 | |
- 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.
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.
Behaves the same as the regular PLS, but works on the selected PLSsource instead of the axis position.
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. |
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
- PLSENABLE
- PLSREPEAT
- HWASSISTANCE
- PLSHYSTERESIS
- PLSAXISNAME
- PLSELEMENTNAME
- PLSPropagationEnableDelay
- PLSPropagationDisableDelay
- PLSPropagationDelay
- PLS On/Off delay
- HWIOtime
- PLSOUTPUT
- PLSPOLARITY
- PLSPOSITION
- PLSdelaytime
- CREATEPLSDATA
- DELETEPLS
- PLSLIST
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 | |
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 | |
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 | |
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 | |
Path-PLS feature is not applicable for JOG, DELAY , PASS and DOPASS commands. An error will be returned. |
NOTE | |
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
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
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
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
Shows axes pcmd , IO (X20) and PLSEnable(X40)
See Also: ConcatenationOfMovements