Each ion source can be of a different type, i.e. 40 sample unidirectional, 40 sample bidirectional, and 134 sample bidirectional. All sources may be operated at the same time.
The number of samples (source wheel size) is determined by the PhyMin and PhyMax parameter in the wheel position control datapoint (comm1) usually named CatNumC in the AccelNET database.
The operator may enter a new cathode number while the indexer is in motion and McSNICSmngr will use the newly entered cathode number as the destination, switching directions if necessary.
The IdxHmeSC control (comm2) is used to initiate a homing operation. This command may be issued at any time. If the indexer is in motion McSNICSmngr enters homing mode at the beginning of the next indexer cycle.
The IdxClrSC control (comm3) may be used to cancel the move at any time.
If there is a problem performing the move, for example if the indexer fails to complete an index cycle McSNICSmngr will enter home mode and attempt to rehome the indexer. If the attempted home operation fails the operator is notified and BusySR (resp2) is set to the error state.
PLUNGER means one or the other of the air cylinders which rotate the sample wheel.
PIN means the locking pin, which is parallel to the source axis. Remote control signals are connected to J1.
The source
connects to this schematic by air lines.
LS1 is the roller air switch
LS2 is the PIN is fully extended switch.
SOL1 withdraws the forward PLUNGER when energized.
SOL2 withdraws the reverse PLUNGER when energized.
SOL3 withdraws the PIN when energized.
Other SOLs operate service functions and are too obvious to discuss.
McSNICSmngr activates IdxChgSC (ctl1) to change position which closes K201 which closes K1 which closes K2. Within a few milliseconds K1 causes the SOL1 PLUNGER to retract, and K2 causes the SOL3 PIN to retract.
When the PIN retracts, LS2 changes state to false. McSNICSmngr reads this as IdxPosSR (read1). McSNICSmngr then releases K201 which releases K1, starting the K1 delay time.
At end of the K1 delay, K1 opens its contacts, one of which lets SOL1 plunger extend, and the other of which releases K2, starting the K2 delay time.
As it extends the plunger moves the wheel and the "latch" circuitry involving K102, K103 and K104 captures the momentary change (a blink) in the roller switch LS1. The LED CR2 should actually blink as the wheel advances.
At end of the K2 delay, K2 opens its contacts, one of which lets SOL3 PIN extend. If it extends properly LS2 changes state.
McSNICSmngr waits for InPosSR to return to the true state. Next IdxAdvSR (read2) is checked to confirm INDEXER ADVANCED.
IdxAckSC (ctl2) is set true to clear INDEXER ADVANCED. This sets K202, which resets the latch "flip-flop".
After IdxAdvSR goes to the false state IdxAckSC is set false and the cathode number is incremented.
If this is not specified it defaults to "MNGRconf" in the current working directory (i.e. the directory where the program was started).
If this argument is not specified it generally defaults to the program name.
If this file does not exist it will be created when the program is started. If the file is created at startup time the commanded and current cathode numbers (CatNumC, CatNumR) will be set to zero and the indexer will perform a homing operation automatically the first time a move is attempted.
If this is not specified it defaults to "mcs_config.dat" in the current working directory (i.e. the directory where the program was started).
Defaults to McSNICSmngr.
Parameters needed by this program can be combined with parameters belonging to other programs. The "program name" field in the configuration file differentiates the entries.
McSNICSmngr uses "McSNICSmngr" as the program name when searching the file.
Groups 1 through 4 are used. Each group represents the controls for one indexer system.
If the parameters marked required are missing from the configuration file the indexer will not work. Error messages will be printed to stderr indicating this.
Usually this is named CatNumC in the AccelNET database.
The control key should be set to RSetK.
This parameter should be owned by whatever task McSNICSmngr registers as and the permissions set for indirect update by users and unconditional update for the owner.
The number of samples (source wheel size) is determined by PhyMin and PhyMax. Usually PhyMin is set to zero and PhyMax is set to the maximum wheel position.
Using a 40 sample source as an example:
PhyMin = 0
PhyMax = 39
Usually this is named IdxHmeSC in the AccelNET database.
This is a 1 bit control, nop/home.
0.0 = nop
1.0 = home
The control key should be set to Mom.
This parameter should be owned by whatever task McSNICSmngr registers as and the permissions set for indirect update by users and unconditional update for the owner.
When a user task attempts to set this parameter to the value of home McSNICSmngr is sent an indirect update msg.
When McSNICSmngr receives the indirect update message it initiates the homing operation and sets the value of the datapoint to home pending completion of the homing operation.
When the homing operation completes the datapoint is reset to the nop state.
Usually this is named IdxClrSC in the AccelNET database.
This is a 1 bit control, nop/clear.
0.0 = nop
1.0 = clear
The control key should be set to Mom.
This parameter should be owned by whatever task McSNICSmngr registers as and the permissions set for indirect update by users and unconditional update for the owner.
When a user task attempts to set this parameter to the value of clear McSNICSmngr is sent an indirect update msg.
When McSNICSmngr receives the indirect update message it initiates the index cancel operation or schedules it to occur at the completion of the current move if there is one in progress.
McSNICSmngr sets the value of the datapoint to clear pending the actual termination of the index cancel operation.
When the index cancel has completed the datapoint is reset to the nop state.
The index operation is terminated at the completion of the current index cycle if one is in progress.
If an index operation is in progress a message is returned to the initiator of the operation telling that the index cycle cancellation is pending, otherwise a message is returned stating that no index operation is in progress.
When the index cancel completes a message is returned telling about it.
Usually this is named CatNumR in the AccelNET database.
This parameter should be owned by whatever task McSNICSmngr registers as and the permissions set for direct update for the owner.
PhyMin and PhyMax are usually set to the same values as the cathode position control parameter comm1.
Usually this is named BusySR in the AccelNET database.
This is a 2 bit control.
0.0 = rest
1.0 = busy
2.0 = need_home
3.0 = error
rest means that the indexer isn’t moving and is ready for the next move.
busy means there is a move in progress.
need_home means that the indexer needs to be rehomed. This may happen automatically when a new cathode position is entered or may be done explicitly be activating the HomeSC.
error means that a fatal error has occurred. For example the indexer may have encountered an error while homing the drive.
The control key should be set to RSet.
This parameter should be owned by whatever task McSNICSmngr registers as and the permissions set for direct update for the owner.
This is a 1 bit control.
0.0 = bad
1.0 = ok
The control key should be set to RSet.
This parameter should be owned by whatever task McSNICSmngr registers as and the permissions set for direct update for the owner.
See the section "Notes on using resp3" for more information.
Usually this is named IdxChgSC in the AccelNET database.
This is a 1 bit control, nop/chg.
0.0 = nop
1.0 = chg
The control key should be set to Mom.
This parameter should be writable by whatever task McSNICSmngr registers and owned as appropriate.
Usually this is named IdxAckSC in the AccelNET database.
See read2 for more information.
This is a 1 bit control, nop/chg.
0.0 = nop
1.0 = chg
The control key should be set to Mom.
This parameter should be writable by whatever task McSNICSmngr registers and owned as appropriate.
See the section Note on using ctl2 and read2 for more information about this parameter.
Usually this is named IdxDirSC in the AccelNET database.
Some models of the McSNICS ion source are capable of bidirectional operation. This control determines which way the indexer will move.
This is a 1 bit control, fwd/rev.
0.0 = forward
1.0 = reverse
The control key should be set to IncN.
This parameter should be writable by whatever task McSNICSmngr registers and owned as appropriate.
When this parameter is present it enables bidirectional mode in McSNICSmngr.
Usually this is named IdxPosSR in the AccelNET database.
This is a 1 bit readback.
0.0 = NOT in
position
1.0 = in position
Ownership and control keys for this parameter do not matter to this program. They should be set as appropriate for the I/O subsytem providing this information.
Usually this is named IdxAdvSR in the AccelNET database.
This is a 1 bit readback.
0.0 = nop
1.0 = indexer advanced
Ownership and control keys for this parameter do not matter to this program. They should be set as appropriate for the I/O subsytem providing this information.
See the section Note on using ctl2 and read2 for more information about this parameter.
zero
Usually this is named IdxHmeSR in the AccelNET database.
This is a 1 bit readback.
0.0 = nop
1.0 = wheel is at home position
Ownership and control keys for this parameter do not matter to this program. They should be set as appropriate for the I/O subsytem providing this information.
Usually this is named LclRemSR in the AccelNET database.
This is a 1 bit readback.
0.0 = local mode
1.0 = remote mode
Ownership and control keys for this parameter do not matter to this program. They should be set as appropriate for the I/O subsytem providing this information.
If this parameter is not present the delay time defaults to 1 second.
Note: the value may be placed in the Label field as shown below in the S2 ion source example. However, this behavior is deprecated and the value should now be placed in the Preset field as shown in the S1 example for the const1 entry.
The amount of time to wait before declaring an indexer move timed out.
If this parameter is not present the delay time defaults to 10 seconds.
If this parameter is not present the delay time defaults to 0 seconds.
See the section "Notes on using resp3" for more information.
If this parameter is not present the delay time defaults to 0 seconds.
See the section "Notes on using resp3" for more information.
The cathode position number is stored in the Preset field.
One entry is used for each cathode position to be excluded.
See the section "Notes on using resp3" for more information.
The state of the latch is read by the software via read2 and is cleared by a momentary actuation of ctl2.
Each time the indexer is advanced the latch is read and cleared to confirm that the indexer wheel actually advanced.
This is generally a good thing in that it provides an integrity check of indexer operation.
Usually ctl2 and read2 are implemented in the system, however, some users may not like this check for some reason.
If either ctl2 or read2 is ommited or commented out in the CONFLIST the check is skipped. A warning message is printed to stderr (which is usually redirected into a logging file) when the program is started indicating that the parameter(s) wasn’t (weren’t) found.
The newer model index controllers also contain a hardware interlock which prevents a new index operation if the latch isn’t cleared so it is necessary for the user wishing to bypass the check to make a hardware modification to the controller to bypass the interlock relay contact.
If the related parameters are present in the configuration file McSNICSmngr will set resp3 false (0.0) when the move begins and true (1.0) when the move ends.
Using the cathode power supply as an example this is done by creating a virtual datapoint for the voltage control (VC) and naming the physical control VCactual. NUMmngr is used process this in this way: VCactual = VC * NlkSR.
When a new cathode position is entered NlkSR (resp3) is immediately set false and BusySR (resp2) is immediately set to busy. If const2 index 0 is present the actual move will start after the delay time specified by the directive. This is used to allow the power supplies time to decay.
When the move completes NlkSR is immediately set true and if const2 index 1 is present BusySR stays in the busy state until the time specified by the directive is reached then BusySR is set to the rest state.
BusySR is used by DMANserv_v2(8) to determine when to move onto the Warmup state so this allows time for the power supplies to reach their operating point and possibly time for the beam to ramp up before beginning the next phase of the AMS measurement.
Cathode positions may be "excluded" i.e. NlkSR is not set true when in particular cathode positions by using the const3 directives. Each cathode position to be excluded is listed as a const3 directive and the list is searched when a move completes to see if a cathode position is listed. The Preset field is used to specify the cathode number. The index values only need to be unique so the entry loads.
The mcs_config.dat file is used by McSNICSmngr to remember the cathode position. If this file is found the information in it is used to initialize the cathode position, however, the indexer may still want to do an autorehome the first time a move is initiated.
This occurs because McSNICSmngr is usually started before the I/O manager(s) are started. If the database was freshly loaded the value of the LclRemSR is 0.0 (nop).
McSNICSmngr interpretes this as needing to do an autorehome because whenever the local/remote switch is changed to the local position the autorehome flag is set.
If this is annoying enough it could be gotten around by starting the I/O manager(s) before McSNICSmngr is started.
In bidirectional mode the test is much more stringent and we still don’t see a failure.
If you (the user) experience problems it’s likely the cause is broken or misadjusted hardware. Things do wear out, and dirt in the air system tends to clog things up.
One thing that has been seen and diagnosed is ocassional timeouts of IdxAdvSR. The cause was determined to be a leaky pneumatic air switch (LS1) in the controller. If you (the user) see a problem like this you should check for air leaks at this switch or possibly at the pneumatic switch located on the ion source.