This Astrometric Telescope Control System (ATCS) upgrade is for the PrimeTCS-Ui ATCS controller.
The minimum Maestro4 version which works with this version of ATCS firmware is 0.09.013. Assure that Maestro4 is upgraded to at least this version before upgrading PrimeTCS-Ui firmware.
=========================================== This file best viewed with fixed-font at this screen width or greater ========================================================
A software activation license is necessary for major new upgrades of Maestro and ATCS firmware. There is a substantial amount of work that goes into each major upgrade and this effort needs to be supported through nominal license fees. This will assure that further future upgrades and continued support are available for ATCS.
GPS time and position --------------------- ATCS now (optionally) uses its internal built-in GPS for time and position. See the readme file for the latest version of Maestro for user interface details for GPS. Note: this feature is only available on ATCS controllers which include a built-in GPS. Presently, this is only for PrimeTCS-Ui. Note: After power-up, it takes a period of time (several seconds usually) before ATCS' internal GPS has "locked" onto a sufficient number of GPS satellites to provide valid time and location. Once time and position become valid, they will stay valid as long as ATCS remains powered and stationary. The following ATCL commands support this feature... SetGPS_TimeEnabled TSgt "Yes" will set ATCS to use its internal GPS for time. "No" will set ATCS to use its internal clock/calendar chip for time. Note: timezone is always provided by the user. GetGPS_TimeEnabled TGgt SetGPS_PositionEnabled TSgp "Yes" will set ATCS to use its internal GPS location (position). "No" will set ATCS to use user-set site data for location. GetGPS_PositionEnabled TGgp GetGPS_TimeValid TGvt This command returns "Yes" if the GPS is "locked" and GPS time is valid and "No" otherwise. GetGPS_PositionValid TGvp This command returns "Yes" if the GPS is "locked" and GPS position is valid and "No" otherwise. GetGPS_Latitude SGga Returns the latitude read from the internal GPS (in DD:MM:SSh format) GetGPS_Longitude SGgo Returns the longitude read from the internal GPS (in DDD:MM:SSh format) GetGPS_ElevationWGS84 SGge Returns the site elevation above the WGS84 ellipsoid (i.e., "Geoid"). Note: this is *not* the same as altitude above mean sea level. For each location on the Earth's surface there is a Geoid separation value (sep) which is the difference between the WGS84 ellipsoid and mean sea level for that location. Specifically: elev: Elevation above mean sea level in meters. sep: Geoid separation: difference between WGS84 ellipsoid and mean sea level. sep = WGS84 ellipsoid elevation - elev, and... elev = WGS84 ellipsoid elevation - sep Note: elevation is reported in meters (DD.DDm) or feet (DD.DDft) consistent with ATCS' Units format (i.e., Metric or Imperial). GetUnixTime TGxt Returns the number of non-leap seconds, to the 3rd decimal point, that have elapsed since 00:00:00 UTC on 1 January 1970. This command will return "N/A" if ATCS' internal GPS time is not yet valid (determined using the GetGPS_TimeValid command). Note: Splitting GPS use into separate time and position enabled features address the problem of GPS location dither between power-ups. More detail: at power-up the latitude/longitude can be found to be off from the value at the previous power-up by some amount generally an arcsec or less. However, with any change in position between power-ups ATCS concludes that its' location on Earth has moved and "voids" Align-from-Last and Align-from-Absolute's encoder indexing. In practice this <1 arcsec error can be ignored however a decision was made to not build a feature into ATCS that ignores any error. To address this issue the concept of "GPS enabled" has been split into "GPS time enabled" and "GPS position enabled". With this, the system can be used just for accurate time and not for position determination. A possible use model for permeant observatory would be to: 1) Enable GPS position sensing once to get a fix. 2) Set the chosen site latitude/longitude to the GPS values reported by Maestro. From then on, with GPS position sensing turned off, subsequent power-ups will not incur position dither and avoid voiding "last" position. Note: ATCS' GPS feature uses only US GPS satellites. Ethernet connectivity --------------------- ATCS now supports Ethernet/TCP connectivity both as a server (to receive ATCL commands and send replies) and as a client (to interface to motor drivers using Ethernet/TCP... further details below). The following ATCL commands support this feature... Note: any of the following commands that make changes to network settings require a reboot of the ATCS controller for the new setting to take effect. SetNetworkIPv4_Address HSi4 --> Sets the IPv4 network address for the hardware device. Parameter is a string of the form "xxx.xxx.xxx.xxx" where "xxx" are in the range of 0 to 255. The default/first-use value is "127.0.0.253". GetNetworkIPv4_Address HGi4 SetNetworkIPv4_Subnet HSs4 --> Sets the IPv4 subnet mask for the hardware device. Parameter is a string of the form "xxx.xxx.xxx.xxx" where "xxx" are in the range of 0 to 255. The default/first-use value is "255.255.255.251". GetNetworkIPv4_Subnet HGs4 SetNetworkIPv4_Gateway HSg4 --> Sets the IPv4 gateway address for the hardware device. Parameter is a string of the form "xxx.xxx.xxx.xxx" where "xxx" are in the range of 0 to 255. The default/first-use value is "127.0.0.254". GetNetworkIPv4_Gateway HGg4 SetATCP_Passcode HSap --> Sets the 32-bit passcode that this Astrometric device we require all ATCP clients to provide for access. The passcode must be provided in hexadecimal format proceeded by "0x". For example: "0xA341B73D". GetATCP_Passcode HGap GetNetworkDeviceID HGnd Gets the device ID for ATCS' built-in networking hardware. Presently, all Astrometric Ethernet-enabled devices ship with a network device that reports 1 for this command. The following are capabilities specific to ATCS' TCP server... BackChannelSetServerTimeOut BSto For the present client connection, sets the timeout (in milliseconds) which, after a period of no packets received from the client, the client will be disconnected. More details are provided in the ATCP v.3 specification. BackChannelGetServerTimeOut BGto BackChannelGetUpTime BGup Returns the "up time" (time since power-on) for the ATCP server device. Value represents seconds and is provided in hexadecimal format. GetATCP_ServerSocketNumber HGss This command returns the ATCP Server socket number, that the requesting client is connected to, as a hexadecimal number between 0x00 and 0x05. GetATCP_ServerConnectionStatus HGcs This command takes the ATCP Server socket number as a parameter(a hexadecimal number between 0x00 and 0x05) and returns status dependent on the socket connection status to a client: - If not connected: "N/C" - If connected: "xxx.xxx.xxx.xxx:n:f" with the following field definitions: - xxx.xxx.xxx.xxx is the connected client IP address - n is the connected client source port number - f is 1 if the socket has experience receive buffer over-run (i.e., more than 512 byte "max ATCP packet size" of data received) since the last power-up or 0 for no over-run. If a client gets disconnected (e.g., timeout) then an alert message is issued "ATCP Server's client was disconnected:" Associated notes: - Ethernet capability is disabled if the ATCP passcode is the factory default value of 0xFFFF0000. This mandates a passcode change by the sys admin (usually through Maestro) and best assures ATCP Server security. - Since the ATCS TCP initialization code is only run at startup, any changes to the following result in the need to power-cycle ATCS to re-initialize TCP: - Making a physical change to network connectivity such as plugging in a cable that was not plugged in at power up. - Changing ATCS TCP Server network settings such as IP address, subnet mask or gateway. - Changing ATCS TCP Client (if used) network settings such as server IP address and port number. - Changing ATCS Drive Type to TCP1 - Changing the ATCP Passcode off from the default value of 0xFFFF0000 requires a power-cycle to enable networking. Subsequent changes to the ATCP Passcode can be made without a power cycle. - ATCS supports up to 6 simultaneous clients. When there are already 6 clients connected to ATCS the 7th client attempting to connect will get an error akin to "Cannot connect to server at specified IP address and port". TCP1 Drive Type --------------- Added support for interfacing to motor drivers using Ethernet/TCP. Prior version of ATCS only interfaced to motor drivers using step/direction signaling. The following ATCL commands support this feature... SetMotorDriveType MSdt --> Sets the type of motor driver used with ATCS. Choices are "StepDir" or "TCP1". Note: when set to TCP1 a reboot of the ATCS controller is necessary. GetMotorDriveType MGdt SetTCP_DriveIPv4_Address MSd4 --> Sets the IPv4 network address for the motor drive for which DriveType TCP1 uses. Parameter is a string of the form "xxx.xxx.xxx.xxx" where "xxx" are in the range of 0 to 255. Note: for any change of this seeting to take effect, a reboot of the ATCS controller is necessary. GetTCP_DriveIPv4_Address MGd4 SetTCP_DrivePortNum MSdp --> Sets the network port number that ATCS will attempt to connect to the TCP1 drive. Note: for any change of this seeting to take effect, a reboot of the ATCS controller is necessary. GetTCP_DrivePortNum MGdp GetTCP_DriveConnected MGdc --> "No" if ATCS failed to connect to the TCP drive at the specified IPv4 address and port number, "Yes" otherwise. SetTCP1_DriveEnabled MS1e --> "Yes" to enable the drive and "No" to disable it. GetTCP1_DriveEnabled MG1e GetTCP_DriveConnectionStatus MGcs Returns a signed integer indicating: No connection (i.e., connection closed): 0 Connection established (i.e., connection open): 1 Connection failed on open: -1 Connection failed on close: -2 In the process of opening or closing: other possible (intermediate) positive values are possible Associated notes: - Presently, ATCS supports TCP1 Drive Type motor drivers from ACS. - ATCS connects to the TCP1 drive at power-up and remains connected forever unless there is a network problem at which point ATCS closes the TCP client connection. A power-cycle is necessary to re-connect. The TCP1 interface is implemented this way since re-connecting "on the fly" (i.e. without a power cycle) would entail the complexity of a clean-up and restart approach which is possible if this behavior is deemed unacceptable. - The TCP1 drive cannot be enable (with the MS1eYes command) unless the drive is stationary. This because any movement will lead to position error in the gimbal's zero-point due to latency associated with sending FPOS to getting it back and setting the zero-point. Align-from-Absolute support for TCP1 Drive Type ----------------------------------------------- Expanded ATCS' Align-from-Absolute support to work with the TCP1 Drive Type. Essentially, in addition to providing reference position to the TCP1 drive every Tick, ATCS now queries for the drives feedback absolute encoder position and this is thus available for ATCS' Align-from-Absolute feature. To use Align-from-Absolute, follow this cheat sheet of necessary setup and settings... - Assure encoders are installed and indicating nominal signal (i.e., for RESOLUTE: reading Blue, or at least Green, all the way around) - Checks to be sure PrimeTCS is properly configured - EGea GetEncodersAbsolute... set with hardware jumpers. Should return "Yes". Or, verify that encoders are absolute from Maestro's Telescope Encoders Settings dialog. - EGbx GetAbsoluteEncPositionX... returns raw encoder values. Verify that sensible values are reported as the encoders are rotated. - EGby GetAbsoluteEncPositionY - HGe* GetAxEncStatus*... AxEnc processor com status, encoder error/warning/etc. Only necessary for diagnostic work with Astrometric support. - HG*c GetPTCS_HW_Config*... has encoder model. Only necessary for diagnostic work with Astrometric support. - Set encoder CPR from Maestro's Telescope Encoders Settings dialog. - Set encoder polarity from Maestro's Telescope Encoders Settings dialog. - Enable encoders from Maestro's Telescope Encoders Settings dialog. - Now that the encoder setup is complete, the following commands should work... - EGex GetEncDiagPositionX... alternative encoder position reporting accessible from Maestro's Telescope Axial Coordinates, Motor & Encoder Diagnostics dialog. - EGey GetEncDiagPositionY General Align-from-Absolute changes ----------------------------------- - For Align-from-Absolute the requirement has been added that the Track Rate must be Drift to Index the absolute encoders. This is to prevent some measure of position inaccuracy do to the latency between "sample and use" if the axis were moving. - ATCS will now forbid use of absolute encoders for Indexing or Alignment if the absolute position count read from either encoder exceeds the encoder counts-per-rev value. Implemented many time and position accuracy enhancements including... --------------------------------------------------------------------- - Reduced GPS sampling dither to no more than +/-0.5ms. - Unix Time, used by the Control Loop, has had its dither reduced by several milliseconds - Previous versions of ATCS firmware had two sources of error in Sidereal time keeping that have been fixed in 4.00.103: - Sidereal time was rounded to a 75ms increment (i.e., up to +/-37.5ms of error) when calculated. In 4.00.103 this rounding increment has been reduced to 0.5ms (i.e., up to +/-0.25ms of error). - Sidereal time had a rounding error once per day leading to +/-37.5ms per day of cumulative error. This has also been reduced to +/-0.25ms of cumulative error per sidereal day. Note: Sidereal time error instantiates as error in Hour Angle at a magnitude of 15 arcseconds per second of error. Therefore, the previous method of sampling resulted in up to 37.5ms * 15"/s = 0.56 arcseconds of error... very small. - Added the Base Frequence Corrector (BFC) feature which assures that the ATCS timebase follows GPS time. The BFC is enabled by default if the GPS is locked. If the GPS goes out of lock for a short period (<20 seconds) and subsequently re-locks then the BFC will carry on correcting base frequency. If the GPS goes out of lock for longer than 20 seconds then the BFC is no longer providing nominal corrections. In this case a power-cycle is needed for the BFC to recover. - The following command indicates if the BFC is operating nominally: - HGbn GetBaseFrequencyCorrectorNominal: "Yes" if ATCS timebase is within +/-0.25ms of GPS time, "No" otherwise - If the GPS looses lock then the GetBaseFrequencyCorrectorNominal command will indicate "No" after about 20 seconds. At this point the ATCS internal timebase will begin to wander off from GPS time by up to +/-3 PPM. If the GPS looses lock for less than 20 seconds then the BFC algorithm will continue to function. - By default, the BFC is operating so long as the GPS is locked. The following ATCL command allows the BFC to be disabled: - HSbe SetBaseFrequencyCorrectorEnabled - HGbe GetBaseFrequencyCorrectorEnabled If the BFC is disabled then the GetBaseFrequencyCorrectorNominal command will return "No". If the BFC is later enabled then a power-cycle of ATCS is needed to restart the BFC. - Added a check and warning if the telescope axes are not stationary for Align-from-Last or Align-from-Absolute. This is because some small error can result due to the latency of motion issued or latency of encoder position reading that is immaterial if the axes are stationary but incur some alignment error if the axes are in motion. TMove (trajectory move) feature ------------------------------- ATCS now implements a "trajectory following" feature which allows for tracking of arbitrary object (e.g., satellite) trajectories in a manner more accurate than using custom track rates. This feature is available under contract and documented in the "ATCS Satellite Tracking Architectural Specification". Drive Latency compensation -------------------------- - Added Drive Latency compensation for both TMove (where timebase is UnixTime) and other MoveModes (where timebase is Sidereal Time). SetDriveLatencyX MSdl Sets the drive latency. This is a value, expressed in decimal seconds, representing the time by which ATCS will advance (into the future) its command position output to compensate for latency in the motor drivers. GetDriveLatencyX MGdl - The following commands support drive latency measurements for the TCP1 Drive Type... GetTCP1_DriveLatencyX MGyx Returns two decimal values: the 1st is the most recent position sent to the drive and the 2nd is the most recent encoder position returned from that drive. GetTCP1_DriveLatencyY MGyy Support for Ambient temperature reading --------------------------------------- - Added the following commands to support installation of external temperature sensor #1 for use measuring ambient temperature: HSx1 SetExtTempSensor1_ID. Sets temperature sensor #1 device ID. Parameter units are 16-digit hexadecimal as follows: 0xHHHHHHHHHHHHHHHH HGx1 SetExtTempSensor1_ID - Added external temperature sensor support. This includes: - External/ambient temperature reading using the GetAmbientTemperature ("PGat") ATCL command. Note: appropriate optional temperature probe is needed. This command returns temperature in the format "sDD.DdegC" or "sDD.DdegF" depending on whether Metric or Imperial is chosen for Units format. A value of "N/A" is reported for ambient temperature sensor if not sensor is attached to ATCS. - Added atmospheric pressure sensing support using the GetAtmosphericPressure ("PGap") ATCL command. This command returns pressure in the format "sDD.DdegC" or "sDD.DdegF" depending on whether Metric or Imperial is chosen for Units format. - Now reports internal device temperature using the GetHW_Temperature ("HGht") ATCL command. Value is reported consistent with Units setting. Refraction correction uses measured values ------------------------------------------ - ATCS' refraction correction has been updated to optionally use atmospheric pressure and ambient temperature as inputs (rather than user-entered pressure and temperature values). In support of this, added: SetRefractionCorrEnvFromHW PSrv "Yes" to use ATCS' internal atmospheric pressure and (optional) ambient temperature sensor and "No" to use the values set with the SetRefractionCorrTemperature and SetRefractionCorrPressure commands. Note: if the sensor values are invalid (e.g., sensor not installed) then the user-entered pressure and temperature values will be used which are set with these (pre-existing) commands: SetRefractionCorrPressure (PSrp) SetRefractionCorrTemperature (PSrt) Pulse guide feature ------------------- Added the "pulse guide" feature to ATCS in support of the ASCOM PulseGuide method. This includes the following new ATCL command that initiate motion at ATCS' Autoguider velocity for the specified duration of time. PulseGuideX_Positive KPxp --> Milliseconds duration PulseGuideX_Negative KPxn --> Milliseconds duration PulseGuideY_Positive KPyp --> Milliseconds duration PulseGuideY_Negative Kpyn --> Milliseconds duration Note: pulse duration values are rounded-up to the nearest 75ms increment. So, for example, a value of 30 will result in a 75ms pulse duration Miscellaneous changes --------------------- - ATCS now supports 95 degrees "down" for Down Soft Limit (previously only allowed 90 degrees down). - ATCS now allows East and West limits up to 275 degrees (previously only allowed up to 225 degrees). - Changed display of temperature (refraction, ambient, internal) to use a precision of 1/10th degree rather than 1 degree.
- Previous versions of ATCS firmware used floating point constants with precision appropriate for the older PrimeTCS-i and S-Box controllers. With PrimeTCS-Ui full IEEE 754 double precision floating point is used which is several orders of magnitude more precise than what was used in the older controllers. Unfortunately, the code inherited from the older controller still had lower precision constants that, under certain "boundary conditions", could cause numerical exceptions (un-allowed conditions) resulting in Internal Errors. This has been fixed in firmware v.4.00.103. - Fixed a bug where the SetTCP1_TTPOS_AckEnabled ATCL command (MS1pNo) should not NACK dependent on drive type if setting to "No". - Fixed a bug where if View motion was presently active (MoveMode of "View") then when ATCS was toggled into Slew (either from Maestro or from an attached handpaddle) there would be a continuous flurry of "Warning: Slew motion not presently allowed" and View motion would be "stuck" short of using the "Stop All" button on Maestro. - Fixed a bug that did not allow ATCS' internal clock/calendar time to be set using AM/PM format. - Fixed a bug where autoguider velocity would not be zeroed if a fault occurred. This did not result in motion during a fault however it did mean that an Alert was not raised and velocity would re-start after the fault is removed. - Fixed a bug the disallowed other than Site #1 to be selected.Contact Astrometric support with any questions or issues.