I have found that the mount in my RCS400 is not robust enough to permit out of balance and still achieve accurate pointing. The scope has to be in good balance. I have an Optec Pyxis rotator and an SBIG ST2000 CCD. When the rotator turns, the balance is disturbed by the rotation of the optical train. I made a few mods in Aquireimages to prevent rotation during slewing and made a User Action to return the Pyxis to PA=0 before doing the next slew to another target. I am also including a script which turns the rotator to PA=0 and shuts down the CCD camera (I borrowed the latter from these Forums).

Someone may find these useful.

Mod in Aquireimages

// Slew-ahead logic. This will not slew-ahead from the last
// target of one set to the first target of the next set.
// That logic just got too complex, and has so little benefit.
// Consider the effect of a MinSetTime: Is this a wait or not?
// The slewNext and rotNext vars are passed to SUP.TakePicture()...
// slewNext = rotNext = false;
// if(Tn !== null)
// {
// Slew-ahead
// if(LightTargetImmediate(Tn))
// {
// slewNext = !TargetCloseEnough(Tn);
// rotNext = !RotatorCloseEnough(Tn) || WouldFlip(Tn.RA);
// }
// }


function SafeSlewIf(Tgt, Reason)
var willFlip = WouldFlip(Tgt.RA); // True if slew flips GEM, used to force rotator slew

if(!TargetInLimits(Tgt, Reason)) return false; // Unsafe for limits (Update ephemeris)

if(!TargetCloseEnough(Tgt) || willFlip) // Flip requires slew regardless!
SUP.StartSlewJ2000(Tgt.Name, Tgt.RA, Tgt.Dec);
Console.PrintLine(" (no slew, scope already within max error of target)");
if(Prefs.PointingUpdates.Simulate) // If simulating (need for initial target)
SUP.CalcSimImageCoordinates(Tgt.RA, Tgt.Dec); // Calculate simulator image

SUP.WaitForSlew(); //I inserted this line
if(Prefs.PointingUpdates.Simulate || !RotatorCloseEnough(Tgt) || willFlip) // Flip & Simulate require rotation regardless!
SUP.StartRotateToPA(Tgt.PA, Tgt.RA); // Rotate if > 1.0 deg error
Console.PrintLine(" (no rotate, already close enough to desired PA)");
return true;


' TargetEnd() Called from AcquireImages.js/~plan-acquire.js when the current
' target's processing is complete.
' Parameters:
' Plan ACP.Plan object for currently running plan
' Target Current ACP.Target object
' NextTarget Next ACP.Target object Or Null
' Use Util.Script.xxx to acces AcquireImages globals, etc.
' Return True to permit the script to continue. Returning False will cause the
' observing run to terminate.
Function TargetEnd(Plan, Target, NextTarget)
Util.Console.PrintLine " [useraction] TargetEnd called"
Util.Script.voiceForUA.Speak ("TargetEnd user action called")
Util.Console.PrintLine "Guider has stopped"
Util.Script.voiceForUA.Speak ("Guider has stopped")
If Util.Script.SUP.HaveRotator Then Util.Script.SUP.StartRotateToPA 0.0,0
Util.Console.PrintLine "Rotator has rotated to PA of 0 degrees"
Util.Script.voiceForUA.Speak ("Rotator has rotated to a position angle of 0")
TargetEnd = True
End Function

Script to turn rotator to PA=0 and shutdown camera.

Sub Main()
Dim Telescope, PA
Set SUP = CreateObject("ACP.AcquireSupport") ' Enables slewing
Call SUP.Initialize
If SUP.HaveRotator Then SUP.StartRotateToPA 0.0,0
Console.PrintLine "Rotator has rotated to 0"
Voice.Speak ("Rotator is now at 0 degrees")
Set Telescope = Util.ScriptTelescope ' Need this for parking/tracking
If Telescope.CanSetTracking Then
If Telescope.Tracking Then
Telescope.Tracking = False
''Util.WaitForMilliseconds 1000
End If
Console.PrintLine "Tracking has stopped"
Voice.Speak("Tracking has stopped")
End If
WaitForMilliseconds 20000
Console.PrintLine("Scope is now parked")
Voice.Speak("Scope is now parked")
If Telescope.Connected Then Util.ScriptTelescope.Connected = False ' Disconnect it from ACP
Console.PrintLine "Shutting down imager. Please wait..."
Voice.Speak("Shutting down imager. Please wait.")
If Camera.CanSetTemperature Then ' Try to do "nice" Shutdown
z = Camera.TemperatureSetpoint ' Remember this, as MaxIm remembers
Console.PrintLine " (raising temperature to +5.0C... 20 min max)"
Console.PrintLine " (cooler is now at " & Util.FormatVar(Util.ScriptCamera.Temperature, "0.0") & "C"
Camera.TemperatureSetpoint = 6.0 ' Raise temperature to +6C
For i = 1 To 20 ' Take 20 minutes max...
If Camera.Temperature >= 4.0 Then Exit For ' Warmed, time to shut down cooler
WaitForMilliseconds 60000
Console.PrintLine " (cooler is now at " & Util.FormatVar(Util.ScriptCamera.Temperature, "0.0") & "C)"
End If
Camera.CoolerOn = False
Camera.TemperatureSetpoint = z ' Reset original setpoint for future
WaitForMilliseconds 1000 ' Give MaxIm a chance to shutdown cooler
Camera.LinkEnabled = False
CameraConnected = False ' Disconnect it from ACP
Console.PrintLine "Imager shutdown complete."
Voice.Speak("Imager shutdown complete. Good night.")
End Sub

Larry Simpson