Real-time Telemetry and Commanding with STK SOLIS

« Go Back

Information

 
Question
Answer

The Ansys Systems Tool Kit® (STK®) capability SOLIS wraps RocketLab's MAX Flight Software, so when you run a satellite simulation with SOLIS, you can receive real-time telemetry from the flight software and also transmit commanding to the simulation that affects your spacecraft. TCP/IP packets are transmitted and received using the SOLIS framer, documented in the MAX FSW documentation here. By default, STK SOLIS opens TCP/IP port 2034 for communication. You may need to add a firewall rule to allow traffic through this port. You can capture and observe traffic through the port while STK SOLIS is running using software like Wireshark. Since STK SOLIS runs on Windows, the byte order of the framing values is little endian.

Little endian means that the least significant bit comes first. For example, take the two-byte value b'D\x16'. The ASCII letter 'D' is represented by the hexadecimal number \x44. So, the first byte of this sequence is \x44, and the second byte is \x16. In little endian format, this means that the most significant byte is \x16, and the least significant byte is \x44. The hexadecimal number represented by these two values is \x1644, or 5700 in decimal.

Telemetry is organized by a unique Application Process IDentification (APID) number. Each telemetry packet includes a single APID. This APID number gets dynamically generated before each SOLIS run based on your specific scenario configuration. To locate the APID listing, go to the directory <Scenario Directory>\<SOLIS Satellite Name>\cmd_tlm_db\FswTlmDetail.csv. All of the APIDs producing telemetry are listed in the file. Each mnemonic is grouped into an APID and the document indicates the length, format, and start byte of each mnemonic within the APID packet. You can use this as the key to decoding your telemetry output from SOLIS.

Commanding is performed similarly. Each command mnemonic is assigned a function code. This function code gets passed to SOLIS in the SOLIS frame format using a TCP/IP packet, along with any arguments to execute the command. The function codes and descriptions are listed in <Scenario Directory>\<SOLIS Satellite Name>\cmd_tlm_db\FswCmdMaster.csv. The exact arguments, ordering, and format for each function are listed by function code in <Scenario Directory>\<SOLIS Satellite Name>\cmd_tlm_db\FsmCmdDetail.csv. You can build a commanding packet by packing a function code and arguments into the SOLIS frame format.

An example Python script that demonstrates decoding a notional telemetry packet and building a notional commanding packet is included on AGI's GitHub page here. The example script does not establish a TCP/IP connection. It is meant to demonstrate the SOLIS frame format using code. A real TCP/IP telemetry packet would include a frame length prepended to the packet created in the script. Similarly, a commanding packet would need to have its length prepended to the packet created in the script before being passed to SOLIS. Happy simulating!

TitleReal-time Telemetry and Commanding with STK SOLIS
URL NameRealtime-Telemetry-Commanding-with-STK-SOLIS

Related Files