论文部分内容阅读
摘要: 在飞行试验过程中,遥测任务越来越多,采集的数据都要以PCM流的形式传送给地面监控站,这对作为重要环节的PCM格栅编程提出较高的要求。对PCM格栅编程的思路和设计方法等进行详细介绍,并给出新旧格栅编程算法的效果对比,为相关的设计开发提供很好的借鉴。
关键词: 格栅编程;长周;短周
中图分类号:TP3文献标识码:A文章编号:1671-7597(2011)0110172-01
在飞行试验里,从测试任务中采集的数据都需要通过遥测发射设备以PCM流的形式传送给地面监控站。这就要求在测试任务开始前,对众多的测试参数进行PCM格栅编程,以便地面监控站能够进行参数的正确接收和解算。目前的PCM格栅编程软件存在以下两个问题:一是算法不够优化,输出帧空间浪费严重;二是没有编程接口,无法进行集成。为此,笔者设计了全新的PCM格栅编程算法,克服了以上缺陷。
1 相关概念
PCM格栅编程简介:PCM格栅编程的实质形象的说就是在填充一张二维表,表的每一行代表一个短周,表的每一列代表一个字号。每一个短周都要有同步字和ID字,ID字用来表示该短周的短周号,ID字放置的位置不能与同步字冲突。同步字用于进行信号同步,一般放在每一个短周的开始处。表中的其余位置用来放置各种参数,但同一种参数的放置间隔必须相等。当所有的参数全部放置完成后,二维表的行数将确定,这就是短周数。此时,这张二维表就代表一个长周,一个长周也称作一个帧。
2 设计思路
笔者的设计思路是将整个PCM格栅编程算法设计成一个模块,用一个输入结构作为该模块作为输入参数,处理完成后返回一个输出结构作为输出参数。
其中输入结构和输出结构的关键信息如下:
3 具体实现
3.1 确定每帧输出的数据量。每帧输出的数据量是整个模块设计所依赖的一个重要数据。其计算公式如下:
每帧输出的数据量=1秒钟内所有输出参数输出的数据量之和/PCM帧输出速率
其中:PCM帧输出速率是指1秒钟内输出的PCM帧数
3.2 确定初始短周数和初始短周长。短周数的取值范围原则上不超过256,短周长的取值范围原则上不超过1024个字长。为了提高模块的运算效率,在此对短周数和短周长的取值范围做出进一步约束。具体如下:
短周数的取值范围:[1,2,4,8,16,32,64,128,256]
短周长的取值范围:[8,16,32,64,128,256,512,1024]
在确定了每帧输出的数据量之后,用循环法遍历在以上72种(9种短周数*8种短周长)的情况下,各自产生的帧空间浪费量。
其计算公式为:帧空间浪费量=短周数*短周长-每帧输出的数据量
最后以产生的帧空间浪费量最少的那组短周数和短周长作为初始短周数和初始短周长。如果有多组短周数和短周长产生的帧空间浪费量相同,则取短周数较小的那组。
3.3 确定输出参数填充次序。将所有输出参数按其输出采样率进行排队,相同输出采样率的参数其次序可以随机确定。排队的结果将确定输出参数填充PCM输出帧的次序。
3.4 填充PCM输出帧。在填充PCM输出帧之前,应先把同步字、ID字所占用的位置标记出来。填充时,从输出采样率最高的参数开始,进行填表。具体算法是:从表的起始位置搜索,当找到一个未被占用的位置时,检查由此开始的连续若干位置(其值等于该参数的长度)是否未被占用,若未被占用则放置该参数,并记录对应的短周号和字号,同时按该参数的输出采样间隔把该参数在表中出现的其它位置点也进行标记。否则继续寻找合适的位置。重复上述算法,直到所有的输出参数全部填充完毕或者无法完成为止。
其中,输出采样间隔=输出帧的尺寸*PCM帧输出速率/该参数的输出采样率。
3.5 优化。为了尽可能缩减输出帧空间浪费量,有必要对填充方案做进一步的优化。本模块设计了两种优化策略,即短周数优化策略和短周长优化策略。
首先按短周数优化策略进行优化。填充PCM输出帧的结果会有两种情况,能放下或不能放下。当能放下时,则减少短周数,否则增加短周数,短周数的步长一般设为2。再用第3.4步的方法填表。如果填表的结果没有改变,则持续这一过程;否则记下合适的最小短周数。
然后再按短周长优化策略进行优化。当能放下时,则减少短周长,否则增加短周长,短周长的步长可以按照二分法的原则来取。再用第4.4步的方法填表。直到填表的结果发生改变。记下合适的最小短周长。需要注意的是:不要让ID字的字号超过了短周长。
4 结果对比
下面用一个实例将现有PCM格栅编程结果与新PCM格栅编程结果作一对比。
在此例中,PCM帧输出速率为1次/秒;同步字长度为2个字;ID字长度为1个字,短周字号为8;其它输出参数的信息完全一致,见表1。
表1输出参数信息表
经过现有PCM格栅编程后,所得的输出帧大小为512个字(短周数为16,短周长为32个字),帧空间浪费为189个字;而使用新PCM格栅编程后,输出帧大小变为320个字(短周数为8,短周长为40个字),只占原需求量的62.5%,帧空间浪费也降为19个字。通过对比,可以发现新的编程算法大大减少了帧空间浪费。
经过各种测试用例(包括改变参数数量和参数长度)的反复测试,证明新模块设计思路正确,工作稳定可靠,并使帧空间的需求平均下降30%左右,有效地提高了遥测传输率。
5 结语
上文详细地介绍了PCM格栅编程的设计思路及具体方法,并通过新旧PCM格栅编程算法的效果对比,验证了文中的设计思路。为了便于集成,笔者将新的PCM格栅编程模块编译成动态链接库的形式。这样,用户就可以在各种开发环境下很方便的使用本模块了。目前,新的PCM格栅编程模块已经在某测试系统中得到了成功应用,效果良好。
参考文献:
[1]Teletronics Technology Corporation. 《RBDS-120 Device Driver API》,2005.
作者简介:
郭德磊(1971-),男,河南郾城人,本科,工程师,主要从事嵌入式设备研制开发。
关键词: 格栅编程;长周;短周
中图分类号:TP3文献标识码:A文章编号:1671-7597(2011)0110172-01
在飞行试验里,从测试任务中采集的数据都需要通过遥测发射设备以PCM流的形式传送给地面监控站。这就要求在测试任务开始前,对众多的测试参数进行PCM格栅编程,以便地面监控站能够进行参数的正确接收和解算。目前的PCM格栅编程软件存在以下两个问题:一是算法不够优化,输出帧空间浪费严重;二是没有编程接口,无法进行集成。为此,笔者设计了全新的PCM格栅编程算法,克服了以上缺陷。
1 相关概念
PCM格栅编程简介:PCM格栅编程的实质形象的说就是在填充一张二维表,表的每一行代表一个短周,表的每一列代表一个字号。每一个短周都要有同步字和ID字,ID字用来表示该短周的短周号,ID字放置的位置不能与同步字冲突。同步字用于进行信号同步,一般放在每一个短周的开始处。表中的其余位置用来放置各种参数,但同一种参数的放置间隔必须相等。当所有的参数全部放置完成后,二维表的行数将确定,这就是短周数。此时,这张二维表就代表一个长周,一个长周也称作一个帧。
2 设计思路
笔者的设计思路是将整个PCM格栅编程算法设计成一个模块,用一个输入结构作为该模块作为输入参数,处理完成后返回一个输出结构作为输出参数。
其中输入结构和输出结构的关键信息如下:
3 具体实现
3.1 确定每帧输出的数据量。每帧输出的数据量是整个模块设计所依赖的一个重要数据。其计算公式如下:
每帧输出的数据量=1秒钟内所有输出参数输出的数据量之和/PCM帧输出速率
其中:PCM帧输出速率是指1秒钟内输出的PCM帧数
3.2 确定初始短周数和初始短周长。短周数的取值范围原则上不超过256,短周长的取值范围原则上不超过1024个字长。为了提高模块的运算效率,在此对短周数和短周长的取值范围做出进一步约束。具体如下:
短周数的取值范围:[1,2,4,8,16,32,64,128,256]
短周长的取值范围:[8,16,32,64,128,256,512,1024]
在确定了每帧输出的数据量之后,用循环法遍历在以上72种(9种短周数*8种短周长)的情况下,各自产生的帧空间浪费量。
其计算公式为:帧空间浪费量=短周数*短周长-每帧输出的数据量
最后以产生的帧空间浪费量最少的那组短周数和短周长作为初始短周数和初始短周长。如果有多组短周数和短周长产生的帧空间浪费量相同,则取短周数较小的那组。
3.3 确定输出参数填充次序。将所有输出参数按其输出采样率进行排队,相同输出采样率的参数其次序可以随机确定。排队的结果将确定输出参数填充PCM输出帧的次序。
3.4 填充PCM输出帧。在填充PCM输出帧之前,应先把同步字、ID字所占用的位置标记出来。填充时,从输出采样率最高的参数开始,进行填表。具体算法是:从表的起始位置搜索,当找到一个未被占用的位置时,检查由此开始的连续若干位置(其值等于该参数的长度)是否未被占用,若未被占用则放置该参数,并记录对应的短周号和字号,同时按该参数的输出采样间隔把该参数在表中出现的其它位置点也进行标记。否则继续寻找合适的位置。重复上述算法,直到所有的输出参数全部填充完毕或者无法完成为止。
其中,输出采样间隔=输出帧的尺寸*PCM帧输出速率/该参数的输出采样率。
3.5 优化。为了尽可能缩减输出帧空间浪费量,有必要对填充方案做进一步的优化。本模块设计了两种优化策略,即短周数优化策略和短周长优化策略。
首先按短周数优化策略进行优化。填充PCM输出帧的结果会有两种情况,能放下或不能放下。当能放下时,则减少短周数,否则增加短周数,短周数的步长一般设为2。再用第3.4步的方法填表。如果填表的结果没有改变,则持续这一过程;否则记下合适的最小短周数。
然后再按短周长优化策略进行优化。当能放下时,则减少短周长,否则增加短周长,短周长的步长可以按照二分法的原则来取。再用第4.4步的方法填表。直到填表的结果发生改变。记下合适的最小短周长。需要注意的是:不要让ID字的字号超过了短周长。
4 结果对比
下面用一个实例将现有PCM格栅编程结果与新PCM格栅编程结果作一对比。
在此例中,PCM帧输出速率为1次/秒;同步字长度为2个字;ID字长度为1个字,短周字号为8;其它输出参数的信息完全一致,见表1。
表1输出参数信息表
经过现有PCM格栅编程后,所得的输出帧大小为512个字(短周数为16,短周长为32个字),帧空间浪费为189个字;而使用新PCM格栅编程后,输出帧大小变为320个字(短周数为8,短周长为40个字),只占原需求量的62.5%,帧空间浪费也降为19个字。通过对比,可以发现新的编程算法大大减少了帧空间浪费。
经过各种测试用例(包括改变参数数量和参数长度)的反复测试,证明新模块设计思路正确,工作稳定可靠,并使帧空间的需求平均下降30%左右,有效地提高了遥测传输率。
5 结语
上文详细地介绍了PCM格栅编程的设计思路及具体方法,并通过新旧PCM格栅编程算法的效果对比,验证了文中的设计思路。为了便于集成,笔者将新的PCM格栅编程模块编译成动态链接库的形式。这样,用户就可以在各种开发环境下很方便的使用本模块了。目前,新的PCM格栅编程模块已经在某测试系统中得到了成功应用,效果良好。
参考文献:
[1]Teletronics Technology Corporation. 《RBDS-120 Device Driver API》,2005.
作者简介:
郭德磊(1971-),男,河南郾城人,本科,工程师,主要从事嵌入式设备研制开发。