This enables the CONFLIST file to be shared between several invocations of TMGtask.
This argument is most useful when setting up the CONFLIST file or when using the --log_* arguments listed below.
Invoke the program with the --help option to find out the valid values for <n>.
Invoke the program with the --help option to find out the valid values for <n>.
Invoke the program with the --help option to find out the valid values for <n>.
This is a 1 bit control with these values:
0.0 = off
1.0 = enable
The control key should be set to IncN.
This parameter should be owned by whatever task TMGtask registers as and the permissions set for indirect update by users and unconditional for the owner.
This control is described as optional. However, it should either exist or the channel HomeSC should exist for correct operation.
This is a 1 bit control with these values:
0.0 = nop
1.0 = home
The control key should be set to Mom.
This parameter should be owned by whatever task TMGtask registers as and the permissions set for indirect update by users and unconditional for the owner.
This is a 2 bit parameter with these values:
0.0 = off
1.0 = rest
2.0 = moving
3.0 = error
The control key should be set to RSet.
This parameter should be owned by whatever task TMGtask registers as and the permissions set for no update by users and direct update for the owner.
The individual motor axis parameters are placed in groups g1, g2, g3, and g4. One group is used for each motor axis. For example g1 corresponds to axis 0 and so forth.
The control key should be set to RSetK.
The DATA.DTkey parameter is usually set to F.
This parameter should be owned by whatever task TMGtask registers as and the permissions set for indirect update by users and unconditional for the owner.
This is a 1 bit control with these values:
0.0 = nop
1.0 = home
The control key should be set to Mom.
This parameter should be owned by whatever task TMGtask registers as and the permissions set for indirect update by users and unconditional for the owner.
The control key should be set to RSet.
The DATA.DTkey parameter is usually set to F.
This parameter should be owned by whatever task TMGtask registers as and the permissions set for no update by users and direct update for the owner.
This is a 3 bit parameter with these values:
0.0 = not_ready
1.0 = rest
2.0 = move_wait
3.0 = move
4.0 = home_wait
5.0 = home
6.0 = error
7.0 = *not_used*
The control key should be set to RSet.
This parameter should be owned by whatever task TMGtask registers as and the permissions set for no update by users and direct update for the owner.
This is a 2 bit parameter with these values:
0.0 = nop
1.0 = limit
2.0 = home
3.0 = both
The control key should be set to RSet.
This parameter should be owned by whatever task TMGtask registers as and the permissions set for no update by users and direct update for the owner.
If the Label and RefName are not null the value comes from the database else the value comes from the preset field in the config table.
The index field is always set to 0.
steps to db units scaling
If this parameter is not specified in the config file it defaults to 1.0.
If this parameter is not specified in the config file it defaults to 0.0.
If this parameter is not specified in the config file it defaults to 150.
If this parameter is not specified in the config file it defaults to 200.
If this parameter is not specified in the config file it defaults to 0.
If this parameter is not specified in the config file it defaults to 200.
home operation TMO value
If this parameter is not specified in the config file it defaults to 60.0.
move operation TMO value
If this parameter is not specified in the config file it defaults to 60.0.
move behavior
The values are:
0.0 - after homing stop and set DC = DR
1.0 - after homing move to the present value of DC
If this parameter is not specified in the config file it defaults to 0.0.
homing behavior
The values are:
0.0 - home normally
1.0 - perform a move before homing
If this parameter is not specified in the config file it defaults to 0.0.
See the NOTES section below.
This specifies a position to move to before homing.
The value of home offset is used as the current drive position and the drive is moved relative to this position.
See the NOTES section below.
DC = displacement control (physical
units)
M = pulses/physical_unit
B = home offset (in physical units)
p = number of pulses to send to drive
p = (DC * M) + (M * B)
For example, using a screw pitch of 40 revs/inch and a microstepped 200 step/rev motor we get:
800 steps/rev = 200 steps/rev * 4
32000 steps/inch
25.406 mm/inch
1259.52 steps/mm
The DC and DR parameters don’t use Size directly because the calculations to go between physical units and steps are done in TMGtask.
However, it is convenient to set up the DESC record with DTkey=U and DRkey=I (or possibly U) and use Size, SpanMin, SpanMax, etc. because you can pick values for Size, SpanMin, and SpanMax which approximently correspond to the physical travel of the drive. That way when a new value is entered it is quantized on a step boundry.
From the example given in the Calculations section if Size=15 bits, then the total span = 26.0154 mm so:
Size=15
SpanMin=0.0
SpanMax=26.0154
This seems like a pretty good mating of the database with the motor indexer. PhyMin and PhyMax would be set as appropriate for the drive to keep it from running into the limit switches.
#
# TMG 4 channel indexer config file
#
# 1st indexer
#
# global controls
#
# comm1 - required - drive enable status control
# comm2 - optional - home status control
#
# resp1 - optional - global status readback
#
#
TMG1 |g5|comm1 |0|DS 01-1|EnableSC|
TMG1 |g5|comm2 |0|DS 01-1|HomeSC |
TMG1 |g5|resp1 |0|DS 01-1|BusySR |
#
#
# channel 0 -- -X axis
#
# comm1 - required - displacement control
# comm2 - optional - single axis home status control
#
# resp1 - optional - displacement readback
# resp2 - optional - status readback
# resp3 - optional - limit switch status readback
#
#
TMG1 |g1|comm1 |0|DS 01-1|-XDC |
TMG1 |g1|comm2 |0|DS 01-1|-XhomeSC|
TMG1 |g1|resp1 |0|DS 01-1|-XDR |
TMG1 |g1|resp2 |0|DS 01-1|-XbusySR|
TMG1 |g1|resp3 |0|DS 01-1|-XlimSR |
#
#
# int0 - optional - steps to db units scaling
# steps / mm in this case..
# int1 - optional - starting position when home (home offset)
# int2 - optional - acceleration (steps/sec2)
# int3 - optional - velocity (steps/sec)
# int4 - optional - starting rate (steps/sec)
# int5 - optional - homing starting rate (steps/sec)
# int6 - optional - home tmo
# int7 - optional - move tmo
# int8 - optional - move behavior
# 0 = don’t move to position after homing
# 1 = move to position after homing
#
TMG1 |g1|int0 |0|NULL |NULL |1259.52
TMG1 |g1|int1 |0|NULL |NULL |0.0
TMG1 |g1|int2 |0|NULL |NULL |150.0
TMG1 |g1|int3 |0|NULL |NULL |200.0
TMG1 |g1|int4 |0|NULL |NULL |20.0
TMG1 |g1|int5 |0|NULL |NULL |200.0
TMG1 |g1|int6 |0|NULL |NULL |60.0
TMG1 |g1|int7 |0|NULL |NULL |60.0
TMG1 |g1|int8 |0|NULL |NULL |1.0
#
#
#
# channel 1 -- +X axis
TMG1 |g2|comm1 |0|DS 01-1|+XDC |
TMG1 |g2|comm2 |0|DS 01-1|+XhomeSC|
TMG1 |g2|resp1 |0|DS 01-1|+XDR |
TMG1 |g2|resp2 |0|DS 01-1|+XbusySR|
TMG1 |g2|resp3 |0|DS 01-1|+XlimSR |
#
TMG1 |g2|int0 |0|NULL |NULL |1259.52
TMG1 |g2|int1 |0|NULL |NULL |1.0
TMG1 |g2|int2 |0|NULL |NULL |150.0
TMG1 |g2|int3 |0|NULL |NULL |200.0
TMG1 |g2|int4 |0|NULL |NULL |20.0
TMG1 |g2|int5 |0|NULL |NULL |200.0
TMG1 |g2|int6 |0|NULL |NULL |60.0
TMG1 |g2|int7 |0|NULL |NULL |60.0
TMG1 |g2|int8 |0|NULL |NULL |1.0
#
#
# channel 2 -- -Y axis
#
TMG1 |g3|comm1 |0|DS 01-1|-YDC |
TMG1 |g3|comm2 |0|DS 01-1|-YhomeSC|
TMG1 |g3|resp1 |0|DS 01-1|-YDR |
TMG1 |g3|resp2 |0|DS 01-1|-YbusySR|
TMG1 |g3|resp3 |0|DS 01-1|-YlimSR |
#
TMG1 |g3|int0 |0|NULL |NULL |1259.52
TMG1 |g3|int1 |0|NULL |NULL |0.0
TMG1 |g3|int2 |0|NULL |NULL |150.0
TMG1 |g3|int3 |0|NULL |NULL |200.0
TMG1 |g3|int4 |0|NULL |NULL |20.0
TMG1 |g3|int5 |0|NULL |NULL |200.0
TMG1 |g3|int6 |0|NULL |NULL |60.0
TMG1 |g3|int7 |0|NULL |NULL |60.0
TMG1 |g3|int8 |0|NULL |NULL |1.0
#
#
# channel 3 -- +Y axis
#
TMG1 |g4|comm1 |0|DS 01-1|+YDC |
TMG1 |g4|comm2 |0|DS 01-1|+YhomeSC|
TMG1 |g4|resp1 |0|DS 01-1|+YDR |
TMG1 |g4|resp2 |0|DS 01-1|+YbusySR|
TMG1 |g4|resp3 |0|DS 01-1|+YlimSR |
#
TMG1 |g4|int0 |0|NULL |NULL |1259.52
TMG1 |g4|int1 |0|NULL |NULL |0.0
TMG1 |g4|int2 |0|NULL |NULL |150.0
TMG1 |g4|int3 |0|NULL |NULL |200.0
TMG1 |g4|int4 |0|NULL |NULL |20.0
TMG1 |g4|int5 |0|NULL |NULL |200.0
TMG1 |g4|int6 |0|NULL |NULL |60.0
TMG1 |g4|int7 |0|NULL |NULL |60.0
TMG1 |g4|int8 |0|NULL |NULL |1.0
Operation via a terminal server works properly.
If the drive isn’t powered when TMGtask is started the terminal servers that we use (Lantronix) won’t allow a connection therefore the program exits. The indexer requires the use of serial handshaking and apparently when handahaking is enabled connections aren’t allowed if the handshaking lines are in the wrong state.
However, once the program connects it seems to be able to stay connected if the drive is turned off although I haven’t checked carefully to see if it eventually disconnects.
Operation via a Cyclades serial card seems to work but hasn’t been tested recently.
TMGtask(8) uses a program loaded into the indexer memory. TMGutil(8) is used for loading the program. Watch the AccelNET release notes for changes to TMGtask which may cause the indexer’s internal program to need to be reloaded.
The int9 parameters probably aren’t much good unless you have a modified indexer which brings the CW and CCW limit inputs to the outside so they may be connected to the limit switches. At the time of this writing (06-04-2008) this has only been done to a single indexer unit which is part of an R&D project at NEC.