Difference between revisions of "Gantry Issues"

From SoftMC-Wiki
Jump to: navigation, search
m (Table of Actions)
(AXY: new links)
 
(20 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
{{Languages|Gantry_Issues}}
 
In some applications, gantry systems (pair of parallel axes) are implemented as master slave pairs. Where master is a part of a bigger (XYZ) group and each of the group's axis can be a master to a different slave axis. The whole issue can be extended to any group of geared axes that are moving together one physical object.
 
In some applications, gantry systems (pair of parallel axes) are implemented as master slave pairs. Where master is a part of a bigger (XYZ) group and each of the group's axis can be a master to a different slave axis. The whole issue can be extended to any group of geared axes that are moving together one physical object.
  
Line 19: Line 20:
  
 
= Table of Actions=
 
= Table of Actions=
General axis deviation GAD) is defined as one of the following events:
+
General axis deviation GAD is defined as one of the following events:
  
* position follwing error ('''''[[MC-Basic:axis.POSITIONERROR|Pe]] > [[MC-Basic:axis.POSITIONERRORMAX|PeMax]]''''')
+
* Position following error ('''[[MC-Basic:element.POSITIONERROR|Pe]] > [[MC-Basic:element.POSITIONERRORMAX|PeMax]]''')
* velocity overspeed (Vfb > Vospd)
+
* Velocity overspeed (Vfb > Vospd)
* excessive acceleration (over [[MC-Basic:SYSTEM.MOTIONMARGIN|Sys.MotionMargin]]*[[MC-Basic:axis.ACCELERATIONMAX|Amax]])
+
* Excessive acceleration (over [[MC-Basic:SYSTEM.MOTIONMARGIN|Sys.MotionMargin]]*[[Category talk:MC-Basic:axis.ACCELERATIONMAX|Amax]])
* excessive torque (over [[MC-Basic:axis.TorqueMax|Tmax]])  
+
* Excessive torque (over [[MC-Basic:axis.TorqueMax|Tmax]])  
* slave deviation (SlaveDeviation > SlaveMaxDeviation)<br/>  
+
* Slave deviation (SlaveDeviation > SlaveMaxDeviation)<br/>  
  
  
 
{| border = 1  
 
{| border = 1  
||Action:
+
|'''Action'''
|| <nowiki><slave>.SlaveDisconnect </nowiki> 1 (default)<br> (''or master is PEXT'')
+
|| <nowiki><slave>.SlaveDisconnect </nowiki> 1 (default)<br/> (''or master is PEXT'')
 
|| <nowiki><slave>.SlaveDisconnect</nowiki> 0
 
|| <nowiki><slave>.SlaveDisconnect</nowiki> 0
|| <nowiki><master>.SlaveDisable</nowiki> 0 (default
+
|| <nowiki><master>.SlaveDisable</nowiki> 0 (default)
 
|| <nowiki><master>.SlaveDisable</nowiki> 1
 
|| <nowiki><master>.SlaveDisable</nowiki> 1
 
|-
 
|-
  
 
||Slave '''GAD'''
 
||Slave '''GAD'''
||'''Disconnecting''': sax.slave=0<br>'''''Stopping''''' master axis<br>'''''Stopping''''' slave axis
+
||'''Disconnecting''': sax.slave=0<br/>'''Stopping''''master axis<br/>'''Stopping''' slave axis
||'''Stopping''' the ''first'' master if it is moving,<br>else '''''disabling''''' the master
+
||'''Stopping''' the ''first'' master if it is moving,<br/>else '''disabling''' the master
| colspan="2" | <center>Nothing affected
+
| colspan="2" | Nothing affected
 
|-
 
|-
  
||Slave '''''GAD'''''<br>
+
||Slave '''GAD'''<br/>
 
(when slave is stopped)
 
(when slave is stopped)
| colspan="4" | <center> can not occur as slaved axis is considered always in a moving state (ismoving ≠ 0)</center>
+
| colspan="4" | Cannot occur as slaved axis is considered always in a moving state (ismoving ≠ 0)
 
|-
 
|-
  
||Slave '''''GAD'''''<br>
+
||Slave '''GAD'''<br/>
 
(when master is stopped)
 
(when master is stopped)
| colspan="4" | <center>'''Disabling''' master.<br>'''Disabling''' slave</center>
+
| colspan="4" | '''Disabling''' master.<br/>'''Disabling''' slave
 
|-
 
|-
  
||Master '''''GAD'''''
+
||Master '''GAD'''
| colspan="4" | <center>'''''Stopping''''' master axis</center>
+
| colspan="4" | <'''Stopping''' master axis
  
 
|-
 
|-
||Master '''''GAD'''''<br>
+
||Master '''GAD'''<br/>
(wnen master is stopped)
+
(when master is stopped)
| colspan="3" | <center>'''Disabling''' master axis</center>
+
| colspan="3" | '''Disabling''' master axis
|| <center>'''Disabling''' slave axis</center>
+
|| '''Disabling''' slave axis
  
 
|-
 
|-
 
||Error on slave axis
 
||Error on slave axis
|| <center>'''''Disconnecting''''': <nowiki>sax.slave=0</nowiki><br> '''''Stopping''''' slave axis</center>
+
|| '''Disconnecting''': <nowiki>sax.slave=0</nowiki><br/> '''Stopping''' slave axis
|| <center>'''''Stopping''''' slave axis</center>
+
|| '''Stopping''' slave axis
|colspan=2| <center>Nothing affected</center>
+
|colspan=2| Nothing affected
  
 
|-
 
|-
 
||Error on master axis
 
||Error on master axis
| colspan=4  | <center>'''''Stopping''''' master axis</center>
+
| colspan=4  |'''Stopping''' master axis
  
 
|-
 
|-
||Disabling master: <br>(max.en: 1→0)
+
||Disabling master: <br/>(max.en: 1→0)
 
| colspan=3  |Nothing affected
 
| colspan=3  |Nothing affected
|| '''Disabling'''all slave axes that are directly or indirectly connected.
+
|| '''Disabling''' all slave axes that are directly or indirectly connected.
 
|-
 
|-
  
|| Disabling slave: <br>(sax.en: 1→0)
+
|| Disabling slave: <br/>(sax.en: 1→0)
|| '''Msyn''' is reset<br>No disconnection.
+
|| '''Msyn''' is reset<br/>No disconnection.
|| '''Msyn''' is reset<br>'''Disable''' all master axes connected directly or indirectly.
+
|| '''Msyn''' is reset<br/>'''Disable''' all master axes connected directly or indirectly.
 
| colspan="2" |Nothing affected
 
| colspan="2" |Nothing affected
  
Line 103: Line 104:
 
See Also: [[MC-Basic:axis.SLAVEDISABLE |SlaveDisable]]
 
See Also: [[MC-Basic:axis.SLAVEDISABLE |SlaveDisable]]
  
Once the '''''<nowiki><master>.SlaveDisable</nowiki>''''' is on, each time the axis is disabled (due to an error, or by direct assignment i.e., ”en=0”) all of its slave axes will be disabled:
+
Once the '''<nowiki><master>.SlaveDisable</nowiki>''' is on, each time the axis is disabled (due to an error, or by direct assignment i.e., ”en=0”) all of its slave axes will be disabled:
  
 
If the user directly enters:
 
If the user directly enters:
Line 114: Line 115:
 
* If the VOSPD is exceeded on a stopped axis
 
* If the VOSPD is exceeded on a stopped axis
 
* If the master is disabled because it is a part of the group that is being disabled (or some axes of it are).
 
* If the master is disabled because it is a part of the group that is being disabled (or some axes of it are).
* If the master is disabled because being master of another axis having '''''<nowiki><axis>.SlaveDisconnect</nowiki>''''' flag set to 0(This is when this feature is on).
+
* If the master is disabled because being master of another axis having '''<nowiki><axis>.SlaveDisconnect</nowiki>''' flag set to 0(This is when this feature is on).
  
 
= Slave - disconnect =
 
= Slave - disconnect =

Latest revision as of 11:53, 13 September 2017

Language: English  • 中文(简体)‎

In some applications, gantry systems (pair of parallel axes) are implemented as master slave pairs. Where master is a part of a bigger (XYZ) group and each of the group's axis can be a master to a different slave axis. The whole issue can be extended to any group of geared axes that are moving together one physical object.

Problems

Problems occur when due to asymmetrical engagement of the system either by different stopping starting or mechanical non-symmetries.

1.) Motors are directly working against mechanic and possible mechanical breakage/damage can occur.

2.) The systems forms a mechanical feedback loop and instability in form of axis runway can occur.

3.) Load is distributed not equally, therefore dynamic behavior of one axis differs from the other.

Prevention Features

  1. Slave deviation: difference in position between master's and slave's feedback is monitored if it exceeds certain threshold an error is generated and the system stopped. MC-Basic: <slave>.SlaveDeviation.
  2. Slave disconnect: when slave is disabled either due to explicit user command or as a result of an error its master is automatically disabled. MC-Basic: <slave>.SlaveDisconnect .
  3. The master is "aware" of its slaves. Keeping slave in enabled state when master is disabled can introduce a feedback loop (mechanical linkage between slave and master) resulting is a system that is not always stable i.e. we have a runaway. This can be prevented using SlaveDisable flag, each time a master is disabled due to whatever reason all its slaves will be disabled too. MC-Basic: <master>.SlaveDisable .
  4. In order to keep the delay between master and slave minimal it is imporrtant to take care about the order of calling of axis RTK. Connecting slave to a master automaticaly re-orders their RTK by changing their priorities.

Table of Actions

General axis deviation GAD is defined as one of the following events:

  • Position following error (Pe > PeMax)
  • Velocity overspeed (Vfb > Vospd)
  • Excessive acceleration (over Sys.MotionMargin*Amax)
  • Excessive torque (over Tmax)
  • Slave deviation (SlaveDeviation > SlaveMaxDeviation)


Action <slave>.SlaveDisconnect 1 (default)
(or master is PEXT)
<slave>.SlaveDisconnect 0 <master>.SlaveDisable 0 (default) <master>.SlaveDisable 1
Slave GAD Disconnecting: sax.slave=0
Stopping'master axis
Stopping slave axis
Stopping the first master if it is moving,
else disabling the master
Nothing affected
Slave GAD

(when slave is stopped)

Cannot occur as slaved axis is considered always in a moving state (ismoving ≠ 0)
Slave GAD

(when master is stopped)

Disabling master.
Disabling slave
Master GAD <Stopping master axis
Master GAD

(when master is stopped)

Disabling master axis Disabling slave axis
Error on slave axis Disconnecting: sax.slave=0
Stopping slave axis
Stopping slave axis Nothing affected
Error on master axis Stopping master axis
Disabling master:
(max.en: 1→0)
Nothing affected Disabling all slave axes that are directly or indirectly connected.
Disabling slave:
(sax.en: 1→0)
Msyn is reset
No disconnection.
Msyn is reset
Disable all master axes connected directly or indirectly.
Nothing affected