9.528 Pointing-Robot

This page describes the device driver and the device window for the Pointing-Robot logical device. This device lets you make a motorized antenna follow a satellite based on it's (known) orbit position. For this the Pointing-Robot implements orbit position calculations based on common ephemeris data models. The basic functions of a Pointing-Robot device are:

The Pointing-Robot is part of the sat-nms ACU Indoor Unit. It supplements the sat-nms ACU-ODM with the orbit calculation routines described below. The Pointing-Robot principally works together with all drivers for antenna controllers which are part of the sat-nms software. However some functions like automatically switching off the ACU's tracking facility are uniquely designed for the sat-nms ACU-ODM.

Move the antenna along a satellite position calculated from ephemeris data

You can make the pointing robot follow a satellite position computed from usual ephemeris data sets. The robot recognizes the following data formats:

Pointing the antenna to the nominal position of a satellite

If a single floating point number is entered to the ephemeris data field, the pointing robot interprets this as a nominal orbit position of the satellite (°E).

Move the antenna along a path given by a table

The pointing robot is capable to move the antenna along a path defined in a text file table. You either may copy the file to the IDU computer by means of FTP and enter the name of file to the ephemeris field or you may enter or cot/paste the table directly to this field. If you do the latter, the size of the table is limited to 32000 characters.

The Pointing-Robot provides a file selection dropdown widget to select files located in the /home/satnms/robot directory on the M&C&VLC server. To use this feature, select the file from the dropdown list and then click "SELECT". This copies the file name into the ephemeris data field and thus selects the file.

Files in the /home/satnms/robot directory which are no longer used may be deleted by selecting the file do delete from the drop down list and clicking DELETE. A file actually in use cannot be deleted, the request is silently ignored.

Polarization calculation

When calculating the antenna pointing from a orbital model or when interpolating the pointing from the table data, the Pointing-Robot also calculates a polarization angle. As each satellite uses its individual polarization offset, the calculated angle is normally for information only.

With table tracking, the pointing robot may also command the calculated polarization angle at the antenna. Setting "apply pol" to YES enables this feature. "apply pol" is not available with orbital elements.

Tracking table format

The format of the table must be as follows: It contains the data as a three or four column table. Empty lines are ignored, comments starting with a '#' as well. The numbers in the table are parsed as floating point numbers which only may consist of decimal digits, one decimal point and an optional leading '-' if negative. The columns must be separated by an arbitrary number of space or tabulator characters. They have the following meanings:

File import

The Pointing Robot GUI offers an import function which permits to copy pointing tables from the client computer to the server and thereby convert the file format to that one internally used by the sat-nms software.

Parsing order

If the pointing robot gets entered a new ephemeris data set, it tries to interpret the data in the following way:

  1. It checks if the first line of the data specifies an existing file (residing on the IDU computer, therefore the file path should use Unix-style ('/') directory separators if necessary. If there is the specified file, it gets read an interpreted in a way, its file extension suggests: '*.tle' or '*.TLE': NASA 2-line ephemeris data. '*.i11' or '*.I11': Intelsat ephemeris data. Files with other extensions are interpreted as table data as described above.
  2. It checks if the data is a valid NASA 2-line data set. A satellite name before the 2-line data is accepted and parsed separately if present.
  3. It checks if the data contains valid Intelsat ephemeris data.
  4. It checks if the first number in the first line of the data is a valid Julian date in the range 2005 .. 2050. In this case the robot assumes, that the ephemeris data contain a pointing table.
  5. Finally, if nothing of the above mentioned formats did match, the robot tries to interpret the first line of the data as the nominal orbit position of the satellite.

If all of the parsing attempts fail, the pointing robot reports the model type to be UNKNOWN. Mostly this happens due to artifacts of previously entered elements which had not been deleted before the new ephemeris data was entered / pasted.

Remote control

The Pointing-Robot may be updated easily with updated pointing tables or ephemeris data by copying such files to the /home/public directory of the M&C system using the SMB file sharing protocol and then commanding the name of this file to the 'elements.input' variable of the Pointing-Robot using one of the M&C system's remote control ports.

ACU fault monitoring

The device can monitor the ACU's summary fault and show it in the device screen. The parameter 'antenna fault detection' may be set to one of the following settings:

Fault flags

In table tracking mode the Pointing-Robot reports two fault conditions regarding the end of table data:

File expired is reported if the end of the table data is reached. Some hours before (configurable in the device setup) the File expires soon fault is reported. The latter fault condition appears as a WARNING by default.

Both fault conditions are reported if the Pointing-Robot is in table tracking mode, even if the tracking is stopped. To clear faults concerning an outdated but unused table, simply clear the "ephemeris data" field.

Device window pages

The following table shows which device window pages are available with this individual device type. Tool-bar functions not mentioned here are described at the general description of device windows .

Configuration parameters

At the maintenance page of the device window there are a couple of configuration parameters which must be set to make the software talk to the antenna controller.

parameter description
antennaName The name of the antenna ODM device to control. With the sat-nms IDU, this parameter is preconfigured to 'ODM' and should not be changed.
longitude The antenna's longitude (°E).
latitude The antenna's latitude (°N).
altitude The antenna's altitude over sea (m)
expireWarning Defines with table tracking how many hours before the end of data a "Files expires soon" warning / fault shall be rise.

Remarks

The accuracy of the calculations made by Pointing-Robot depend on the following:

Variables defined by this device driver

name type flags range
info.driver TEXT R/O StringRange R/O
info.type TEXT R/O StringRange R/O
info.port TEXT R/O StringRange R/O
info.frame TEXT R/O StringRange R/O
config.antennaName TEXT SAVE SETUP StringRange
config.longitude FLOAT SAVE SETUP DoubleRange (0.000 .. 0.000)
config.latitude FLOAT SAVE SETUP DoubleRange (0.000 .. 0.000)
config.altitude FLOAT SAVE SETUP DoubleRange (0 .. 0)
tracking CHOICE SAVE EnumRange (OFF ON)
interval INTEGER SAVE IntegerRange (0 .. 3600)
calculatePol CHOICE SAVE EnumRange (NO YES)
antFaultMode CHOICE SAVE EnumRange (IGNORE-ACU-FAULT SHOW-ACU-FAULT STOP-ON-ACU-FAULT)
expireWarning FLOAT SAVE DoubleRange (0.0 .. 0.0)
elements.input TEXT StringRange
eval.az FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
eval.el FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
eval.pl FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
eval.orbit TEXT R/O StringRange R/O
azimuth FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
elevation FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
polarization FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
state.az FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
state.el FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
state.pl FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
state.activeFault BOOLEAN R/O BooleanRange R/O (true false)
state.latchedFault BOOLEAN R/O BooleanRange R/O (true false)
state.short TEXT R/O StringRange R/O
state.long TEXT R/O StringRange R/O
state.time TEXT R/O StringRange R/O
offset.az FLOAT SAVE DoubleRange (0.000 .. 0.000)
offset.el FLOAT SAVE DoubleRange (0.000 .. 0.000)
offset.pl FLOAT SAVE DoubleRange (0.000 .. 0.000)
hysteresis.az FLOAT SAVE DoubleRange (0.000 .. 10.000)
hysteresis.el FLOAT SAVE DoubleRange (0.000 .. 10.000)
hysteresis.pl FLOAT SAVE DoubleRange (0.000 .. 10.000)
elements.type TEXT R/O StringRange R/O
elements.age FLOAT R/O DoubleRange R/O (0.0 .. 0.0)
elements.epoch TEXT R/O StringRange R/O
elements.validFrom TEXT R/O StringRange R/O
elements.validTo TEXT R/O StringRange R/O
evalByElements TEXT NOPRESET StringRange
moveEvaluated TEXT NOPRESET StringRange
resetLatched TEXT NOPRESET StringRange
files CHOICE EnumRange (NONE)
selectFile TEXT NOPRESET StringRange
deleteFile TEXT NOPRESET StringRange
forceUpdateFileList TEXT NOPRESET StringRange
faults.01 ALARM R/O AlarmFlagRange R/O (File expired)
faults.02 ALARM R/O AlarmFlagRange R/O (File expires soon)