674 lines
19 KiB
Bash
674 lines
19 KiB
Bash
#!/bin/bash
|
|
set -x
|
|
|
|
rm -f sim.var
|
|
|
|
# reset the tool table to a known starting configuration
|
|
rm -f tool.tbl
|
|
cp tool.tbl.original tool.tbl
|
|
|
|
rm -f gcode-output
|
|
|
|
if nc -z localhost 5007; then
|
|
echo "Process already listening on port 5007. Exiting"
|
|
exit 1
|
|
fi
|
|
|
|
linuxcnc -r sim.ini &
|
|
|
|
|
|
# let linuxcnc come up
|
|
TOGO=80
|
|
while [ $TOGO -gt 0 ]; do
|
|
echo trying to connect to linuxcncrsh TOGO=$TOGO
|
|
if nc -z localhost 5007; then
|
|
break
|
|
fi
|
|
sleep 0.25
|
|
TOGO=$((TOGO - 1))
|
|
done
|
|
if [ $TOGO -eq 0 ]; then
|
|
echo connection to linuxcncrsh timed out
|
|
exit 1
|
|
fi
|
|
|
|
|
|
(
|
|
function introspect() {
|
|
SEQUENCE_NUMBER=$1
|
|
echo 'set wait done'
|
|
echo "set mdi m100 P6 Q$SEQUENCE_NUMBER" # sequence number
|
|
echo 'set mdi m100 P0 Q#5420' # X
|
|
echo 'set mdi m100 P1 Q#5421' # Y
|
|
echo 'set mdi m100 P2 Q#5422' # Z
|
|
echo 'set mdi m100 P3 Q#5400' # toolno
|
|
echo 'set mdi m100 P4 Q#5403' # TLO z
|
|
echo 'set mdi m100 P5' # blank line
|
|
echo 'set wait done'
|
|
}
|
|
|
|
echo "hello EMC mt 1.0"
|
|
echo "set enable EMCTOO"
|
|
|
|
echo "set estop off"
|
|
echo "set machine on"
|
|
echo "set mode mdi"
|
|
|
|
|
|
#
|
|
# first, a bunch of testing with no tool in the spindle
|
|
#
|
|
# On nonrandom the spindle has T0, which is the nonrandom way to
|
|
# specify the special tool that means "no tool".
|
|
#
|
|
# On random the spindle has T-1, which is the random way to specify the
|
|
# special tool that means "no tool".
|
|
#
|
|
|
|
|
|
# Both random and nonrandom start this test with no tool in the
|
|
# spindle, but they encode this in different ways.
|
|
introspect 0
|
|
|
|
|
|
#
|
|
# g43
|
|
#
|
|
|
|
# Apply the TLO of the current tool. On both, the spindle has no tool,
|
|
# which has 0 TLO.
|
|
echo "set mdi g43"
|
|
introspect 1
|
|
|
|
# Apply the TLO of tool T1. On both, T1 is a valid tool, so we use its
|
|
# TLO.
|
|
echo "set mdi g43 h1"
|
|
introspect 2
|
|
|
|
# Apply the TLO of H0, this one is weird.
|
|
#
|
|
# On nonrandom, this requests the TLO of the tool in the spindle, which
|
|
# is currently T0, which is a special tool with TLO 0.
|
|
#
|
|
# On random, this requests the TLO of T0. If T0 is not in the tool
|
|
# table, this is an error and the active TLO remains unchanged (so it
|
|
# stays as the TLO of T1 that we just set above). If T0 is defined, we
|
|
# apply its TLO here.
|
|
echo "set mdi g43 h0"
|
|
introspect 3
|
|
|
|
|
|
#
|
|
# g10 l1
|
|
#
|
|
|
|
# Try to change TLO of the normal tool T7. This should work on both,
|
|
# but not change the active TLO.
|
|
echo "set mdi g10 l1 p7 z0.1"
|
|
introspect 4
|
|
|
|
# Apply the TLO of T7, which we just tried to set. This should work on
|
|
# both.
|
|
echo "set mdi g43 h7"
|
|
introspect 5
|
|
|
|
# Try to change TLO of the strange tool T0.
|
|
#
|
|
# This should fail in every config because you cannot change T0.
|
|
echo "set mdi g10 l1 p0 z0.2"
|
|
introspect 6
|
|
|
|
# Apply the TLO of the special H0.
|
|
#
|
|
# On nonrandom, this requests the TLO of the tool in the spindle, which
|
|
# is currently T0, which is a special tool with TLO 0.
|
|
#
|
|
# On random, this requests the TLO of T0. If T0 is not in the tool
|
|
# table, this is an error and the active TLO remains unchanged (so it
|
|
# stays as the TLO of T7 that we just set above). If T0 is defined, we
|
|
# apply its TLO here.
|
|
echo "set mdi g43 h0"
|
|
introspect 7
|
|
|
|
|
|
#
|
|
# g10 l10
|
|
#
|
|
|
|
# Try to change TLO of the normal tool T7. This should work on both.
|
|
echo "set mdi g10 l10 p7 z0.3"
|
|
introspect 8
|
|
|
|
# Apply the TLO of T7, which we just tried to set. This should work on
|
|
# both.
|
|
echo "set mdi g43 h7"
|
|
introspect 9
|
|
|
|
# Try to change TLO of the strange tool T0.
|
|
#
|
|
# This should fail on every config because you cannot change T0.
|
|
echo "set mdi g10 l10 p0 z0.4"
|
|
introspect 10
|
|
|
|
# Apply the TLO of the special H0.
|
|
#
|
|
# On nonrandom, this requests the TLO of the tool in the spindle, which
|
|
# is currently T0, which is a special tool with TLO 0.
|
|
#
|
|
# On random, this requests the TLO of T0. If T0 is not in the tool
|
|
# table, this is an error and the active TLO remains unchanged (so it
|
|
# stays as the TLO of T7 that we just set above). If T0 is defined, we
|
|
# apply its TLO here.
|
|
echo "set mdi g43 h0"
|
|
introspect 11
|
|
|
|
|
|
#
|
|
# g10 l11
|
|
#
|
|
|
|
# First offset the g59.3 coordinate system and make sure that worked,
|
|
# but then switch back to g54. This sets different g59.3 offsets in
|
|
# different configs, because they have different active Z TLOs at this
|
|
# point.
|
|
#
|
|
# Before this G10 L20, we are at the following Z locations:
|
|
# nonrandom: 0.0 (T0 TLO active)
|
|
# random without T0: 0.3 (T7 TLO active)
|
|
# random with T0: 0.0 (T0 TLO active)
|
|
#
|
|
# Then we set the G59.3 coordinate system offset such that the current
|
|
# Z location is 5, which gives us these G59.3 Z offsets:
|
|
# nonrandom: -5.0 + 0.0 TLO = -5.0
|
|
# random without T0: -5.0 + 0.3 TLO = -4.7
|
|
# random with T0: -5.0 + 0.0 TLO = -5.0
|
|
#
|
|
# All the configs will be at Z=5.0 after switching to G59.3.
|
|
echo "set mdi g10 l20 p9 z5"
|
|
introspect 11.5
|
|
|
|
echo "set mdi g59.3"
|
|
introspect 12
|
|
|
|
echo "set mdi g54"
|
|
introspect 13
|
|
|
|
# Try to change TLO of the normal tool T7. This should work on all
|
|
# configs.
|
|
#
|
|
# We should end up with the following Z coordinates:
|
|
# Nonrandom: -5.0 + 0.5 = -4.5
|
|
# Random without T0: -4.7 + 0.5 = -4.2
|
|
# Random with T0: -5.0 + 0.5 = -4.5
|
|
#
|
|
# But these offsets are not active until the G43 below.
|
|
echo "set mdi g10 l11 p7 z0.5"
|
|
introspect 14
|
|
|
|
# Apply the TLO of T7, which we just tried to set. This should
|
|
# work on all configs.
|
|
echo "set mdi g43 h7"
|
|
introspect 15
|
|
|
|
# Try to change TLO of the strange tool T0.
|
|
#
|
|
# This should fail on every config because you cannot change T0.
|
|
echo "set mdi g10 l11 p0 z0.6"
|
|
introspect 16
|
|
|
|
# Apply the TLO of the special H0.
|
|
#
|
|
# On nonrandom, this requests the TLO of the tool in the spindle, which
|
|
# is currently T0, which is a special tool with TLO 0.
|
|
#
|
|
# On random, this requests the TLO of T0. If T0 is not in the tool
|
|
# table, this is an error and the active TLO remains unchanged (so it
|
|
# stays as the TLO of T7 that we just set above). If T0 is defined, we
|
|
# apply its TLO here.
|
|
echo "set mdi g43 h0"
|
|
introspect 17
|
|
|
|
|
|
#
|
|
# That's all the testing we can do of the condition that there's
|
|
# nothing in the spindle. G41/G42 would be nice to test, but the
|
|
# numbered parameters we use for introspection aren't accessible to
|
|
# gcode while cutter comp is enabled. :-(
|
|
#
|
|
# So we move on! Put a valid tool in the spindle and test everything
|
|
# again!
|
|
#
|
|
|
|
|
|
# Switch to the valid tool T50 but don't apply its TLO yet.
|
|
# This should work on all configs.
|
|
echo "set mdi t50 m6"
|
|
introspect 100
|
|
|
|
|
|
#
|
|
# g43
|
|
#
|
|
|
|
# Apply the TLO of the current tool. On all configs, the spindle has
|
|
# T50. This should work on all configs.
|
|
echo "set mdi g43"
|
|
introspect 101
|
|
|
|
# change the TLO of the normal tool T7
|
|
# this should work on both, but not change the active TLO
|
|
echo "set mdi g10 l10 p7 z1.1"
|
|
introspect 102
|
|
|
|
# apply the TLO of the normal tool T7 (TLO of 0.5 set above)
|
|
# this should work on both
|
|
echo "set mdi g43 h7"
|
|
introspect 103
|
|
|
|
# try to change the TLO of T0
|
|
#
|
|
# On nonrandom this should fail because you can't change T0.
|
|
#
|
|
# On random without T0 this should fail because there is no T0.
|
|
#
|
|
# On random with T0 this should fail because you can't change T0.
|
|
echo "set mdi g10 l10 p0 z1.2"
|
|
introspect 104
|
|
|
|
# Apply the TLO of the special H0.
|
|
#
|
|
# On nonrandom, this requests the TLO of the tool in the spindle, which
|
|
# is currently T50.
|
|
#
|
|
# On random, this requests the TLO of T0. If T0 is not in the tool
|
|
# table, this is an error and the active TLO remains unchanged (so it
|
|
# stays as the TLO of T7 that we just set above). If T0 is defined, we
|
|
# apply its TLO here.
|
|
echo "set mdi g43 h0"
|
|
introspect 105
|
|
|
|
|
|
#
|
|
# g10 l1
|
|
#
|
|
|
|
# Try to change TLO of the normal tool T7. This should work on all
|
|
# configs, but not change the active TLO.
|
|
echo "set mdi g10 l1 p7 z1.3"
|
|
introspect 106
|
|
|
|
# Apply the TLO of T7, which we just tried to set. This should work on
|
|
# all configs.
|
|
echo "set mdi g43 h7"
|
|
introspect 107
|
|
|
|
# Try to change TLO of the strange tool T0.
|
|
#
|
|
# This should fail on nonrandom because you cannot change T0.
|
|
#
|
|
# It should fail on random without T0 because it has no T0.
|
|
#
|
|
# It should fail on random with T0 because you cannot change T0.
|
|
echo "set mdi g10 l1 p0 z1.4"
|
|
introspect 108
|
|
|
|
# Apply the TLO of the special H0.
|
|
#
|
|
# It should work on nonrandom and give us the TLO of the tool in the
|
|
# spindle, T50 (in this config, G43 H0 means "use current tool").
|
|
#
|
|
# It should fail on random without T0 and leave the TLO at the value
|
|
# from T7 above.
|
|
#
|
|
# It should work on random with T0 and give us the TLO of T0 (0.0).
|
|
echo "set mdi g43 h0"
|
|
introspect 109
|
|
|
|
|
|
#
|
|
# g10 l10
|
|
#
|
|
|
|
# Try to change TLO of the normal tool T7. This should work on all
|
|
# configs.
|
|
echo "set mdi g10 l10 p7 z1.5"
|
|
introspect 110
|
|
|
|
# Apply the TLO of T7, which we just tried to set. This should work on
|
|
# all configs.
|
|
echo "set mdi g43 h7"
|
|
introspect 111
|
|
|
|
# Try to change TLO of the strange tool T0.
|
|
#
|
|
# This should fail on nonrandom because you cannot change T0
|
|
#
|
|
# It should fail on random without T0 because it has no T0.
|
|
#
|
|
# It should fail on random with T0 because you cannot change T0
|
|
echo "set mdi g10 l10 p0 z1.6"
|
|
introspect 112
|
|
|
|
# Apply the TLO of the special H0.
|
|
#
|
|
# It should work on nonrandom and give us the TLO of the tool in the
|
|
# spindle, T50 (in this config, G43 H0 means "use current tool").
|
|
#
|
|
# It should fail on random without T0 and leave the TLO at the value
|
|
# from T7 above.
|
|
#
|
|
# It should work on random with T0 and give us the TLO of T0 (0.0).
|
|
echo "set mdi g43 h0"
|
|
introspect 113
|
|
|
|
# Try to change TLO of the currently loaded tool, T50.
|
|
# This should work on all configs but not change the active TLO
|
|
echo "set mdi g10 l10 p50 z1.7"
|
|
introspect 114
|
|
|
|
# Apply the TLO of the special H0.
|
|
#
|
|
# It should work on nonrandom and give us the TLO of the tool in the
|
|
# spindle, T50 (in this config, G43 H0 means "use current tool").
|
|
#
|
|
# It should fail on random without T0 and leave the TLO at the value
|
|
# from T7 above.
|
|
#
|
|
# It should work on random with T0 and give us the TLO of T0 (0.0).
|
|
echo "set mdi g43 h0"
|
|
introspect 115
|
|
|
|
# Apply the TLO of T7.
|
|
# This should work on all configs.
|
|
echo "set mdi g43 h7"
|
|
introspect 116
|
|
|
|
# Apply the TLO of the current tool
|
|
# This should work on all configs.
|
|
echo "set mdi g43"
|
|
introspect 117
|
|
|
|
|
|
#
|
|
# g10 l11
|
|
#
|
|
|
|
# First offset the G59.3 coordinate system and make sure that worked,
|
|
# but then switch back to G54. All configs are using the TLO of T50
|
|
# at this point, so they all set the same G59.3 coordinate system
|
|
# offset.
|
|
#
|
|
# Before this G10 L20, all configs are at Z=1.7 (T50 TLO active)
|
|
#
|
|
# Then we set the G59.3 coordinate system offset such that the current
|
|
# Z location is 6, which gives us a G59.3 Z offset of:
|
|
# -6.0 + 1.7 TLO = -4.3
|
|
#
|
|
# All the configs will be at Z = 6.0 after switching to G59.3.
|
|
echo "set mdi g10 l20 p9 z6"
|
|
introspect 117.5
|
|
|
|
echo "set mdi g59.3"
|
|
introspect 118
|
|
|
|
echo "set mdi g54"
|
|
introspect 119
|
|
|
|
# Try to change TLO of the normal tool T7. This should work on all
|
|
# configs.
|
|
echo "set mdi g10 l11 p7 z1.8"
|
|
introspect 120
|
|
|
|
# Apply the TLO of T7, which we just tried to set. This should
|
|
# work on all configs.
|
|
echo "set mdi g43 h7"
|
|
introspect 121
|
|
|
|
# Try to change TLO of the strange tool T0.
|
|
#
|
|
# This should fail on nonrandom because you cannot change T0.
|
|
#
|
|
# It should fail on random without T0 because it has no T0.
|
|
#
|
|
# This should fail on random with T0 because you cannot change T0.
|
|
echo "set mdi g10 l11 p0 z1.3"
|
|
introspect 122
|
|
|
|
# Apply the TLO of T0, which we just tried to set.
|
|
#
|
|
# It should work on nonrandom and give us a TLO of the tool in the
|
|
# spindle, T50.
|
|
#
|
|
# It should fail on random and leave the TLO at the value from T7
|
|
# above.
|
|
#
|
|
# It should work on random with T0 and give us the TLO of T0: 0.0
|
|
echo "set mdi g43 h0"
|
|
introspect 123
|
|
|
|
|
|
#
|
|
# Now load T0 into the spindle and retest everything again.
|
|
#
|
|
|
|
|
|
# Switch to the special tool T0 but don't apply its TLO yet.
|
|
#
|
|
# On nonrandom, this should unload the spindle.
|
|
#
|
|
# On random without T0 this should fail (there is no T0) and leave
|
|
# T50 in the spindle.
|
|
#
|
|
# On random with T0 this should work and put T0 in the spindle.
|
|
|
|
echo "set mdi t0 m6"
|
|
introspect 200
|
|
|
|
|
|
#
|
|
# g43
|
|
#
|
|
|
|
# Apply the TLO of the current tool.
|
|
#
|
|
# On nonrandom the spindle has the special tool T0, which has a 0 TLO.
|
|
#
|
|
# On random without T0 the spindle has T50, which has a TLO of -1.15,
|
|
# set above.
|
|
#
|
|
# On random with T0 the spindle has tool T0, which has a 0 TLO.
|
|
echo "set mdi g43"
|
|
introspect 201
|
|
|
|
# change the TLO of the normal tool T7
|
|
# this should work on all configs, but not change the active TLO
|
|
echo "set mdi g10 l10 p7 z2.0"
|
|
introspect 202
|
|
|
|
# apply the TLO of the normal tool T7 (TLO set above)
|
|
# this should work on all configs
|
|
echo "set mdi g43 h7"
|
|
introspect 203
|
|
|
|
# try to change the TLO of T0
|
|
#
|
|
# On nonrandom this should fail because you can't change T0.
|
|
#
|
|
# On random without T0 this should fail because there is no T0.
|
|
#
|
|
# On random with T0 this should fail because you can't change T0.
|
|
echo "set mdi g10 l10 p0 z2.1"
|
|
introspect 204
|
|
|
|
# try to apply the TLO of H0
|
|
#
|
|
# On nonrandom, this should apply the TLO of the current tool (special
|
|
# handling of G43 H0). The current tool is T0, which has 0 TLO.
|
|
#
|
|
# On random without T0 this should be an error (G43 H0 is nothing
|
|
# special, but there is no T0) and the active TLO should remain
|
|
# unchanged.
|
|
#
|
|
# On random with T0 this should apply the TLO of T0 (0.0).
|
|
echo "set mdi g43 h0"
|
|
introspect 205
|
|
|
|
|
|
#
|
|
# g10 l1
|
|
#
|
|
|
|
# Try to change TLO of the normal tool T7. This should work on all
|
|
# configs, but not change the active TLO.
|
|
echo "set mdi g10 l1 p7 z2.2"
|
|
introspect 206
|
|
|
|
# Apply the TLO of T7, which we just tried to set. This should work on
|
|
# all configs.
|
|
echo "set mdi g43 h7"
|
|
introspect 207
|
|
|
|
# Try to change TLO of the strange tool T0.
|
|
#
|
|
# This should fail on nonrandom because you cannot change T0.
|
|
#
|
|
# It should fail on random without T0 because it has no T0.
|
|
#
|
|
# This should fail on random with T0 because you cannot change T0.
|
|
echo "set mdi g10 l1 p0 z2.3"
|
|
introspect 208
|
|
|
|
# Apply the TLO of H0.
|
|
#
|
|
# It should work on nonrandom and give us the TLO of the tool in the
|
|
# spindle, T50.
|
|
#
|
|
# It should fail on random without T0 and leave the TLO at the value
|
|
# from T7 above.
|
|
#
|
|
# It should work on random with TLO and give us the TLO of T0.
|
|
echo "set mdi g43 h0"
|
|
introspect 209
|
|
|
|
|
|
#
|
|
# g10 l10
|
|
#
|
|
|
|
# Try to change TLO of the normal tool T7. This should work on all
|
|
# configs.
|
|
echo "set mdi g10 l10 p7 z2.4"
|
|
introspect 210
|
|
|
|
# Apply the TLO of T7, which we just tried to set. This should work on
|
|
# all configs.
|
|
echo "set mdi g43 h7"
|
|
introspect 211
|
|
|
|
# Try to change TLO of the strange tool T0.
|
|
#
|
|
# This should fail on nonrandom because you cannot change T0
|
|
#
|
|
# It should fail on random without T0 because it has no T0.
|
|
#
|
|
# It should fail on random with T0 because you cannot change T0
|
|
echo "set mdi g10 l10 p0 z2.5"
|
|
introspect 212
|
|
|
|
# Apply the TLO of the special H0.
|
|
#
|
|
# It should work on nonrandom and give us the TLO of the tool in the
|
|
# spindle, T0 (in this config, G43 H0 means "use current tool").
|
|
#
|
|
# It should fail on random without T0 and leave the TLO at the value
|
|
# from T7 above.
|
|
#
|
|
# It should work on random with T0 and give us the TLO of T0 (0.0).
|
|
echo "set mdi g43 h0"
|
|
introspect 213
|
|
|
|
|
|
#
|
|
# g10 l11
|
|
#
|
|
|
|
# First offset the G59.3 coordinate system and make sure that worked,
|
|
# but then switch back to G54. This sets different G59.3 offsets in
|
|
# different configs, because they have different active Z TLOs at
|
|
# this point.
|
|
#
|
|
# Before this G10 L20, we are at the following Z locations:
|
|
# nonrandom: 0.0 (T0 TLO active)
|
|
# random without T0: 2.4 (T7 TLO active)
|
|
# random with T0: 0.0 (T0 TLO active)
|
|
#
|
|
# Then we set the G59.3 coordinate system offset such that the current
|
|
# Z location is 7, which gives us these G59.3 Z offsets:
|
|
# nonrandom: -7.0 + 0.0 TLO = -7.0
|
|
# random without T0: -7.0 + 2.4 TLO = -4.6
|
|
# random with T0: -7.0 + 0.0 TLO = -7.0
|
|
#
|
|
# All the configs will be at Z=7.0 after switching to G59.3.
|
|
echo "set mdi g10 l20 p9 z7"
|
|
introspect 213.5
|
|
|
|
echo "set mdi g59.3"
|
|
introspect 214
|
|
|
|
echo "set mdi g54"
|
|
introspect 215
|
|
|
|
# Try to change TLO of the normal tool T7. This should work on all
|
|
# configs.
|
|
#
|
|
# We should end up with the following Z coordinates:
|
|
# Nonrandom: -7.0 + 2.6 = -4.4
|
|
# Random without T0: -4.6 + 2.6 = -2.0
|
|
# Random with T0: -7.0 + 2.6 = -4.4
|
|
#
|
|
# But these offsets are not active until the G43 below.
|
|
echo "set mdi g10 l11 p7 z2.6"
|
|
introspect 216
|
|
|
|
# Apply the TLO of T7, which we just tried to set. This should
|
|
# work on all configs.
|
|
echo "set mdi g43 h7"
|
|
introspect 217
|
|
|
|
# Try to change TLO of the strange tool T0.
|
|
#
|
|
# This should fail on nonrandom because you cannot change T0.
|
|
#
|
|
# It should fail on random without T0 because it has no T0.
|
|
#
|
|
# It should work on random with T0 because you cannot change T0.
|
|
echo "set mdi g10 l11 p0 z2.7"
|
|
introspect 218
|
|
|
|
# Apply the TLO of H0.
|
|
#
|
|
# It should work on nonrandom and give us a TLO of the tool in the
|
|
# spindle, T0
|
|
#
|
|
# It should fail on random without T0 and leave the TLO at the value
|
|
# from T7 above.
|
|
#
|
|
# It should work on random with T0 and give us a TLO of the tool in the
|
|
# spindle, T0
|
|
echo "set mdi g43 h0"
|
|
introspect 219
|
|
|
|
|
|
# give linuxcnc a second to finish
|
|
echo 'set wait done'
|
|
|
|
echo shutdown
|
|
) | nc localhost 5007
|
|
|
|
|
|
# wait for linuxcnc to finish
|
|
wait
|
|
|
|
exit 0
|
|
|