一种伺服测试领域1553B总线的实现架构
2016-11-17谢伟,张蕾,兰天,胡涟,侯焱
谢 伟,张 蕾,兰 天,胡 涟,侯 焱
(北京精密机电控制设备研究所,北京 100076)
一种伺服测试领域1553B总线的实现架构
谢 伟,张 蕾,兰 天,胡 涟,侯 焱
(北京精密机电控制设备研究所,北京 100076)
从伺服测试的角度论述了1553B总线在航天领域的应用发展历程、在伺服测试领域应用1553B总线的技术积累过程;对于基于1553B总线的伺服测试软件开发中经常遇到的问题,提出了一种作为1553B总线BC端的软件实现架构,并在此基础上实现了基于C++语言的通用1553B伺服测试类库;经过近十年的应用,经历了多个种类、近百次大型试验的考核,证明了其稳定性和可靠性,已经成为伺服测试领域1553B总线的基础解决方案;该类库对伺服测试软件模块化、通用化、产品化具有借鉴意义。
1553B总线BC端实现;数字式伺服测试;消息链;数字信号发送和采集
0 引言
目前,越来越多的运载火箭产品选用MIL-STD-1553B 协议(以下简称1553B总线)[1]作为数字通信的标准解决方案,在伺服测试领域采用1553B总线也变成了一种必然选择。在航天领域选择1553B作为数字总线的技术方案是一个循序渐进的过程。最早在2004年某产品首次采用1553B总线,随着该产品首飞一次圆满成功,1553B总线作为全局数字总线的标准地位得到确立。随后CZ-5、CZ-7产品也采用1553B总线作为数字通信方案,而且它们是一个三余度的总线系统;多个种类产品也全面采用1553B总线方案;最新的产品也一并采用1553B总线。可以说无1553B总线,航天系统各产品全面采用1553B总线。
1 总结结构及原理
1553B总线的应用技术经历了一个从摸索到逐渐成熟的过程。在伺服测试领域,1553B总线的应用技术包括:1553B总线的软件开发实现技术、1553B板卡及总线电缆等硬件的设计选用。本文提出了一种1553B总线BC端伺服测试数字信号发送和采集架构,它于2004年在某伺服测试软件中以1553B伺服测试类库形式第一次实现,其框架结构设计精巧灵活、可扩展性好、稳定性强、可靠性高;该类库框架不需做任何改变,只需更改某些实现函数即可用于新产品。该类库用于CZ-5、CZ-7等多个种类产品伺服测试软件中,经过近10年的成功应用,为这些产品伺服测试仪开发、调试、应用、排故节省了大量时间、资金成本,已经成为伺服测试软件的基础组件之一。
1.1 1553B总线概述
1553B总线是指美国军方于1978年发布的MIL-STD-1553B《数字式时分制指令/响应型多路传输数据总线》标准[2]。它广泛地应用于不同的军事平台系统(航空系统、地面车辆系统、舰艇系统)。我国的国军标称之为GJB289A数据总线标准[3],最早于1987年推出了GJB289A-87版本;1997年对该标准进行了修订,升级为GJB289A-97版本[4]。1553B总线有如下特点:
1)终端类型有三种:总线控制器(BC)、远程终端(RT)和监视器(BM)[5];
2)是一种广播型分布式网络,可接入32个终端,共享一条消息通路,同时刻只有一个终端占用网络发送消息,消息发送到所有终端,实际接收的终端通过地址识别消息;
3)总线采用双冗余方式提高对网络故障的容错性;
4)总线传输速率为1 Mb/s,每条消息最多包含32 个字(每字16位),传输一条消息的最大响应时间为752 μs[6-7];
5)按指令/响应方式异步操作,即总线上所有消息的传输由BC发出的指令控制,相关终端响应指令并执行。
1.2 1553B总线BC端的特性
1553B总线协议定义了三种终端类型:BC、RT、BM;BC是主控端,其它都是被控端;BC通过发送消息控制总线。总线消息由三部分组成:命令字、数据字和状态字;每个字的长度为20位,由三部分组成:同步域(3位)、消息块(16位)和奇偶校验位(1位)[8-9]。在传输过程中各种字所需时间:命令字、状态字和数据字均为20 μs,响应时间最长为12 μs[10]。不同板卡厂家对总线协议的实现有差别,一种BC端消息结构如图1所示。
图1 一种1553B总线BC端消息结构图
消息类型分为:BC->RT消息、BC<-RT消息、RT->RT消息、模式消息(不带数据的模式命令、带数据的模式命令)、广播BC->RT消息、广播RT->RT消息、广播模式消息(不带数据的模式命令、带数据的模式命令)。它们如图2所示。
图2 1553B总线消息类型图
2 伺服测试对1553B板卡的要求
2.1 数字式伺服测试概述
数字式伺服测试的基本概念是伺服测试仪通过1553B总线(本文不考虑其它总线通信方式)与伺服系统控制器通信,向系统控制器发送指令信号,同时要求返回伺服通道数据;再由系统控制器通过模拟电缆和伺服机构通信,实现伺服系统的闭环控制和特性测试。
在1553B总线通信中,伺服测试仪作为BC主控端,伺服系统控制器作为RT端。1553B总线消息由伺服测试仪主动发出,系统控制器对消息被动响应。在伺服测试领域使用1553B总线的特殊性在于在一个指令周期内一个BC端不仅要发控制信号,还要发采集信号;由于伺服测试一般都是长程测试,这需要及时更新指令信号数据区、及时取得采集数据并保存到用户缓冲区。
伺服测试对于1553B总线的直接需求是实现测试任务书中的1553B总线通信协议。通过对各产品伺服测试软件任务书的分析总结,对伺服测试仪来说,1553B总线的使用方式有以下两种:
1)作为控制端,发送控制指令,同时采集伺服机构状态。
2)只是作为状态观察端,采集伺服机构状态参数,附加传递一些控制信息。
其实第一种需求是控制端把信号波形发送到伺服端,同时回采伺服参数。第二种情况可以看作第一种情况的特例。
伺服测试对1553B总线的隐含重要性能需求是:
1)能发出较高频率信号。
2)每个频率点不能有漏点、点间隔时间不准的情况。
这两种要求也是在1553B总线测试软件开发中常遇到的难题。
2.2 伺服测试对1553B板卡的要求
伺服测试指伺服测试仪把一定周期、频率、幅值的指令信号(电压或电流)发送到伺服系统,同时把伺服系统的各种通道参数实时采集并显示出来,实时或测后进行特性数据处理。数字式伺服测试指把模拟指令信号变成数字信号,通过总线把信号发送到伺服系统控制器,同时通过总线把系统控制器采集的通道参数传输回伺服测试仪;系统控制器再进行模拟信号的发送和采集,驱动伺服机构动作。
对于基于1553B总线的数字式伺服测试,需要完成以上基本功能。因此对1553B总线及其板卡提出了以下需求:
1)功能要求,发信号的同时采集数据;
2)性能要求,发信号要满足规定的频率要求;这就要求:总线板卡定时要准,且实现时不能有丢帧、漏帧现象;
3)性能要求,满足较高频测试要求;伺服测试需要频率特性测试,时常会有扫频要求,频率点会达到80~100 Hz,这样的需求就和1553B总线1 Mb/s总线传输率相冲突,特别是有三余度测试需求时冲突更明显;
4)性能要求,1553B采集数据一般要用于数据处理,要求采集数据要准,不能出现丢帧、漏帧现象;
5)功能要求,1553B板卡要用于伺服测试,需要有两个缓冲区,消息缓冲区和数据缓冲区;
6)功能要求,1553B板卡要用于伺服测试,需要提供动态机制,特别是动态取数机制;机制要可靠稳定,不能造成丢帧、漏帧现象;
这些需求造成开发稳定可靠的基于1553B总线的伺服测试系统有难度,需要精心设计一套运行机制。通常,其它领域如航空系统,对于1553B总线的使用没有这么复杂。首先,不会有这么高的频率要求,一般也就传输一些控制、状态信息;其次,发信号和采集会采用两个端点实现,一个BC端发信号,一个BM端采集数据。这些都会降低应用难度。
3 1553B总线测试架构的设计
3.1 类库的设计
基于对伺服测试需求的详细分析,设计了一套1553B伺服测试类库。该类库基于C++语言,使用VC开发环境实现,扩展性强、具有可移植性。1553B伺服测试类库实现了伺服测试对1553B总线应用的常用功能封装,使用该类库可快速实现各产品1553B总线接口协议中所规定的各项功能。
以下主要从静态结构图、消息链的设计、动态消息中断处理机制3个方面对该类库进行详细介绍。类库的静态结构图如图3所示。
图3 1553B伺服测试类库静态结构图
该类库包括两个基本类:Pack1553类、CmdBase类;CmdBase类有一个派生体系,CmdMain、CmdExstop、Cmdrtselftest、CmdSync类都是从CmdBase类派生出来的,它们都是具体的1553B总线要求功能的封装类;还有一个辅助类包:MemManager、SystemStatus、Ctrlwd、Cmdwd。Pack1553类封装了1553B总线协议BC端的基本操作命令、以及伺服测试实现机制的基本函数。该类设计了一个后台线程,它和基本函数一起构成了伺服测试数字信号发送和采集的基本实现框架。CmdBase系列类是对伺服测试任务书中1553B总线的具体封装类,协议中的一个功能需求点通常封装为一个类。如Cmdrtselftest表示1553B总线RT端即伺服控制器的自检功能类;CmdSync表示1553B总线协议的同步功能类;CmdExstop表示1553B总线协议RT端跑飞时对RT进行软件复位的功能类;CmdMain类表示协议中发信号同时采集数据功能的测试类。辅助类包中MemManager表示内存管理类,主要完成信号数据和采集数据的内存管理、以及通道数据格式变换等功能;SystemStatus表示全局状态类;Ctrlwd、Cmdwd是为方便1553B总线消息中命令字和控制字的格式转换设计的类。
Pack1553类设计了两部分功能。一个功能是封装了1553B总线BC端的基本功能函数,如:
TransmitCmd函数,表示BC <- RT消息;
ReceiveCmd函数,表示BC -> RT消息;
LoadData函数,表示装载数据到1553B板卡的数据缓冲区;
ReadData函数,表示从1553B板卡的数据缓冲区中读取RT端发送的数据;
MFTCmd函数,表示帧间隔定时功能,是实现精确波形频率的最基本功能;
IntCmd函数,表示中断消息,该函数产生一个中断计数;
GotoCmd函数,表示跳转指令,完成1553B消息的跳转功能;
另外一个功能是设计了实现伺服测试的基本框架,它通过一个后台线程和几个接口函数实现。接口函数是LoadFrames、StartTest、WaitForInt。LoadFrames装载1553B消息链;StartTest开始测试;WaitForInt等待已开始的1553B消息链测试结束事件。而最重要的后台线程完成了伺服测试数字信号发送和采集的底层机制。其有限状态机如图4所示。
图4 Pack1553后台线程的有限状态机图
3.2 消息链的设计
伺服测试最重要的需求是按一定频率把指令信号波形发送到控制器端,同时接收从控制器端传送回的伺服通道数据。它的实现体现在类库中CmdMain类的设计上,CmdMain类及其派生类的变量都具有信号发送和数据接收功能。该类的设计包括两个主要部分:消息链静态结构的设计及动态消息中断处理机制的设计。
先定义以下概念:消息链、帧、子帧、消息。子帧是由一个或多个不同的消息组成的消息子序列;帧是由一个或多个子帧组成的消息子序列;消息链是由一个或多个帧组成的消息序列,可以是循环的,也可以是顺序的。
针对伺服测试的特殊需求,在CmdMain类中设计了一个环形消息链,如下图5所示。它由三部分组成,分别为前子帧、主帧、后子帧。前子帧是由一个或多个消息组成的顺序消息子序列。后子帧是由一个或多个消息组成的顺序消息子序列。主帧是由多个相同的主子帧组成的循环消息链,一个主子帧是包含一个或多个消息组成的顺序消息子序列。前子帧一般设计为包括同步消息在内的需要事前一次性处理的消息子序列。后子帧一般设计为包括回零信号消息在内的需要事后一次性处理的消息子序列。
图5 1553B消息链静态结构图
主帧的设计是关键,它是数字信号发送和采集功能实现的关键点。主帧由多个相同的主子帧组成,主子帧一般包括MFT消息、发信号消息、采集消息、跳转消息、中断消息等消息组成的顺序消息子序列。其中MFT消息决定了数字信号发送频率的准确性。主子帧一般和信号波形中的一个信号点具有对应关系。主帧的静态结构设计包含以下内容:主子帧中消息组合的设计、一次循环中主帧所包含的主子帧个数、及主帧的循环次数、尾循环中主帧所包含的主子帧个数、跳转指令的设计。本人设计了一个消息链参数计算算法,利用它可以轻松求出主帧循环次数、主子帧个数等参数。通过简单调整主子帧消息个数即可生成不同的消息组合。而且该算法不依赖于具体的1553B板卡,它有一个板卡消息缓冲区长度参数MAXDATABLKS,使用它可轻松适应不同的硬件板卡。
在消息链的设计中还要考虑一个因素:消息链所带数据区的设计。一般1553B板卡都有一个消息缓冲区和一个数据缓冲区,两者长度相同。通常一个消息带有一个数据段。本算法采用简单设计,消息和数据段一一对应,即消息号和数据区号相同;不区分不带数据段的消息情况。
主帧的消息结构在信号发送过程中不是一成不变的,有一个动态过程。它通过动态消息中断处理机制实现,具体体现在CmdMain类虚函数MUX_ISR的设计实现上。该函数的逻辑流程图如图6所示,主要处理以下内容:
1)更新下一周期的发送缓冲区;
2)取得当前周期的采集数据;
3)判断是否需要处理跳转消息;
4)若是尾循环,进行尾循环处理。
图6 CmdMain::MUX_ISR逻辑流程图
3.3 类库的使用
类库的使用简洁明了,按以下步骤:
1)从CmdBase或其派生类派生出一个新的1553B总线功能类;
2)设计该类的消息链,即重载LoadFrames函数;
3)处理消息链,即重载MUX_ISR函数;
4)调用生成的新类,以CmdSync类为例,调用方式如图7所示。
图7 类库对象使用的协作图
4 应用情况
4.1 板卡选择
该1553B伺服测试类库开发完成后,应用于两类1553B板卡:Excalibur公司的EXC-1553PCI/MCH、神州飞航公司的AEC1553-CPCI-FBC31RT_S1/S3。2004年~2009年,早期产品如CZ-5模样状态等使用Excalibur公司的1553B板卡,2009年~至今,CZ-5初样、试样、CZ-7等产品使用神州飞航公司的1553B板卡。
这些板卡应用到伺服测试上经历了一个逐步改进、完善的过程。Excalibur公司的1553B板卡提供了一套完整的消息链构造机制,并通过中断消息加中断计数方式实现动态消息更新机制,1553B伺服测试类库可以轻松应用到该板卡上。神州飞航公司的1553B板卡的使用情况就复杂多了。国产板卡的设计适用性、强壮性、测试充分性就要欠缺很多。它本来是用于航空领域测试的1553B总线板卡;应用到伺服测试领域经历了一个发现问题、板卡框架重新设计、测试、驱动完善、状态稳定的漫长试用周期。从2007年~2009年逐步解决了频率不准、丢帧、中断工作方式错误、强度测试异常等问题,进入稳定期,2010年~至今在伺服测试过程中没有出现和1553B总线有关的测试问题。
4.2 在产品中的应用情况
随着各产品伺服测试广泛采用1553B总线,该伺服测试类库已经作为伺服测试软件的一个标准组件,用于实现各产品任务书中规定的15553B总线接口协议要求。
某类型产品是第一个使用1553B总线的产品。2004年,有关1553B总线的资料、应用、信息都很匮乏,关于1553B总线系统的开发需要摸索。在该产品伺服测试软件的开发中,第一次设计并使用了1553B伺服测试类库。用于该产品总成、单元测试软件上,经过了多次总成测试、氦吹测试、及各类大型试验,圆满完成了该产品两级伺服系统基于1553B总线的伺服特性测试,初步证明了该类库的性能稳定可靠。
随后在某类型产品伺服测试软件中也使用该类库作为1553B总线协议的实现组件。该产品1553B总线协议状态复杂,分A、B、C三种大的状态,而其它种类产品1553B总线协议连续性较强。这也考验该1553B伺服测试类库的适用性、可维护性、可扩展性。通过派生新类、组合消息链、处理中断等标准使用流程完全可开发出适合上述复杂1553B总线协议的伺服测试软件。而且开发出的软件也经历了多次多类型的大型测试试验的考验,验证了其稳定性与可靠性。
CZ-5、CZ-7产品也是该类库的主要应用产品。这两个产品的伺服系统是一个三余度系统,测试状态和1553B总线要求比较复杂。要实现三级伺服系统测试、系统控制器测试、RT余度故障模拟测试。在消息链、中断处理设计上需要考虑向三个RT发信号、从三个RT采集数据的情况,要解决频率特性测试与1553B总线带宽有限的矛盾。通过对该类库的适应性调整,解决了以上测试需求。从2008年至今,这两个产品模样、初样、试样进行了大量的所内测试、仿真试验测试、带载特性摸底试验、振动试验、产品研制关键节点的伺服系统和发动机联合热试车等近百次所外大型试验,没有出现一次和1553B总线相关的测试问题,证明了该类库的稳定性和可靠性。
目前,正在开发应用的新产品上也使用了该类库。该产品的1553B总线协议要求1553B总线作伺服系统状态监测用,不参与特性计算;所采数据作状态分析用,要求数据时间精确。经过产品总体人员对该产品单元测试软件所采1553B总线数据的多次比较分析,证明了总线数据时间精确、不漏点。
该类库不仅用在1553B总线上,还用于VxWorks系统及Can总线的开发。由于该类库采用C++语言设计,可以很方便的从Windows系统移植到VxWorks系统,在已完成的VxWorks伺服测试软件中得到了验证。而且,该类库框架具有广泛适用性,只要去掉Pack1553类中1553B总线相关接口,换成其它数字总线接口函数,其动态响应机制及整个类库都可应用于其它数字总线。有关Can总线类库的移植应用已在探索中。
5 结论
在伺服测试领域采用1553B总线式数字测试技术是大势所趋。当前伺服研制任务重时间紧,对伺服测试有更迫切需求,对伺服测试软件系统开发提出了更高要求:在最短时间内开发出高可靠、高性能、高精度的伺服测试软件,以满足伺服高密度、高强度测试需要。本文提出了一种1553B总线BC端伺服测试架构,论述了基于C++语言通用1553B伺服测试类库的具体实现。通过多个产品十多年百余次大型试验考核,该类库具有高可靠性,扩展性、移植性、适用性强,已经成为基于1553B总线伺服测试的基础解决方案。
通用化、产品化是产品设计的追求目标。该类库广泛应用于多个产品,一次开发多个产品共用,很好诠释了软件模块化、通用化、平台化的理念。它节省了开发人员的大量时间、精力,使其致力于共同维护一个产品,提高了人员效率,也提高了产品质量。
[1] 温国栋.抗辐射1553B 总线接口的设计与实现[D].长沙:国防科学技术大学,2013.
[2] 刘 健,刘 刚.总线技术在武器系统中的应用[J].武器装备自动化,2002,21(5):28-31.
[3] 国防科学技术工业委员会.GJB289A数字式时分制指令/响应型多路传输数据总线[S].北京:国防科学技术工业委员会,1998.
[4] 章 宁.基于ICD库的1553B总线数据采集分析系统的设计与实现[D].成都:电子科技大学,2014.
[5] 黄连兵,等.通用1553B 信号模拟源软件架构设计[J].载人航天,2013,19(2):47-51.
[6] 胡寿松,等.1553B总线在车辆动力传动一体化控制中的应用探讨[J].车辆与动力技术,2002(4):43-48.
[7] 廉保旺,李 勇.CAN总线与1553B总线性能分析比较[J].测控技术,2000(6):47-49.
[8] 于雅丽,陈锦莉.1553B通信研究及其在导弹测试系统中的应用[J].计算机测量与控制,2009,17(2):360-362.
[9] 吴结根,杨 俊.1553B总线远程端点数据链路层协议的FPGA实现[J].现代电子技术,2009(3):163-166.
[10] 谢拴勤,等.基于FPGA+DSP的1553B总线通用接口设计与实现[J].计算机测量与控制,2009,17(1):183-186.
An Implementation Architecture of 1553B Bus In Servo Test Area
Xie Wei,Zhang Lei, Lan Tian,Hu Lian,Hou Yan
(Beijing Research Institute of Precise Mechanical and Electronic Control Equipment, Beijing 100076,China)
The developing process of the 1553B bus in aerospace area, especially in servo test area, is introduced. The common questions usually met in the development of servo test software systems based on the 1553B bus are also discussed. More, an efficient and strong application architecture for solving the 1553B bus BC part realization in servo test area is discussed in detail, The solution based on the architecture is the universal servo test class library based on the C++ language. The class library is so stable and reliable that it has been used in so much critical tests of many research types in recent ten years. It has been the base solution for the 1553B bus application in servo test area. It also provides an
ignificance for the modularization, universalization and production of servo test software systems.
1553B Bus BC part realization; digital servo test; message link; digital signal sending and acquisition
2015-12-25;
2016-01-28。
新一代运载火箭项目(C0100181001)。
谢 伟(1974-),男,山东济宁人,硕士研究生,高级工程师,主要从事航天伺服测试软件方向的研究。
1671-4598(2016)06-0128-05
10.16526/j.cnki.11-4762/tp.2016.06.035
TP336
A