A real-time telemetry analysis method based on CCSDS-AOS standard
Patent Information
- Application Number
- CN202610938721.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2026-06-26
- Publication Date
- 2026-10-27
AI Technical Summary
[0006]本发明的目的在于克服上述缺陷,提供一种基于CCSDS-AOS标准的实时遥测解析方法,解决了现有遥测解析不易确认和精确统计、遥测解包程序复用性差的技术问题
(1)本发明基于CCSDS-AOS标准的遥测帧进行变量定义、配置遥测帧各协议段的长度,在不同的卫星应用中仅配置各协议段长度,就可实现遥测帧解析,操作简单,复用性强;
Smart Images

Figure CN122994409A_ABST
Abstract
Description
Technical Field
[0001] This invention relates to a real-time telemetry parsing method based on the CCSDS-AOS standard, which is mainly used for the software design and implementation of real-time parsing of satellite telemetry data frames and belongs to the field of spacecraft embedded software design and testing technology. Background Technology
[0002] CCSDS stands for Consultive Committee for Space Data Systems, whose mission is to develop standardized communication protocols for space telemetry, tracking, and command (TT&C) and data transmission systems. The CCSDS Advanced Orbit Systems (AOS) standard is widely used in satellite telemetry protocols.
[0003] The satellite employs AOS telemetry, and telemetry framing involves four steps: source packet (E_PDU) organization, multiplexed protocol data unit (M_PDU) organization, virtual channel data unit (VCDU) organization, and channel access data unit (CADU) organization. The nesting relationships between data units are as follows: Figure 1 As shown, the M_PDU data format is as follows: Figure 2 As shown, the E_PDU data structure is as follows: Figure 3 As shown.
[0004] Based on the CCSDS-AOS standard, the length of each protocol segment varies in different satellite applications. For example, in satellite 1 application, the CADU length is 256 bytes and the maximum E_PDU length is 146 bytes; in satellite 2 application, the CADU length is 512 bytes and the maximum E_PDU length is 250 bytes.
[0005] Telemetry packet parsing is required during various stages of satellite integrated electronic software / satellite operations software development, including software debugging, software testing, subsystem testing, and overall satellite testing. The problems encountered in telemetry packet parsing are as follows: 1) The CCSDS-AOS telemetry protocol is complex, and while there are many telemetry parsing methods, their correctness and reliability are difficult to confirm and accurately statistically assess. 2) Different models have different specific telemetry frame protocols, resulting in poor reusability of telemetry unpacking procedures. Therefore, a simple, reliable, and easily testable method for unpacking telemetry frames is needed. Summary of the Invention
[0006] The purpose of this invention is to overcome the aforementioned shortcomings and provide a real-time telemetry parsing method based on the CCSDS-AOS standard. This method solves the technical problems of existing telemetry parsing methods, such as difficulty in confirming and accurately statistically analyzing telemetry data, and poor reusability of telemetry unpacking programs. During the unpacking process, this invention can statistically analyze telemetry parsing information in real time. The unpacking program has strong self-testing capabilities, is simple to operate, and has high reusability.
[0007] To achieve the above-mentioned objectives, the present invention provides the following technical solution: A real-time telemetry analysis method based on the CCSDS-AOS standard includes: (1) Define variables for telemetry frames based on the CCSDS-AOS standard and configure the length of each protocol segment of the telemetry frame; (2) Judge the synchronization word of the CADU. If the synchronization word is correct, obtain the VCDU frame header data, send it to the telemetry display, and count the telemetry frame reception in real time before proceeding to the next step. If the synchronization word is incorrect, end the current telemetry frame parsing. (3) Judge the checksum of VCDU. If the checksum is correct, proceed to the next step. If the checksum is incorrect, end the current telemetry frame parsing. (4) Obtain the location of the first E_PDU packet pointed to by the M_PDU header; (5) Determine whether the half E_PDU packet of the previous telemetry frame has been saved. If there is a half E_PDU packet, then based on the position of the first E_PDU packet pointed to by the M_PDU header, the E_PDU packets distributed in the two telemetry frames are spliced together and sent to the telemetry display. The APID of the application process identification in the E_PDU packet is used to count the number of times this type of E_PDU packet is received in real time before proceeding to the next step. If there is no half E_PDU packet in the previous telemetry frame, then proceed directly to the next step. (6) Based on the location of the first E_PDU packet pointed to by the M_PDU header and the length of the E_PDU packet, find all complete E_PDU packets in the VCDU in a loop, send them to the telemetry display, and count the number of times each type of E_PDU packet is received in real time. If there is a half E_PDU packet, save it to complete the parsing of this telemetry frame.
[0008] Furthermore, step (1) includes: According to the application protocol: Configure the total length of the CADU (CaduLen); Configure the CADU's synchronization word length SyncLen; Configure the total length of the VCDU, VcduLen; Configure the checksum length CheckLen for the VCDU; Configure the maximum length of E_PDU: EpduLenMax; Configure the maximum value of the ID number of E_PDU: EpduIdMax; Define the CADU telemetry frame data as an unsigned string array TmData[CaduLen], where the array length is CaduLen; Define an E_PDU packet variable TmEpduJoint[EpduLenMax] for splicing two CADU telemetry frames, where the array length is EpduLenMax; Configure the MPDU header with the index value MpduStartId in the CADU telemetry frame TmData[CaduLen]; Define the position of the currently found E_PDU in the CADU telemetry frame as PreEpduPoint, and set the initial value of PreEpduPoint to 0; Define the currently found E_PDU packet number as preEpduId, and set the initial value of preEpduId to 0; Define the length of the currently found E_PDU as preEpduLen, and set the initial value of preEpduLen to 0; Define the length of half of the E_PDU packet in the previous CADU telemetry frame as EpduJointedLen, and set the initial value of EpduJointedLen to 0; Define a real-time statistical variable PkIdSum[EpduIdMax] for the total number of downloads for each type of E_PDU, where the array length is EpduIdMax; Define a real-time statistical variable PkIdLen[EpduIdMax] for the download length of each type of E_PDU, where the array length is EpduIdMax; Define a variable CaduRevCnt to count the number of telemetry frames received, and set its initial value to 0.
[0009] Furthermore, step (2) includes: Perform a consistency check on the synchronization words of the telemetry frame TmData[0]~TmData[SyncLen-1], which total SyncLen bytes. If the consistency check passes, send the VCDU frame header data of the telemetry frame TmData[SyncLen]~TmData[MpduStartId-1] to the telemetry display via the UDP interface; accumulate the telemetry frame reception count variable CaduRevCnt = CaduRevCnt+1.
[0010] Furthermore, step (3) includes: Get the value of the checksum field in the telemetry frame: TmData[CaduLen-CheckLen]~ TmData[CaduLen-1], and assign the value of the checksum field in the telemetry frame to sum1; Calculate the checksum sum2 of TmData[SyncLen] to TmData[CaduLen-CheckLen-1]; Compare whether sum1 and sum2 are the same; If they are the same, proceed to the next step; otherwise, telemetry frame parsing ends.
[0011] Furthermore, step (4) includes: According to the protocol, the first header pointer in the M_PDU header directly points to the starting position of the first E_PDU in the M_PDU. The value of the first header pointer is obtained as: (TmData[MpduStartId]<<8 | TmData[MpduStartId+1])&0x7FF, and then converted into the position of the first E_PDU in the CADU telemetry frame as PreEpduPoint=value of the first header pointer+MpduStartId.
[0012] Furthermore, step (5) includes: Determine whether half of the E_PDU packet from the previous telemetry frame has been saved, i.e., check if EpduJointedLen is greater than 0. If it is greater than 0, copy the half of the E_PDU packet before the start position of the first E_PDU in the M_PDU data field, i.e., TmData[MpduStartId+2]~TmData[PreEpduPoint-1], to the start position of the E_PDU packet variable TmEpduJoint[EpduJointedLen] of the spliced two CADU telemetry frames; According to the E_PDU protocol, the length of this E_PDU packet is preEpduLen = (TmEpduJoint[4]<<8 |TmEpduJoint[PreEpduPoint+5])+7, and the APID of this E_PDU packet application process identification is preEpduId =(TmEpduJoint[0]<<8 | TmEpduJoint[1])&0x7FF; send this complete E_PDU packet to the telemetry display; Real-time statistics of the total number of downloads for each type of E_PDU: PkIdSum[preEpduId]++; Real-time statistics of the length of each E_PDU: PkIdLen[preEpduId] = preEpduLen; The value of EpduJointedLen is set to 0.
[0013] Furthermore, step (6) includes: (6.1) Based on the current E_PDU position PreEpduPoint in the CADU telemetry frame, calculate the current E_PDU length as preEpduLen = (TmData[PreEpduPoint+4]<<8 | TmData[PreEpduPoint+5])+7 according to the E_PDU protocol. Determine whether the sum of the current E_PDU's starting position in the CADU telemetry frame and the current E_PDU packet length is less than or equal to the CADU data length, i.e., PreEpduPoint+ preEpduLen<= (CaduLen - CheckLen). If it is satisfied, it means that a complete E_PDU packet has been found, and proceed to (6.2); otherwise, proceed to (6.4). (6.2) According to the E_PDU protocol, the current E_PDU packet ID is preEpduId = (TmData [PreEpduPoint+0]<<8 | TmData [PreEpduPoint+1])&0x7FF. This complete E_PDU packet is sent to the telemetry display. The total number of downlinks of the current type of E_PDU is counted in real time, PkIdSum[preEpduId]++. The length of the current type of E_PDU is counted in real time, PkIdLen[preEpduId]= preEpduLen. Update PreEpduPoint = PreEpduPoint + preEpduLen, then proceed to (6.3); (6.3) Start searching for the next E_PDU packet and determine whether the frame header of the next E_PDU packet is complete. (PreEpduPoint+ 6) <= (CaduLen - CheckLen). If it is not satisfied, proceed to (6.4); if it is satisfied, proceed to (6.1). (6.4) Save the half E_PDU packet data in this CADU telemetry frame. The length of the half E_PDU packet data is: EpduJointedLen = CaduLen –CheckLen –PreEpduPoint. Copy the half E_PDU packet data TmData[PreEpduPoint]~ TmData[CaduLen –CheckLen] to the E_PDU packet variables TmEpduJoint[0]~ TmEpduJoint[EpduJointedLen - 1] of the two CADU telemetry frames. Wait for it to be concatenated with the half E_PDU packet before the first complete E_PDU packet in the next CADU telemetry frame. The unpacking of this telemetry frame ends.
[0014] A computer-readable storage medium storing a computer program, which, when executed by a processor, implements the aforementioned real-time telemetry parsing method based on the CCSDS-AOS standard.
[0015] An electronic device includes a memory, a processor, and a computer program stored in the memory and executable on the processor. When the processor executes the computer program, it implements the aforementioned real-time telemetry analysis method based on the CCSDS-AOS standard.
[0016] A computer program product includes a computer program that, when executed by a processor, implements the aforementioned real-time telemetry parsing method based on the CCSDS-AOS standard.
[0017] The lightweight, configurable unpacking method disclosed in this invention accurately parses E_PDU packets, solving the problem of poor reusability in telemetry unpacking programs. During the unpacking process, real-time statistics are collected on telemetry parsing information, including the number of CADU frame receptions, the number of times E_PDU1~E_PDUn has been parsed, and the lengths of E_PDU1~E_PDUn. These real-time updated statistics allow for monitoring the correctness of the unpacking process, resulting in a highly self-testable unpacking program and better testing of the onboard software packaging logic.
[0018] Compared with the prior art, the present invention has at least one of the following advantages: (1) This invention defines variables and configures the length of each protocol segment of the telemetry frame based on the telemetry frame of the CCSDS-AOS standard. In different satellite applications, only the length of each protocol segment needs to be configured to realize the telemetry frame parsing. The operation is simple and the reusability is strong. (2) The telemetry frame parsing method implemented in this invention provides real-time statistics on telemetry parsing process information during the unpacking process: the number of CADU frames received, the number of times E_PDU1~E_PDUn has been parsed, and the length of E_PDU1~E_PDUn. Through the real-time updated statistical data, the correctness of unpacking can be monitored. The unpacking program has strong self-testability and can better test the logic of onboard software packaging. (3) The unpacking program design method provided by the present invention has clear, simple and reliable unpacking logic, and the feasibility and effectiveness of the method have been verified by engineering implementation. Attached Figure Description
[0019] Figure 1 This refers to the nesting relationship between data units; Figure 2 The data format is M_PDU; Figure 3 The data structure is E_PDU; Figure 4 This is a flowchart of real-time telemetry analysis based on the CCSDS-AOS standard; Figure 5 The flowchart shows how to search for E_PDU in M_PDU. Figure 6 Diagram showing the configuration parameters for the length of each protocol segment in a telemetry frame. Detailed Implementation
[0020] The features and advantages of the present invention will become clearer and more apparent from the following detailed description.
[0021] The term “exemplary” as used herein means “serving as an example, embodiment, or illustration.” Any embodiment illustrated herein as “exemplary” is not necessarily to be construed as superior to or better than other embodiments. Although various aspects of embodiments are shown in the accompanying drawings, the drawings are not necessarily drawn to scale unless specifically indicated otherwise.
[0022] This invention proposes a lightweight, configurable unpacking method that accurately parses E_PDU packets, solving the problem of poor reusability of telemetry unpacking procedures in different satellite applications. During the unpacking process, real-time statistics are collected on telemetry parsing information: the number of CADU frame receptions, the number of times E_PDU1~E_PDUn has been parsed, and the lengths of E_PDU1~E_PDUn. These real-time updated statistics allow for monitoring the correctness of unpacking, the logic of onboard software packaging, and any abnormal states.
[0023] The description of this invention is based on Figure 2 and Figure 3 The invention focuses on the parsing of E_PDU data format and E_PDU data structure under the same virtual channel, and does not cover the situation of switching between different virtual channels.
[0024] This invention discloses a real-time telemetry analysis method based on the CCSDS-AOS standard, comprising the following steps: (1) Define variables and configure the length of each protocol segment of the telemetry frame based on the CCSDS-AOS standard; (2) Judge the synchronization word of the CADU. If the synchronization word is correct, obtain the VCDU frame header data, send it to the telemetry display, and count the telemetry frame reception in real time; if the synchronization word is incorrect, end the current telemetry frame parsing. (3) Judge the checksum of VCDU. If the checksum is correct, proceed to the next step. If the checksum is incorrect, end the current telemetry frame parsing. (4) Obtain the location of the first E_PDU packet pointed to by the M_PDU header; (5) Determine if there is a half E_PDU packet in the previous telemetry frame: If there is a half packet, based on the position in step (4), splice the E_PDU packets distributed in the two telemetry frames, send them to the telemetry display, perform real-time statistics, and then proceed to the next step; if there is no half packet, proceed directly to the next step. (6) Based on the position in step (4), find all complete E_PDU packets in the VCDU, send them to the telemetry display, and perform real-time statistics. If there is a half E_PDU packet, save it to complete the parsing of this telemetry frame.
[0025] Furthermore, the specific steps for defining variables and configuring the length of each protocol segment in the telemetry frame based on the CCSDS-AOS standard are as follows: According to the application protocol Configure the total length of the CADU (CaduLen); Configure the total length of the VCDU, VcduLen; Configure the maximum length of E_PDU: EpduLenMax; Configure the maximum value of the ID number of E_PDU: EpduIdMax; Configure the checksum length CheckLen for the VCDU; Configure the CADU's synchronization word length SyncLen; Define the CADU telemetry frame data as an unsigned string array TmData[CaduLen], where the array length is CaduLen; Define an E_PDU packet variable TmEpduJoint[EpduLenMax] for splicing two CADU telemetry frames, where the array length is EpduLenMax; Configure the MPDU header with the index value MpduStartId in the CADU telemetry frame TmData[CaduLen]; Define the position of the currently found E_PDU in the CADU telemetry frame as PreEpduPoint, and set the initial value of PreEpduPoint to 0; Define the currently found E_PDU packet number as preEpduId, and set the initial value of preEpduId to 0; Define the length of the currently found E_PDU as preEpduLen, and set the initial value of preEpduLen to 0; Define the length of half of the E_PDU packet in the previous CADU telemetry frame as EpduJointedLen, and set the initial value of EpduJointedLen to 0; Define a real-time statistical variable PkIdSum[EpduIdMax] for the total number of downloads for each E_PDU, where the array length is EpduIdMax; Define a real-time statistical variable PkIdLen[EpduIdMax] for the download length of each E_PDU, where the array length is EpduIdMax; Define a variable CaduRevCnt to count the number of telemetry frames received, and set its initial value to 0.
[0026] Furthermore, the synchronization word of the CADU is judged. If the synchronization word is correct, the VCDU frame header data is obtained, sent to the telemetry display, and the telemetry frame reception count is counted in real time. If the synchronization word is incorrect, the current telemetry frame parsing ends. Specifically, the consistency of the synchronization word of the telemetry frame TmData[0]~TmData[SyncLen-1] (a total of SyncLen bytes) is checked. The data of the telemetry frame TmData[SyncLen]~TmData[MpduStartId-1] is sent to the telemetry display through the UDP interface. The telemetry frame reception count is accumulated by the variable CaduRevCnt = CaduRevCnt+1.
[0027] Furthermore, the checksum of the VCDU is checked. If the checksum is correct, the next step is performed; if the checksum is incorrect, the current telemetry frame parsing ends. The specific method is as follows: Retrieve the values of the checksum field TmData[CaduLen-CheckLen] to TmData[CaduLen-1] from the telemetry frame and assign them to sum1. Calculate the checksum sum2 of TmData[SyncLen] to TmData[CaduLen-CheckLen-1] and compare sum1 with sum2. If they are the same, proceed to the next step; otherwise, the telemetry frame parsing ends.
[0028] Furthermore, the specific method for finding the location of the first E_PDU packet is as follows: The index of the first E_PDU packet in TmData is PreEpduPoint = (TmData[MpduStartId] << 8 | TmData[MpduStartId + 1]) & 0x7FF. preEpduLen = TmEpduJoint[PreEpduPoint + 4] << 8 | TmEpduJoint[PreEpduPoint + 5], preEpduId = (TmEpduJoint[PreEpduPoint + 0] << 8 | TmEpduJoint[PreEpduPoint + 1]) & 0x7FF.
[0029] Furthermore, the specific method for splicing the half of the E_PDU from the previous telemetry frame is as follows: Determine if EpduJointedLen is greater than 0. If it is, copy the data from TmData[MpduStartId+2] to TmData[PreEpduPoint-1] to the beginning of TmEpduJoint[EpduJointedLen]. According to the E_PDU protocol, the length of this E_PDU packet is mEpduLen = TmEpduJoint[4]<<8 | TmEpduJoint[PreEpduPoint+5], and the length of this E_PDU packet is mEpduId = (TmEpduJoint[0]<<8 | TmEpduJoint[1])&0x7FF. Count the total number of downloads of this E_PDU in real time, PkIdSum[mEpduId]++; Count the length of this E_PDU in real time, PkIdLen[mEpduId]= preEpduLen.
[0030] Furthermore, the specific method for looping through all E_PDU packets in the VCDU is as follows: (6.1) If PreEpduPoint+ preEpduLen<= (CaduLen - CheckLen) is satisfied, it means that a complete E_PDU packet has been found and proceed to (6.2); otherwise, proceed to (6.4). (6.2) According to the E_PDU protocol, the current E_PDU packet length is preEpduLen = TmEpduJoint[PreEpduPoint+4]<<8 | TmEpduJoint[PreEpduPoint+5], and the current E_PDU packet ID is preEpduId =(TmEpduJoint[PreEpduPoint+0]<<8 | TmEpduJoint[PreEpduPoint+1])&0x7FF. Send this complete E_PDU packet to the telemetry parser. Continuously count the total number of downlinks of the current E_PDU, PkIdSum[mEpduId]++; continuously count the length of the current E_PDU, PkIdLen[mEpduId]= preEpduLen; Update PreEpduPoint = PreEpduPoint + preEpduLen. Proceed to (6.3).
[0031] (6.3) Start searching for the next E_PDU packet. Determine if the header of the next E_PDU packet is complete. (PreEpduPoint+6)<= (CaduLen - CheckLen). If not, proceed to (6.4). If the following conditions are met: the length of the current E_PDU packet is preEpduLen = TmEpduJoint[PreEpduPoint+4]<<8 | TmEpduJoint[PreEpduPoint+5], and the ID of the current E_PDU packet is preEpduId = (TmEpduJoint[PreEpduPoint+0]<<8 | TmEpduJoint[PreEpduPoint+1])&0x7FF, proceed to (6.1).
[0032] (6.4) Save half of the E_PDU packet data. The length of the half E_PDU packet data is: EpduJointedLen = CaduLen –CheckLen –PreEpduPoint. Copy the data from TmData[PreEpduPoint] to TmData[CaduLen –CheckLen] to TmEpduJoint[0] to TmEpduJoint[EpduJointedLen - 1]. This telemetry frame unpacking is complete.
[0033] Example: like Figure 4 The present invention provides a real-time telemetry analysis method based on the CCSDS-AOS standard, the steps of which are as follows: (1) Define variables and configure the length of each protocol segment of the telemetry frame based on the CCSDS-AOS standard; (2) Judge the synchronization word of the CADU. If the synchronization word is correct, obtain the VCDU frame header data, send it to the telemetry display, and count the telemetry frame reception in real time; if the synchronization word is incorrect, end the current telemetry frame parsing. (3) Judge the checksum of VCDU. If the checksum is correct, proceed to the next step. If the checksum is incorrect, end the current telemetry frame parsing. (4) Obtain the location of the first E_PDU packet pointed to by the M_PDU header; (5) Determine if there is a half E_PDU packet in the previous telemetry frame: If there is a half packet, based on the position in step (4), splice the E_PDU packets distributed in the two telemetry frames, send them to the telemetry display, perform real-time statistics, and then proceed to the next step; if there is no half packet, proceed directly to the next step. (6) Based on the position in step (4), find all complete E_PDU packets in the VCDU, send them to the telemetry display, and perform real-time statistics. If there is a half E_PDU packet, save it to complete the parsing of this telemetry frame.
[0034] like Figure 6 Step (1) involves defining variables and configuring the length of each protocol segment of the telemetry frame based on the CCSDS-AOS standard, specifically as follows: According to the application protocol Configure the total length of CADU, CaduLen, to be 512; Configure the total length of the VCDU, VcduLen, to be 508; Configure the maximum length of E_PDU, EpduLenMax, to be 256; Configure the maximum value of the E_PDU ID number, EpduIdMax, to be 150; Configure the checksum length CheckLen of the VCDU to 2; Configure the CADU's synchronization word length SyncLen to 4; Define the CADU telemetry frame data as an unsigned string array TmData
[512] ; Define the E_PDU packet variable TmEpduJoint
[256] for splicing two CADU telemetry frames; Configure the MPDU header to have an index value of MpduStartId of 54 in CADU telemetry frame TmData
[512] ; Define the position of the currently found E_PDU in the CADU telemetry frame as PreEpduPoint, and set the initial value of PreEpduPoint to 0; Define the currently found E_PDU packet number as preEpduId, and set the initial value of preEpduId to 0; Define the length of the currently found E_PDU as preEpduLen, and set the initial value of preEpduLen to 0; Define the length of half of the E_PDU packet in the previous CADU telemetry frame as EpduJointedLen, and set the initial value of EpduJointedLen to 0; Define a real-time statistical variable PkIdSum
[150] for the total number of downloads for each E_PDU; Define a real-time statistical variable PkIdLen
[150] for the downlink length of each E_PDU; Define a variable CaduRevCnt to count the number of telemetry frames received, and set its initial value to 0.
[0035] Step (2) checks the synchronization word of the CADU. If the synchronization word is correct, the VCDU frame header data is obtained, sent to the telemetry display, and the telemetry frame reception count is counted in real time. If the synchronization word is incorrect, the current telemetry frame parsing ends. Specifically, the consistency of the synchronization word 0xFE878204 in the four bytes of telemetry frames TmData[0] to TmData[3] is checked. The data of telemetry frames TmData[4] to TmData
[53] are sent to the telemetry display through the UDP interface. The telemetry frame reception count is accumulated by the variable CaduRevCnt = CaduRevCnt+1.
[0036] Step (3) involves judging the checksum of the VCDU. If the checksum is correct, proceed to the next step; if the checksum is incorrect, end the current telemetry frame parsing. The specific method is as follows: Obtain the values of the checksum fields TmData
[510] ~TmData
[511] in the telemetry frame, assign them to sum1, calculate the checksum sum2 of TmData[4]~TmData
[509] , and compare sum1 and sum2 to see if they are the same. If both checks pass, proceed to the next step; otherwise, the telemetry frame parsing ends.
[0037] The specific method for finding the location of the first E_PDU packet in step (4) is as follows: The index of the first E_PDU packet in TmData is PreEpduPoint=(TmData
[54] <<8 | TmData
[55] )&0x7FF. preEpduLen = TmEpduJoint[PreEpduPoint+4]<<8 | TmEpduJoint[PreEpduPoint+5], preEpduId = (TmEpduJoint[PreEpduPoint+0]<<8 | TmEpduJoint[PreEpduPoint+1])&0x7FF.
[0038] The specific method for splicing the half of the E_PDU from the previous telemetry frame in step (5) is as follows: Determine if EpduJointedLen is greater than 0. If it is, copy the data from TmData
[56] to TmData[PreEpduPoint-1] to the beginning of TmEpduJoint[EpduJointedLen]. According to the E_PDU protocol, the length of this E_PDU packet is mEpduLen = TmEpduJoint[4]<<8 | TmEpduJoint[5], and the length of this E_PDU packet is mEpduId = (TmEpduJoint[0]<<8 | TmEpduJoint[1])&0x7FF. Count the total number of downloads of this E_PDU in real time, PkIdSum[mEpduId]++; Count the length of this E_PDU in real time, PkIdLen[mEpduId]= preEpduLen.
[0039] like Figure 5 The specific method for step (6) of looping through all E_PDU packets in VCDU is as follows: (6.1) If PreEpduPoint+ preEpduLen<= 510, it means that a complete E_PDU packet has been found and proceed to (6.2); otherwise, proceed to (6.4). (6.2) According to the E_PDU protocol, the current E_PDU packet length is preEpduLen = TmEpduJoint[PreEpduPoint+4]<<8 | TmEpduJoint[5], and the current E_PDU packet ID is preEpduId = (TmEpduJoint[PreEpduPoint+0]<<8 | TmEpduJoint[PreEpduPoint+1])&0x7FF. Send this complete E_PDU packet to the telemetry parser. Count the total number of downlinks of the current E_PDU in real time, PkIdSum[mEpduId]++; Count the length of the current E_PDU in real time, PkIdLen[mEpduId]= preEpduLen; Update PreEpduPoint = PreEpduPoint + preEpduLen. Proceed to (6.3).
[0040] (6.3) Start searching for the next E_PDU packet and determine whether the frame header of the next E_PDU packet is complete. (PreEpduPoint+ 6) <= (CaduLen - CheckLen). If not satisfied, proceed to (6.4). If satisfied: the current E_PDU packet length is preEpduLen = TmEpduJoint[PreEpduPoint+4]<<8 | TmEpduJoint[5], and the current E_PDU packet id is preEpduId = (TmEpduJoint[PreEpduPoint+0]<<8 | TmEpduJoint[PreEpduPoint+1])&0x7FF, proceed to (6.1).
[0041] (6.4) Save half of the E_PDU packet data. The length of the half E_PDU packet data is: EpduJointedLen = CaduLen –CheckLen –PreEpduPoint. Copy the data from TmData[PreEpduPoint] to TmData[CaduLen –CheckLen] to TmEpduJoint[0] to TmEpduJoint[EpduJointedLen - 1]. This telemetry frame unpacking is complete.
[0042] Those skilled in the art will understand that embodiments of this application can be provided as methods, systems, or computer program products. Therefore, this application can take the form of a completely hardware embodiment, a completely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, this application can take the form of a computer program product implemented on one or more computer-usable storage media (including, but not limited to, disk storage and optical storage) containing computer-usable program code.
[0043] This application is described with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of this application. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, special-purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, generate instructions for implementing the flowchart... Figure 1 One or more processes and / or boxes Figure 1 A device that provides the functions specified in one or more boxes.
[0044] These computer program instructions may also be stored in a computer-readable storage medium that can direct a computer or other programmable data processing device to function in a particular manner, such that the instructions stored in the computer-readable storage medium produce an article of manufacture including instruction means, which are implemented in a process Figure 1 One or more processes and / or boxes Figure 1 The function specified in one or more boxes.
[0045] These computer program instructions may also be loaded onto a computer or other programmable data processing equipment to cause a series of operational steps to be performed on the computer or other programmable equipment to produce a computer-implemented process, thereby providing instructions that execute on the computer or other programmable equipment for implementing the process. Figure 1 One or more processes and / or boxes Figure 1 The steps of the function specified in one or more boxes.
[0046] The present invention has been described in detail above with reference to specific embodiments and exemplary examples; however, these descriptions should not be construed as limiting the present invention. Those skilled in the art will understand that various equivalent substitutions, modifications, or improvements can be made to the technical solutions and embodiments of the present invention without departing from the spirit and scope of the invention, and all such modifications and improvements fall within the scope of the present invention. The scope of protection of the present invention is defined by the appended claims.
[0047] The contents not described in detail in this specification are common knowledge to those skilled in the art.
Claims
1. A real-time telemetry analysis method based on the CCSDS-AOS standard, characterized in that, include: (1) Define variables for telemetry frames based on the CCSDS-AOS standard and configure the length of each protocol segment of the telemetry frame; (2) Judge the synchronization word of the CADU. If the synchronization word is correct, obtain the VCDU frame header data, send it to the telemetry display, and count the telemetry frame reception in real time before proceeding to the next step. If the synchronization word is incorrect, the current telemetry frame parsing will end. (3) Judge the checksum of VCDU. If the checksum is correct, proceed to the next step. If the checksum is incorrect, end the current telemetry frame parsing. (4) Obtain the location of the first E_PDU packet pointed to by the M_PDU header; (5) Determine whether the half E_PDU packet of the previous telemetry frame has been saved. If there is a half E_PDU packet, then based on the position of the first E_PDU packet pointed to by the M_PDU header, the E_PDU packets distributed in the two telemetry frames are spliced together and sent to the telemetry display. The APID of the application process identification in the E_PDU packet is used to count the number of times this type of E_PDU packet is received in real time before proceeding to the next step. If there is no half E_PDU packet in the previous telemetry frame, then proceed directly to the next step. (6) Based on the location of the first E_PDU packet pointed to by the M_PDU header and the length of the E_PDU packet, find all complete E_PDU packets in the VCDU in a loop, send them to the telemetry display, and count the number of times each type of E_PDU packet is received in real time. If there is a half E_PDU packet, save it to complete the parsing of this telemetry frame.
2. The real-time telemetry analysis method based on the CCSDS-AOS standard according to claim 1, characterized in that, Step (1) includes: According to the application protocol: Configure the total length of the CADU (CaduLen); Configure the CADU's synchronization word length SyncLen; Configure the total length of the VCDU, VcduLen; Configure the checksum length CheckLen for the VCDU; Configure the maximum length of E_PDU: EpduLenMax; Configure the maximum value of the ID number of E_PDU: EpduIdMax; Define the CADU telemetry frame data as an unsigned string array TmData[CaduLen], where the array length is CaduLen; Define an E_PDU packet variable TmEpduJoint[EpduLenMax] for splicing two CADU telemetry frames, where the array length is EpduLenMax; Configure the MPDU header with the index value MpduStartId in the CADU telemetry frame TmData[CaduLen]; Define the position of the currently found E_PDU in the CADU telemetry frame as PreEpduPoint, and set the initial value of PreEpduPoint to 0; Define the currently found E_PDU packet number as preEpduId, and set the initial value of preEpduId to 0; Define the length of the currently found E_PDU as preEpduLen, and set the initial value of preEpduLen to 0; Define the length of half of the E_PDU packet in the previous CADU telemetry frame as EpduJointedLen, and set the initial value of EpduJointedLen to 0; Define a real-time statistical variable PkIdSum[EpduIdMax] for the total number of downloads for each type of E_PDU, where the array length is EpduIdMax; Define a real-time statistical variable PkIdLen[EpduIdMax] for the download length of each type of E_PDU, where the array length is EpduIdMax; Define a variable CaduRevCnt to count the number of telemetry frames received, and set its initial value to 0.
3. The real-time telemetry analysis method based on the CCSDS-AOS standard according to claim 2, characterized in that, Step (2) includes: Perform a consistency check on the synchronization words of the telemetry frame TmData[0]~TmData[SyncLen-1], which total SyncLen bytes. If the consistency check passes, send the VCDU frame header data of the telemetry frame TmData[SyncLen]~TmData[MpduStartId-1] to the telemetry display via the UDP interface; accumulate the telemetry frame reception count variable CaduRevCnt = CaduRevCnt+1.
4. The real-time telemetry analysis method based on the CCSDS-AOS standard according to claim 2, characterized in that, Step (3) includes: Get the value of the checksum field in the telemetry frame: TmData[CaduLen-CheckLen]~ TmData[CaduLen-1], and assign the value of the checksum field in the telemetry frame to sum1; Calculate the checksum sum2 of TmData[SyncLen] to TmData[CaduLen-CheckLen-1]; Compare whether sum1 and sum2 are the same; If they are the same, proceed to the next step; otherwise, telemetry frame parsing ends.
5. The real-time telemetry analysis method based on the CCSDS-AOS standard according to claim 2, characterized in that, Step (4) includes: According to the protocol, the first header pointer in the M_PDU header directly points to the starting position of the first E_PDU in the M_PDU. The value of the first header pointer is obtained as: (TmData[MpduStartId]<<8 | TmData[MpduStartId+1])&0x7FF, and then converted into the position of the first E_PDU in the CADU telemetry frame as PreEpduPoint=value of the first header pointer+MpduStartId.
6. The real-time telemetry analysis method based on the CCSDS-AOS standard according to claim 2, characterized in that, Step (5) includes: Determine whether half of the E_PDU packet from the previous telemetry frame has been saved, i.e., check if EpduJointedLen is greater than 0. If it is greater than 0, copy the half of the E_PDU packet before the start position of the first E_PDU in the M_PDU data field, i.e., TmData[MpduStartId+2]~TmData[PreEpduPoint-1], to the start position of the E_PDU packet variable TmEpduJoint[EpduJointedLen] of the spliced two CADU telemetry frames; According to the E_PDU protocol, the length of this E_PDU packet is preEpduLen = (TmEpduJoint[4]<<8 |TmEpduJoint[PreEpduPoint+5])+7, and the APID of this E_PDU packet application process identification is preEpduId =(TmEpduJoint[0]<<8 | TmEpduJoint[1])&0x7FF; send this complete E_PDU packet to the telemetry display; Real-time statistics of the total number of downloads for each type of E_PDU: PkIdSum[preEpduId]++; Real-time statistics of the length of each E_PDU: PkIdLen[preEpduId] = preEpduLen; The value of EpduJointedLen is set to 0.
7. The real-time telemetry analysis method based on the CCSDS-AOS standard according to claim 2, characterized in that, Step (6) includes: (6.1) Based on the current E_PDU position PreEpduPoint in the CADU telemetry frame, calculate the current E_PDU length as preEpduLen = (TmData [PreEpduPoint+4]<<8 | TmData [PreEpduPoint+5])+7 according to the E_PDU protocol. Determine whether the sum of the current E_PDU starting position in the CADU telemetry frame and the current E_PDU packet length is less than or equal to the CADU data length, i.e., PreEpduPoint+ preEpduLen<= (CaduLen - CheckLen). If it is satisfied, it means that a complete E_PDU packet has been found, and proceed to (6.2); otherwise, proceed to (6.4). (6.2) According to the E_PDU protocol, the current E_PDU packet ID is preEpduId = (TmData [PreEpduPoint+0]<<8| TmData [PreEpduPoint+1])&0x7FF. This complete E_PDU packet is sent to the telemetry display. The total number of downlinks of the current type of E_PDU is counted in real time, PkIdSum[preEpduId]++. The length of the current type of E_PDU is counted in real time, PkIdLen[preEpduId] = preEpduLen. Update PreEpduPoint = PreEpduPoint + preEpduLen, then proceed to (6.3); (6.3) Start searching for the next E_PDU packet and determine whether the frame header of the next E_PDU packet is complete. (PreEpduPoint + 6) <= (CaduLen - CheckLen). If it is not satisfied, proceed to (6.4); if it is satisfied, proceed to (6.1). (6.4) Save the half E_PDU packet data in this CADU telemetry frame. The length of the half E_PDU packet data is: EpduJointedLen = CaduLen –CheckLen –PreEpduPoint. Copy the half E_PDU packet data TmData[PreEpduPoint]~ TmData[CaduLen –CheckLen] to the E_PDU packet variables TmEpduJoint[0]~ TmEpduJoint[EpduJointedLen - 1] of the two CADU telemetry frames. Wait for it to be concatenated with the half E_PDU packet before the first complete E_PDU packet in the next CADU telemetry frame. The unpacking of this telemetry frame ends.
8. A computer-readable storage medium storing a computer program, characterized in that, When the computer program is executed by the processor, it implements a real-time telemetry analysis method based on the CCSDS-AOS standard as described in any one of claims 1 to 7.
9. An electronic device comprising a memory, a processor, and a computer program stored in the memory and executable on the processor, characterized in that, When the processor executes the computer program, it implements a real-time telemetry analysis method based on the CCSDS-AOS standard as described in any one of claims 1 to 7.
10. A computer program product, comprising a computer program, characterized in that, When executed by a processor, the computer program implements a real-time telemetry analysis method based on the CCSDS-AOS standard as described in any one of claims 1 to 7.