1553B是一种时分制指令/响应式多路传输数据总线,因其高可靠性和实时性广泛应用在航空电子设备中,目前在舰船系统中也有广泛应用。总线上可以挂接一个总线控制器(BC),若干(不超过31个)用来连接子系统和数据总线进行数据通信的远程终端(RT),一般还可以挂接
一个总线监视器(MT),用于监听各个节点的通信状态。
总线控制器是在数据总线上被指定执行启动信息传输任务的终端。1553B总线上消息传输的过程是:总线控制器向某一终端发布一个接收/发送指令,终端在给定的响应时间范围内发回一个状态字并执行消息的接收/发送。
在1553B数据总线上,消息是按时间逐次进行传输的,总线上BC与RT间有10种可能的通信模式。大多消息的处理按固定的顺序、周期和相位出现。这类消息称为周期消息,其传输过程叫同步通讯。对这类消息可以按静态的时间表进行,周期时间最小的消息排在一个小帧中(小周期),周期时间最大按小周期2的幂次的调和构成一个主帧(大周期),每个大周期由若干个小周期组成,其余各周期同样按照2的幂次的调和排入消息表。多数的总线控制器系统软件都只实现了周期消息的传输,即同步通讯。但在实际应用的总线通讯中,有些消息是由系统中随机突发事件激活或由其它事件的请求所引起。这类消息称非周期消息,相应的传输称异步通讯。异步通讯是在有服务请求的情况下插入同步通讯中的,具有很高的实时性和重要性,因此,能够根据用户的需求,在同步通讯的同时实现非周期消息的异步通讯具有非常实际的意义。
1、 总线控制器异步通讯处理方案
总线控制器(BC)是总线上的重要组成。总线上所有消息的传输都由BC来激励和控制,是总线进行通讯的开关。为了处理非周期消息,在总线上必须对BC原有的静态总线控制协议进行改进,改进后的协议称为ISBC,它的特点是:
·当消息被更新后才进行传输,其工作机理为更新检测传输(UPD&T);
·消息传输周期是变化的。一个周期消息完成后立即开始新的周期。对任何相关子系统来说,对更新性消息而言,传输周期是异步的。
这一协议的应用降低了通信系统的负载和平均延迟时间,大大改善了子系统的性能。
实现更新数据传输机制(ISBC)的方法有两种:异步服务请求方式和BC定时查询方式。异步服务请求方式是当同步通讯段中的某一周期消息的状态字的服务请求位因异步的服务而被置1时必需插入异步通讯。BC定时查询方式是总线控制器BC以某一预定频率向RT发送方式指令0x1000(发送矢量字)。被查询的RT若有非周期消息,就将矢量字置位,通知BC组织非周期消息的传输。
异步请求方式无查询开销,但它对非周期消息响应不确定,必须在请求RT获得总线使用权时BC才组织传输非周期消息。BC定时查询方式较前者有很强的确定性,它每个小周期对各个终端查询一次,可以保证非周期消息的分辨率,虽然有查询开销,但由于采用UDP&T方式,开销并不多。另外由于它的确定性,系统设计时可确切地对系统进行性能评价,便于系统设计。由于在实时系统中主要考虑实时性问题,因此本软件采用BC定时查询方式。
2、 异步通信软件的仿真测试环境
仿真软件的开发基于特定的硬件和软件配置环境。如图1所示。
在整个测试环境中,本软件用来组织整个系统各个子系统间消息的传输,并响应子系统的非周期消息传输请求,实现异步通讯。计算机仿真终端必须由一块多路数据总线接口卡连接到总线上,以进行数据通讯。本软件的开发选用美国DDC公司的IDEA多路数据总线接口卡,Win98 *** 作系统为计算机仿真平台。
IDEA接口卡本身提供了一个RTL(运行时库)函数库,为上层仿真软件的开发提供了与底层硬件驱动相关的特定功能接口函数(API),驱动总线接口卡与总线进行数据通讯。为了给用户提供友好的界面,本仿真软件使用VC++语言进行设计开发。
仿真软件除了要组织消息的异步通讯,还要求对链入网络的各个终端进行监视,判断各个RT故障情况,将其链入或剔除网络的通信过程,以提高网络的数据传输效率,并实时显示节点状态便于管理员及时发现和排除故障。同时在实际通讯中,为了协调各个终端的通讯,设计了周期性的带数据字的同步消息,每个周期向各个RT广播,通知各个RT做好准备,并在特定终端的异步消息传输结束后通知该RT。设计中周期消息的传输周期分别为2s、1s、50ms(周期时间为设计值,可根据用户要求改变),故设定周期性消息的传输大周期为2s,并将其分成40个小周期(每周期为50ms)。每一小周期1553B命令的配置图如图2所示。
3 、异步通讯软件的结构
考虑以上功能的实现和VC++语言本身的特点,本软件在界面和功能的实现上采用模块化的设计思想,由设置文件建立模块(M1-1)和仿真功能实现模块(M1-2)两个主模块组成,各主模块根据需要包含相应的功能子模块(模块的命名方式:M层次-模块号)。设置文件建立模块(M1-1)为用户提供输入界面,用户可以方便地定义系统所使用的终端地址、要传输的消息内容和数据以及周期消息传输的消息表,对不同的用户有很大的适应性。仿真功能实现模块(M1-2)根据M1-1提供的数据定时组织周期消息的传输,并查询异步消息的传输请求,及时响应异步消息请求并组织传输,每个大周期定时向故障节点发送查询消息,以判断相应RT的状态并刷新实时显示各节点状态。系统模块数据流如图3所示(设该软件为0级模块,即M0-仿真软件)。
设置文件建立模块主要为用户提供一个友好的输入界面,用户输入的数据主要为仿真功能实现模块提供输入。仿真功能实现模块从软件中取出用户在设置文件模块中定义的传输消息所必需的数据,组织消息传输。根据不同功能的实现,它所包含的子模块主要为:IDEA卡的初始化和周期消息传输(M2-1)、异步通讯实现模块(M2-2)、RT故障检测(M2-3)。
由于IDEA卡在驱动上提供了应用程序接口函数API,因此在 *** 作IDEA卡时只需调用相应的API,而不需直接驱动IDEA卡。在驱动IDEA接口卡进行数据传输前首先要初始化数据接口卡,通过调用相应的API,进行卡的自检,并将用户定义的消息内容和消息表写入IDEA卡的存储区。组织周期消息传输时,为节省总线的开销,在每个大周期结束前向网络连接的终端发送查询状态的消息,判断该节点是否可以正常通讯,将正常通讯的终端设置为活动终端,并在组织消息表时进行过滤,只组织关于活动终端的消息。图4给出了仿真软件在仿真平台中的位置及其结构。
3.1 异步通讯实现模块M2-2
本软件的重点就是非周期消息的组织传输,即异步通讯的实现。周期传输的消息多数时间是固定不变的,因此每个周期都传输相同的消息实际加重了总线的负载,为此本软件中大多数消息都为异步消息,对终端进行查询。当消息变化时请求发送的终端设置相应的矢量字,总线控制器则根据收到的矢量字发送相应的消息。这样大大节省了总线的开销,提高了效率。本软件采用BC定时查询方式实现异步通讯。
仿真软件所仿真的BC每个小周期(50ms)内向各个活动终端发送方式指令-发送矢量字,询问该终端是否有异步通讯请求,被询问终端向BC返回一个矢量字(0~31)。若某一终端返回矢量字0,则表示该终端无异步通讯请求,BC继续查询下一活动终端;若该终端返回的矢量字非零,则表示该终端有异步通讯请求,BC必须立即组织该终端请求的异步通讯。
异步通讯是根据查询返回的矢量字组织的,不同的矢量字(1~31)对应不同的消息内容和数目,每个矢量字所对应的非周期消息数目和内容由用户在设置文件模块中自由定义。为了便于在同步通讯中插入异步通讯的程序实现,定义一个数组队列。在仿真开始前遍历用户在消息定义中输入的异步消息,将消息号加入对应的矢量字的数组中,并将该计数器加1。
在对IDEA卡实现异步通讯即非周期消息的传输时,根据IDEA卡提供的API,采用使IDEA卡产生中断的方法,设置向各个终端查询矢量字的消息传输结束后产生中断,在IDEA卡的中断处理例程中组织异步通讯。如果返回的矢量字非零,则该终端有异步传输请求,取出相应矢量字的第一条异步消息,插入消息表中传输,并将该矢量字的消息数减1;同样为异步消息设置传输结束后中断,在中断处理程序中继续判断消息数目,循环至该适量字对应的异步消息传输完毕,继续查询下一终端,传输周期消息。程序流程图如图5所示。
3.2 RT故障检测模块
由于总线所连接的各个终端正常运行的时间很长,出故障的概率较小。为节省总线开销并及时捕获故障节点,在每个大周期(即40个小周期)结束前向每个终端查询一次状态。若有节点已经启动/修复,则立即清除该节点的故障标志,重排周期消息表,添加与该终端相关的可传输消息;若发现某终端故障标志被设置,同样重排消息表并将相关消息删除。为了保证消息的正确传输,当某条消息传输出错时定义消息的两次重发,当消息在该总线和另一条余度总线上重发失败后,将该消息视为出错,同时将相应的终端RT设置故障标志。程序实现控制流如图6所示。
3.3 软件设计的容错处理
1553B总线主要应用在航空电子即空中运动平台中,舰船系统也有应用。应用环境都比较恶劣,受到的干扰较多,且工作时间长。1553B本身采用了一定的措施以保证数据传输的正确性,如它采用双余度总线A和B(见图3),消息在其中一条总线上传输,若此总线发生错误,则消息也可以在另一条总线上传输。本软件利用1553B这个特点,为每条消息设置中断。在中断例程中,对传输出错的消息在此总线和另一条总线上进行重传两次的重发处理,从而排除因偶然的外界因素影响而出现的消息传输错误。
另外,软件中需用户定义的内容多根据1553B规定的有效性采用直接选择式,防止用户的输入错误;对需用户输入数据都有相应的有效性判断,若输入有误,产生错误警告,提示用户重新输入。
本软件已应用于某舰船系统中,组织各子系统消息传输,仿真测试各子系统。在应用中可以发现,总线传输的效率是应用中必须考虑和提高的一个问题,查询矢量字方式的异步消息传输可以提高总线利用的效率,是减轻总线负载的有效解决方案。
责任编辑:gt
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)