@@ -337,6 +337,15 @@ def set_speed(self, axis: int, speed: int) -> None:
337337 axis_name = self ._axis_mapper [axis ]
338338 self .get_command (bytes (f"SPEED { axis_name } ={ speed } " , "ascii" ))
339339
340+ def find_max_speed (self , axis : int ):
341+ axis_name = self ._axis_mapper [axis ]
342+ speed = 100000000
343+ #set the sepeed
344+ self .get_command (bytes (f"SPEED { axis_name } ={ speed } " , "ascii" ))
345+ #read off the max speed set by controller
346+ response = self .get_command (bytes (f"SPEED { axis_name } ?" , "ascii" ))
347+ return (float (response .strip ()[5 :]))
348+
340349 def wait_for_motor_stop (self , axis : int ):
341350 # give axis a chance to start maybe?
342351 time .sleep (0.2 )
@@ -387,9 +396,9 @@ def __init__(self, dev_conn: _ASIMotionController, axis: int) -> None:
387396 # mosaic etc... Maybe we just need to know it!
388397 self .min_limit = 0.0
389398 self .max_limit = 100000.0
390- # arbitary speed of 5 mm/s 10 is too fast for y but X appears
391- # to be fine on my stage at this speed.
392- self .set_speed (5 )
399+ # As detailed in ASI manual set speed to 67% of max
400+ max_speed = self . _dev_conn . find_max_speed ( self . _axis )
401+ self .set_speed (max_speed * 0.67 )
393402
394403 def move_by (self , delta : float ) -> None :
395404 self ._dev_conn .move_by_relative_position (self ._axis , int (delta ))
0 commit comments