public class Autochanger extends Object implements org.lsst.ccs.framework.HardwareController, FilterHolder, AlertRaiser, org.lsst.ccs.framework.HasLifecycle
alertSeparator| Constructor and Description |
|---|
Autochanger(PlutoGatewayInterface plutoGateway) |
| Modifier and Type | Method and Description |
|---|---|
void |
alignSlave()
move slave truk to masterPosition.
|
void |
checkConditionsForActioningOnlineClamps()
log if actions on online clamps are allowed, throws an exception otherwise.
|
void |
checkConditionsForClosingLatches()
Check if Autochanger latches can be closed.
|
void |
checkConditionsForOpeningLatches()
Check if latches can be opened.
|
void |
checkFilterSafetyBeforeMotion()
This methods checks that filter can be moved by trucks.
|
void |
checkLatchMotionAllowed()
Check if Local Protection Module allows latches motion.
|
void |
checkLinearRailMotionAllowed()
Check if Local Protection Module allows linear rails motions.
|
void |
checkOnlineClampMotionAllowed()
Check if Local Protection Module allows online clamps motion.
|
void |
closeClamps()
close clamps in mode PROFILE_POSITION.
|
void |
closeLatches()
Close latches
|
StatusDataPublishedByAutoChanger |
createStatusDataPublishedByAutoChanger()
Creates an Object to be published on the STATUS bus.
|
void |
decreaseCurrentMonitoring()
slow down online clamps current monitoring for the 3 clamps
|
void |
decreaseLinearRailsCurrentMonitoring()
slow down online clamps current monitoring for the 3 clamps
|
void |
dockingAtStandbyPositionWithoutFilter() |
void |
fastTrucksProfile()
change speed and acceleration profile to fast
|
org.lsst.ccs.services.alert.AlertService |
getAlertService()
return alertService
|
AutochangerTwoTrucks |
getAutochangerTrucks()
returns trucks to be able to send commands to trucks in fcs subsystem.
|
int |
getFilterID()
If autochanger holds a filter, returns filterID, else returns 0.
|
String |
getFilterOnTrucksName()
If autochanger holds a filter, return filter name else return null.
|
AutochangerTwoLatches |
getLatches()
return latches
|
String |
getName() |
AutochangerThreeOnlineClamps |
getOnlineClamps()
returns onlineClamps to be able to send commands to onlineClamps in fcs
subsystem.
|
org.lsst.ccs.Subsystem |
getSubsystem() |
void |
goToHandOff()
Move Autochanger trucks to the Handoff position.
|
void |
goToOnline()
Move Autochanger trucks to the Online position.
|
void |
goToStandby()
Move Autochanger trucks to the Standby position.
|
void |
grabFilterAtStandby()
Close latches on filter at STANDBY.
|
void |
homingClamps()
do homing of the 3 clamps
|
void |
homingTrucks()
Do homing of both trucks controllers.
|
void |
increaseCurrentMonitoring()
speed up online clamps current monitoring for the 3 clamps
|
void |
increaseLinearRailsCurrentMonitoring()
increase current monitoring for the 2 trucks
|
void |
initializeHardware()
For end users, for tests and in engineering mode.
|
boolean |
isAtApproachStandbyPosition() |
boolean |
isAtHandoff()
Return true if autochanger trucks are at HANDOFF.
|
boolean |
isAtOnline()
return true if autochanger trucks are at ONLINE.
|
boolean |
isAtStandby()
Return true if autochanger trucks are at STANDBY.
|
boolean |
isCANDevicesReady() |
boolean |
isCarouselHoldingFilterAtStandby()
TODO when autochanger is in standalone mode this method has to answer the
value of the fake carousel sensor.
|
boolean |
isEmpty()
Return true if there is no filter in the autochanger.
|
boolean |
isFilterOnAC(int filterID) |
boolean |
isFilterONLINE(int filterID) |
boolean |
isHardwareReady() |
boolean |
isHoldingFilter()
Return true if a filter is in trucks and latches are LOCKED.
|
boolean |
isInitialized()
Return true if plutoGateway, trucks, latches and onlineClamps are
initialized.
|
boolean |
isLinearRailMotionAllowed() |
boolean |
isLoaderConnected()
Returns the boolean field loaderConnected.
|
boolean |
isLoaderHoldingFilterAtHandoff()
Return true if loader is connected and holding a filter.
|
boolean |
isNotHoldingFilter()
Return true if FilterHolder is NOT holding filter, false otherwise.
|
boolean |
isSensorsInError()
Return true if an error has been detected on sensors.
|
void |
lockClamps()
Locks clamps : closed with a strong pressure (high current).
|
void |
lockFilterAtOnline()
to be used in setFilter
|
void |
moveAndClampFilterOnline() |
void |
moveEmptyFromStandbyToHandoff() |
void |
moveFilterToStandby()
Move a filter to standby position step by step.
|
void |
openClamps()
Opens the 3 clamps.
|
void |
openLatches()
Open latches
|
void |
postStart() |
void |
publishData()
Publish Data on status bus for trending data base and GUIs.
|
void |
setFastAcqRateLinearRails(int rate)
set a new value for the acquisition frequency of linear rail controllers
current.
|
void |
setFastAcqRateOnlineClamps(int rate)
set a new value for the acquisition frequency of ONLINE clamps controllers
current.
|
void |
setFilterOnTrucksID(int filterOnTrucksID)
Used for simulator only.
|
void |
slowTrucksProfile()
change speed & acceleration profile to slow
|
void |
unlockClamps()
Unlocks clamps : slows down current sent to controller in order to
decrease pressure on the clamps.
|
void |
updateFCSStateToReady()
Update FCS state and FCS readyness state and publish on the status bus.
|
void |
updateFilterOnTrucksID()
update filterOnTrucksID
|
void |
updateStateWithSensors()
This method reads all the sensors and updates the trucks, latches and online
clamps state.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcheckHardware, checkStoppedclearAlarm, getAlertSeparator, raiseAlarm, raiseAlarm, raiseAlarm, raiseAlarm, raiseWarning, raiseWarningpublic Autochanger(PlutoGatewayInterface plutoGateway)
public String getName()
getName in interface AlertRaiserpublic org.lsst.ccs.Subsystem getSubsystem()
getSubsystem in interface AlertRaiserpublic org.lsst.ccs.services.alert.AlertService getAlertService()
AlertRaisergetAlertService in interface AlertRaiser@Command(type=QUERY,
level=1,
description="Return true if an error has been detected on sensors.")
public boolean isSensorsInError()
public AutochangerTwoTrucks getAutochangerTrucks()
public AutochangerThreeOnlineClamps getOnlineClamps()
public AutochangerTwoLatches getLatches()
@Command(type=QUERY,
level=0,
description="If autochanger holds a filter, return filterID, else return 0.")
public int getFilterID()
getFilterID in interface FilterHolderpublic void setFilterOnTrucksID(int filterOnTrucksID)
filterOnTrucksID - @Command(type=QUERY,
level=1,
description="return true if filter with filterID is on AC")
public boolean isFilterOnAC(int filterID)
filterID - public boolean isFilterONLINE(int filterID)
filterID - @Command(type=QUERY,
level=0,
description="If a filter is in autochanger, return filter name else return NO_FILTER.")
public String getFilterOnTrucksName()
@Command(type=QUERY,
level=0,
description="Return true if the loader is connected to the camera. This command doesn\'t read again the sensors.")
public boolean isLoaderConnected()
@Command(type=QUERY,
level=0,
description="Return true if the carousel is holding the filter at STANDBY position.")
public boolean isCarouselHoldingFilterAtStandby()
FcsHardwareException@Command(type=QUERY,
level=0,
description="Return true if loader is connected and holding a filter. This command doesn\'t read again the sensors.")
public boolean isLoaderHoldingFilterAtHandoff()
FcsHardwareException@Command(type=QUERY,
level=0,
description="Return true if all autochanger CANopen devices are booted, identified and initialized.")
public boolean isCANDevicesReady()
@Command(type=QUERY,
level=0,
description="Return true if all autochanger CANopen devices are booted, identified and initialized and homing of the controllers is done.")
public boolean isHardwareReady()
@Command(type=QUERY,
level=0,
description="Return true if all autochanger hardware is initialized.")
public boolean isInitialized()
public boolean isLinearRailMotionAllowed()
public void postStart()
postStart in interface org.lsst.ccs.framework.HasLifecycle@Command(type=QUERY,
level=1,
description="For end users, for tests and in engineering mode. This command can be used to recover after a missing hardware during fcs startup. For example, when fcs was started before hardware power up. Check all hardware and publish data.",
timeout=5000)
public void initializeHardware()
@Command(type=QUERY,
level=1,
description="Check if Local Protection Module allows linear rails motion.")
public void checkLinearRailMotionAllowed()
@Command(type=QUERY,
level=1,
description="Check if Local Protection Module allows latches motion.")
public void checkLatchMotionAllowed()
@Command(type=QUERY,
level=1,
description="Check if Local Protection Module allows online clamps motion.")
public void checkOnlineClampMotionAllowed()
@Command(type=QUERY,
level=1,
description="Check if the latches can be opened.")
public void checkConditionsForOpeningLatches()
FcsHardwareException@Command(type=QUERY,
level=1,
description="Check if Autochanger latches can be closed.")
public void checkConditionsForClosingLatches()
FcsHardwareException@Command(type=QUERY,
level=0,
description="log if actions on online clamps are allowed,throws an exception otherwise.")
public void checkConditionsForActioningOnlineClamps()
@Command(type=QUERY,
level=1,
description="Check if its safe for filters to move autochanger trucks.")
public void checkFilterSafetyBeforeMotion()
@Command(type=QUERY,
level=1,
description="Update clamp state in reading sensors.")
public void updateStateWithSensors()
updateStateWithSensors in interface FilterHolderFcsHardwareException@Command(type=QUERY,
level=1,
description="update filterOnTrucksID.")
public void updateFilterOnTrucksID()
@Command(type=ACTION,
level=1,
description="Update FCS state and FCS readyness state and publishes on the status bus.")
public void updateFCSStateToReady()
@Command(type=QUERY,
level=1,
description="Return true if a filter is in trucks and latches are CLOSED.")
public boolean isHoldingFilter()
isHoldingFilter in interface FilterHolderpublic boolean isNotHoldingFilter()
FilterHolderisNotHoldingFilter in interface FilterHolder@Command(type=QUERY,
level=0,
description="Return true if autochanger trucks are at HANDOFF. This command doesn\'t read again the sensors.")
public boolean isAtHandoff()
isAtHandoff in interface FilterHolder@Command(type=QUERY,
level=0,
description="Return true if autochanger trucks are at STANDBY. This command doesn\'t read again the sensors.")
public boolean isAtStandby()
isAtStandby in interface FilterHolder@Command(type=QUERY,
level=0,
description="Return true if autochanger trucks are at ONLINE. This command doesn\'t read again the sensors.")
public boolean isAtOnline()
isAtOnline in interface FilterHolder@Command(type=QUERY,
level=0,
description="Return true if autochanger trucks position is around approachStandbyPosition. This command doesn\'t read again the sensors.")
public boolean isAtApproachStandbyPosition()
@Command(type=ACTION,
level=1,
description="Move Autochanger trucks to the Handoff position.")
public void goToHandOff()
@Command(type=ACTION,
level=1,
description="Move Autochanger trucks to the Online position.")
public void goToOnline()
FcsHardwareException@Command(type=ACTION,
level=1,
description="Move Autochanger trucks to the Standby position.")
public void goToStandby()
@Command(type=ACTION,
level=1,
description="goToOnline with filter then adjust position then close and finally lock clamps",
autoAck=false,
timeout=20000)
public void moveAndClampFilterOnline()
@Command(type=ACTION,
level=1,
description="move filter to approachPosition with high speed and move to STANDBY with lowSpeed.",
autoAck=false,
timeout=30000)
public void moveFilterToStandby()
@Command(type=ACTION,
level=1,
description="Align slave controller position to master controller position.",
timeout=20000)
public void alignSlave()
@Command(type=ACTION,
level=1,
description="change ProfileVelocity parameter to lowSpeed and slowProfileAcceleration and slowProfileDeceleration")
public void slowTrucksProfile()
@Command(type=ACTION,
level=1,
description="change ProfileVelocity and ProfileAcceleration and ProfileDeceleration parameters to highSpeed")
public void fastTrucksProfile()
@Command(type=ACTION,
level=1,
description="Do homing for both controllers.")
public void homingTrucks()
@Command(type=ACTION,
level=1,
description="move to approach position with high velocity then move to STANDBY with low velocity")
public void dockingAtStandbyPositionWithoutFilter()
@Command(type=ACTION,
level=1,
description="Open latches.")
public void openLatches()
FcsHardwareException@Command(type=ACTION,
level=1,
description="Close latches.")
public void closeLatches()
FcsHardwareException@Command(type=ACTION,
level=1,
description="Opens the 3 online clamps in mode PROFILE_POSITION.",
timeout=6000)
public void openClamps()
@Command(type=ACTION,
level=1,
description=" close clamps in mode PROFILE_POSITION for AC1 and AC2",
timeout=6000)
public void closeClamps()
@Command(type=ACTION,
level=1,
description="Locks clamps : closed with a strong pressure (high current).",
timeout=6000)
public void lockClamps()
@Command(type=ACTION,
level=1,
description="unlocks clamps : decreases current in controller to decrease pressure.",
timeout=6000)
public void unlockClamps()
@Command(type=ACTION,
level=1,
description="do homing of the 3 ONLINE clamps : open in CURRENT mode and homing of controller",
timeout=6000)
public void homingClamps()
@Command(type=QUERY,
level=0,
description="Return true if there is no filter in the autochanger. This command doesn\'t read again the sensors.")
public boolean isEmpty()
@Command(type=ACTION,
level=1,
alias="grabFilter",
description="Go to STANDBY to grab filter and stay at STANDBY.")
public void grabFilterAtStandby()
RejectedCommandException - if autochanger trucks are not at STANDBY.@Command(type=ACTION,
level=1,
description="open latches then go to approachStandbyPosition with low speed and move to HANDOFF with highSpeed.",
timeout=20000,
autoAck=false)
public void moveEmptyFromStandbyToHandoff()
@Command(type=QUERY,
level=1,
description="set a new value for the acquisition frequency of linear rail controllers current in milliseconds.")
public void setFastAcqRateLinearRails(int rate)
rate - @Command(type=QUERY,
level=1,
description="set a new value for the acquisition frequency of ONLINE clamps controllers current, in milliseconds.")
public void setFastAcqRateOnlineClamps(int rate)
rate - @Command(type=QUERY,
level=1,
description="speed up online clamps current monitoring for the 3 clamps")
public void increaseCurrentMonitoring()
@Command(type=QUERY,
level=1,
description="slow down online clamps current monitoring for the 3 clamps")
public void decreaseCurrentMonitoring()
public void increaseLinearRailsCurrentMonitoring()
public void decreaseLinearRailsCurrentMonitoring()
public StatusDataPublishedByAutoChanger createStatusDataPublishedByAutoChanger()
public void publishData()
public void lockFilterAtOnline()
Copyright © 2019 LSST. All rights reserved.