######################################################################## ### FILE: fluidics.mod ### PURPOSE: Fluidics initialization ### SCOPE: Top Level ### ### Copyrights (C) 2010 Life Technologies. All rights reserved. ######################################################################## ### Add Fluidics:ARM commands once robot is ready STATE:NEW Fluidics:Arm -requires=Fluidics:Robot STATe:TRIGger -immediate -states=Fluidics:Arm -edge=Set InitArm PUBLish Info "Setting up Fluidics ARM mehods..." FLUidics:ARM:MODule aliases.mod FLUidics:ARM:MODule fluidicsarm.mod ### Create aliases for RinseInside/RinseOutside FLUidics:ALIas RinseInside ARM:RinseInside FLUidics:ALIas RinseOutside ARM:RinseOutside ### Add stage axes "-StageX" and "-StageY" axes to ### Robotics subsystem once MCB is available STATe:NEW Fluidics:InjectionPorts -requires=Fluidics:Robot,MCB STATe:TRIGger -states=Fluidics:InjectionPorts -edge=Set StageAxes:Add INFO "Adding stage axes X & Y to robotics control" MCB:MOTion:X:BASE? FLUidics:ARM:AXIS+ -type=stage STageX $1 $2 FLUidics:ARM:STageX:SKIP= True MCB:MOTion:Y:BASE? FLUidics:ARM:AXIS+ -type=stage STageY $1 $2 FLUidics:ARM:STageY:SKIP= True FLUidics:ARM:REServation+ InjectionPorts -STageX -STageY STATe:TRIGger -states=Fluidics:InjectionPorts -edge=Clear StageAxes:Clear IF $(STATE? -errorState=True Fluidics:Robot) TRY INFO "Removing stage axes X & Y from robotics control" FLUidics:ARM:REServation- InjectionPorts FLUidics:ARM:AXIS- StageX FLUidics:ARM:AXIS- StageY INFO "Failed to remove FLUidics:ARM:Stage{X|Y} axes: [${error}] ${message}" ### Disable motion once front door is opened STATE:NEW Fluidics:Disabled -requires=Fluidics:Robot -conflicts=FrontDoor:Locked STATE:TRIGGer -states=Fluidics:Disabled -edge=Set Fluidics:Disable FLUidics:ARM:DISABLE STATE:TRIGGer -states=Fluidics:Disabled -edge=Clear Fluidics:Enable IF $(STATE? Fluidics:Robot) FLUidics:ARM:ENABLE ### Home Z axis once robot is available STATe:DEPendency Motion:Allowed -requires=Fluidics:Robot -conflicts=Fluidics:Disabled,TankDrawer:Open STATe:TRIGger -states=Motion:Allowed -edge=set -immediate HomeZ FLUidics:ARM:HOME Z ### Home arm once motion is allowed STATe:NEW Fluidics:ArmHomed -requires=Motion:Allowed STATe:TRIGGer -states=Fluidics:ArmHomed -edge=Set HomeArm UNLESS $(:FLUidics:ARM:HOMED?) :FLUidics:ARM:HOME UNLESS $(:FLUidics:ARM:PARKED?) FLUidics:ARM:PARK ### Home syringe once liquid pump is on STATe:NEW Fluidics:SyringeHomed -requires=Fluidics:ArmHomed,LiquidPump:On STATe:TRIGGer -states=Fluidics:SyringeHomed -edge=Set -immediate HomeSyringe FLUidics:ARM:HomeSyringe FLUidics:ARM:PARK ### Require fluidics for initialization STATe:DEPendency Fluidics:Ready -requires=Fluidics:SyringeHomed,Fluidics:InjectionPorts,Fluidics:Arm ### Aliases for backwards compatibility FLUidics:ALIAS LiquidHeight~ LiquidLevel~ FLUidics:ALIAS LiquidHeight= LiquidLevel= FLUidics:ALIAS LiquidHeight? LiquidLevel? FLUidics:ALIAS VolumeByHeight? VolumeByLevel? -fromBottom FLUidics:ALIAS HeightByVolume? LevelByVolume? -fromBottom ### Set up tasks to be performed periodically during idle times. #IDLE:TASK+ TipCalibrationCheck -interval=3600 -duration=60 -ignoreErrors # FLUidics:ARM:TipCalibrationCheck CALFrame # FLUidics:ARM:TipCalibrationCheck CALStage # # # IDLE:TASK+ HomeRobot -interval=900 -duration=15 # TRY # ACQuisition+ -owner=IdleTask Robot # FLUidics:ARM:HOME -prehome # FLUidics:ARM:PARK # ACQuisition- -owner=IdleTask Robot # # ACQuisition- -owner=IdleTask Robot # ERRor # #