public class AutochangerTwoTrucks extends MobileItem
| Modifier and Type | Class and Description |
|---|---|
class |
AutochangerTwoTrucks.ActivatedACBrakes |
class |
AutochangerTwoTrucks.ReleasedACBrakes |
agentStateService, beginTime, commandDuration, currentAction, dataProviderDictionaryService, FCSLOG, hasToWaitForEndOfAction, lock, moving, name, path, readSensorsHandle, scheduler, timeoutExceededalertSeparator| Constructor and Description |
|---|
AutochangerTwoTrucks(AutochangerTruck truckXminus,
AutochangerTruck truckXplus,
EPOSControllerForLinearRail acTruckXminusController,
EPOSControllerForLinearRail acTruckXplusController)
Build a new AutoChangerTrucksModule.
|
| Modifier and Type | Method and Description |
|---|---|
void |
abortAction(FcsEnumerations.MobileItemAction action,
long delay)
aborts action actually running.
|
void |
activateBrakesAndDisable()
activate both brakes then go to state SwitchOnDisabled for the 2 controllers.
|
void |
alignFollower(int deltaMax)
move follower truck to driverPosition.
|
void |
alignFollowerAndMoveEmptyFromApproachToHandoff() |
void |
alignFollowerForLoader() |
void |
alignFollowerLenient() |
void |
alignFollowerStrict() |
void |
build() |
void |
checkConditionsForTrucksMotion()
This method sends Exceptions if the conditions for trucks motion are not
filled.
|
void |
checkDeltaPosition() |
void |
checkPositionSensors()
This method is called at the end of actions to check that after a motion to
well known position as STANDBY, HANDOFF and ONLINE, position sensors confirm
the trucks position.
|
void |
configureControllers()
Configure Autochanger trucks driver and follower controllers.
|
StatusDataPublishedByAutoChangerTrucks |
createStatusDataPublishedByAutoChangerTrucks()
Creates an object to be published on the status bus.
|
void |
enableControllersAndReleaseBrake()
This method is used in the startAction method.
|
void |
endAction(FcsEnumerations.MobileItemAction action)
end current action.
|
void |
fastProfile()
change speed and acceleration profile to fast
|
int |
findTargetOnlinePosition()
Read the proximity sensors to adjust the new target online position once the
preliminaryTargetPosition has been reached
|
int |
getApproachOnlinePosition()
for tests
|
int |
getApproachStandbyPosition() |
String |
getDriverSide()
for simu and tests
|
int |
getHandoffPosition()
Return HANDOFF position.
|
int |
getOnlinePosition()
Return ONLINE position.
|
int |
getPosition()
Return actual trucks driverPosition.
|
int |
getStandbyPosition()
Return STANDBY position.
|
long |
getTimeoutForTrucksMotion()
Return the timeout for trucks motion.
|
void |
goToHandOff()
Move Autochanger trucks to the Handoff position.
|
void |
goToHandOffForLoader()
Move Autochanger trucks to the Handoff position in order to load or unload a filter to or from the camera.
|
void |
goToOnline()
Move Autochanger trucks to the Online position.
|
void |
goToStandby()
Move Autochanger trucks to the Standby position.
|
void |
homing()
Do homing of both controllers.
|
void |
init() |
void |
initializeControllers() |
boolean |
isActionCompleted(FcsEnumerations.MobileItemAction action) |
boolean |
isAtHandoff()
Returns the boolean field atHandoff.
|
boolean |
isAtOnline()
Returns the boolean field atOnline.
|
boolean |
isAtStandby()
Returns the boolean field atStandby.
|
boolean |
isHomingDone()
Return true if the homing of the trucks has been done.
|
boolean |
isInitialized()
Return true if both controllers are initialized and homing of trucks are
done.
|
boolean |
isPositionCorrectForExchangeWithLoader() |
boolean |
isPositionSensorErrorsTransient()
At the end of a motion during tests, a bad positionning of the trucks in a
way that both sensors send the same value can be detected as an error.
|
boolean |
isPositionSensorsInError()
Return true if TruckXminus position sensors or TruckXminus position sensors
are in error.
|
void |
moveAndClampFilterOnline() |
void |
moveFilterToStandby()
Move a filter to standby position step by step.
|
void |
moveFollowerTruck(int newPos)
move truck which is controlled by follower controller independently of truck
which is controlled by master controller
|
void |
moveToAbsoluteTargetPosition(int targetPosition)
Move the trucks to an absolute position given as argument.
|
void |
moveToApproachOnlinePositionWithHighVelocity() |
void |
moveToApproachOnlinePositionWithLowVelocity() |
void |
moveToApproachStandbyPositionWithHighVelocity() |
void |
moveToApproachStandbyPositionWithLowVelocity() |
void |
moveToHandoffWithHighVelocity() |
void |
moveToStandbyEmptyWithLowVelocity()
to fix carousel unlocking mechanical issues at SLAC, a parameter
standbyPositionEmpty has been created.
|
void |
moveToStandbyWithLowVelocity() |
void |
moveToTargetOnlinePosition()
Move a filter slowly to preliminaryTargetPosition, then computes the new
target position and finally reaches it.
|
boolean |
myDevicesReady()
Return True if all CAN open devices useful for this MobileItemMobile are
ready for an action.
|
void |
postStart() |
void |
publishData() |
void |
quickStopAction(FcsEnumerations.MobileItemAction action,
long delay) |
void |
raiseProfileAcceleration()
change ProfileVelocity parameter to highSpeed
|
void |
raiseProfileDeceleration()
change ProfileVelocity parameter to highSpeed
|
void |
raiseProfileVelocity()
change ProfileVelocity parameter to highSpeed
|
int |
readPosition()
For the GUI and end users for test purpose.
|
double |
readProximitySensorDevice() |
void |
recoveryGoToPosition(int pos) |
void |
releaseTruckTensionOnClamps()
In the moveAndClampOnline process, release the tension on the clamps after
they are locked by moving the trucks to a move natural position than the
computed Online postion.
|
void |
setNaturalPosition(int pos) |
void |
shutdown()
This shutdowns the scheduler.
|
void |
slowProfile()
change speed & acceleration profile to slow
|
void |
slowProfileAcceleration()
change ProfileAcceleration parameter to lowAcceleration
|
void |
slowProfileDeceleration()
change ProfileAcceleration parameter to lowAcceleration
|
void |
slowProfileVelocity()
change ProfileVelocity parameter to lowSpeed
|
void |
startAction(FcsEnumerations.MobileItemAction action)
starts the action given as argument.
|
void |
unclampAndMoveFilterToHandoff()
For end user at console for tests only.
|
void |
updatePosition()
Updates the field position of the trucks in reading the CPU of the
controller.
|
void |
updateState() |
void |
updateStateWithSensorsToCheckIfActionIsCompleted()
reads sensors or any device and updates state from sensors
It can be also reading a position or a current on a motor controller.
|
cancelReadingSensors, checkReadyForAction, executeAction, getActionDurationPath, getAlertService, getHaltRequired, getName, getPath, getSubsystem, isMoving, readSensorsUntilActionIsCompleted, registerAction, signal, waitForEndOfActionclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitclearAlarm, getAlertSeparator, raiseAlarm, raiseAlarm, raiseAlarm, raiseAlarm, raiseAlarmOnlyIfNew, raiseAlertOnlyEveryTenMinutes, raiseAlertOnlyEveryTenMinutes, raiseAlertOnlyIfNew, raiseWarning, raiseWarning, raiseWarning, raiseWarning, raiseWarningOnlyEveryTenMinutes, raiseWarningOnlyIfNewpublic AutochangerTwoTrucks(AutochangerTruck truckXminus, AutochangerTruck truckXplus, EPOSControllerForLinearRail acTruckXminusController, EPOSControllerForLinearRail acTruckXplusController)
truckXminus - truckXplus - acTruckXminusController - acTruckXplusController - public void build()
public void init()
@ConfigurationParameterChanger public void setNaturalPosition(int pos)
public String getDriverSide()
@Command(type=QUERY,
level=1,
description="Return actual trucks position (master position). Doesn\'t read again the position on the controller.")
public int getPosition()
@Command(type=QUERY,
level=1,
description="Return HANDOFF position. Doesn\'t read again the position on the controller.")
public int getHandoffPosition()
@Command(type=QUERY,
level=1,
description="Return STANDBY position. Doesn\'t read again the position on the controller.")
public int getStandbyPosition()
@Command(type=QUERY,
level=1,
description="Return ONLINE position. Doesn\'t read again the position on the controller.")
public int getOnlinePosition()
public int getApproachStandbyPosition()
public int getApproachOnlinePosition()
@Command(type=QUERY,
level=1,
description="Return timeout for trucks motion.")
public long getTimeoutForTrucksMotion()
@Command(type=QUERY,
level=0,
description="Return true if the carrier is at handoff position. This command doesn\'t read again the sensors.")
public boolean isAtHandoff()
public boolean isPositionCorrectForExchangeWithLoader()
@Command(type=QUERY,
level=0,
description="Return true if the carrier is at ONLINE position. This command doesn\'t read again the sensors.")
public boolean isAtOnline()
@Command(type=QUERY,
level=0,
description="Return true if the carrier is at STANDBY position. This command doesn\'t read again the sensors.")
public boolean isAtStandby()
@Command(type=QUERY,
level=0,
description="Return true if the homing of the trucks has been done.")
public boolean isHomingDone()
@Command(type=QUERY,
level=0,
description="Return true if TruckXminus position sensors or TruckXminus position sensors are in error.")
public boolean isPositionSensorsInError()
public boolean isPositionSensorErrorsTransient()
public void postStart()
public void initializeControllers()
@Command(type=ACTION,
level=2,
description="Configure Autochanger trucks driver and follower controllers.",
alias="initControllers")
public void configureControllers()
FcsHardwareException@Command(type=QUERY,
level=0,
description="Return true if both controllers are initialized and homing of trucks are done.")
public boolean isInitialized()
@Command(type=QUERY,
level=1,
description="Check if the motion of trucks are allowed.")
public void checkConditionsForTrucksMotion()
public void goToHandOff()
public void goToHandOffForLoader()
public void goToOnline()
FcsHardwareExceptionpublic void goToStandby()
@Command(type=ACTION,
level=2,
description="Move Autochanger trucks to the absolute position given as argument. At the end of motion : doesn\'t align follower then activate brakes and disable controllers.",
alias="mobeABSPos",
timeout=20000)
public void moveToAbsoluteTargetPosition(int targetPosition)
targetPosition - RejectedCommandExceptionFcsHardwareExceptionpublic void moveAndClampFilterOnline()
public void unclampAndMoveFilterToHandoff()
@Command(type=QUERY,
level=3,
description="Compute the actual online target position")
public int findTargetOnlinePosition()
@Command(type=ACTION,
level=3,
description="Move a filter slowly to preliminaryTargetPosition, then computes the new target position and finally reaches it",
timeout=5000)
public void moveToTargetOnlinePosition()
@Command(type=ACTION,
level=3,
description="Release the tension on the clamps after they are locked by moving the trucks to a move natural position than the computed Online postion.",
timeout=2000)
public void releaseTruckTensionOnClamps()
public void moveFilterToStandby()
public void moveToApproachStandbyPositionWithLowVelocity()
public void moveToApproachOnlinePositionWithLowVelocity()
public void alignFollowerAndMoveEmptyFromApproachToHandoff()
public void moveToApproachStandbyPositionWithHighVelocity()
public void moveToApproachOnlinePositionWithHighVelocity()
public void moveToStandbyWithLowVelocity()
public void moveToStandbyEmptyWithLowVelocity()
public void moveToHandoffWithHighVelocity()
@Command(type=ACTION,
level=3,
description="goToPosition in bypassing all safety tests. Use this command only if you know what you are doing.")
public void recoveryGoToPosition(int pos)
@Command(type=ACTION,
level=2,
description="Activate brakes and disable the 2 controllers.")
public void activateBrakesAndDisable()
public void startAction(FcsEnumerations.MobileItemAction action)
MobileItemstartAction in class MobileItempublic void abortAction(FcsEnumerations.MobileItemAction action, long delay)
MobileItemabortAction in class MobileItempublic void endAction(FcsEnumerations.MobileItemAction action)
MobileItemendAction in class MobileItempublic void quickStopAction(FcsEnumerations.MobileItemAction action, long delay)
quickStopAction in class MobileItem@Command(type=ACTION,
level=2,
description="Enable and release brake for the 2 controllers.")
public void enableControllersAndReleaseBrake()
public void alignFollower(int deltaMax)
deltaMax - public void alignFollowerLenient()
public void alignFollowerStrict()
public void alignFollowerForLoader()
@Command(type=QUERY,
level=3,
description="move truck which is controlled by follower controller independently of truck which is controlled by driver controller")
public void moveFollowerTruck(int newPos)
newPos - public void checkPositionSensors()
FcsHardwareException@Command(type=ACTION,
level=1,
description="Do homing for both controllers.")
public void homing()
@Command(type=QUERY,
level=1,
description="Update trucks position in reading controller.")
public void updatePosition()
FcsHardwareException@Command(type=QUERY,
level=1,
description="Read position on controllers then compute difference and throw exceptionif difference is > 1000.")
public void checkDeltaPosition()
@Command(type=QUERY,
level=0,
description="Update trucks position in reading controller and return position.")
public int readPosition()
RejectedCommandExceptionFcsHardwareException@Command(type=QUERY,
level=0,
description="Return a voltage in mV which represents a distance between between filterand filter beam.")
public double readProximitySensorDevice()
public boolean myDevicesReady()
MobileItemmyDevicesReady in class MobileItempublic boolean isActionCompleted(FcsEnumerations.MobileItemAction action)
isActionCompleted in class MobileItempublic void updateStateWithSensorsToCheckIfActionIsCompleted()
MobileItemupdateStateWithSensorsToCheckIfActionIsCompleted in class MobileItempublic void updateState()
public void slowProfile()
public void fastProfile()
public void slowProfileVelocity()
public void raiseProfileVelocity()
public void raiseProfileAcceleration()
public void slowProfileAcceleration()
public void raiseProfileDeceleration()
public void slowProfileDeceleration()
public StatusDataPublishedByAutoChangerTrucks createStatusDataPublishedByAutoChangerTrucks()
public void publishData()
publishData in class MobileItempublic void shutdown()
MobileItemshutdown in interface org.lsst.ccs.framework.HasLifecycleshutdown in class MobileItemCopyright © 2023 LSST. All rights reserved.