FC-AE-1553协议桥接MIL-STD-1553和UART的通讯处理方法与流程

文档序号:27975801发布日期:2021-12-15 00:22阅读:269来源:国知局
FC-AE-1553协议桥接MIL-STD-1553和UART的通讯处理方法与流程
fc

ae

1553协议桥接mil

std

1553和uart的通讯处理方法
技术领域
1.本发明属于fc

ae

1553总线、mil

std

1553总线和uart通讯技术领域,具体涉及一种航电测试系统中fc

ae

1553协议桥接mil

std

1553和uart的通讯处理方法。


背景技术:

2.参考图1,在航电测试系统的桥接器中将fc

ae

1553协议与mil

std

1553进行相互转换,nc节点端通过光纤交换机并基于fc

ae

1553协议向桥接器中的nt设备发送数据,nt设备将收到的数据通过mil

std

1553总线向rt设备转发;rt设备通过mil

std

1553总线向桥接器中的nt设备发送数据,nt设备将收到的数据基于fc

ae

1553协议通过光纤交换机向nc节点端转发。同时,桥接器将fc

ae

1553协议与通用异步收发装置(uart)实现桥接,nc节点端通过光纤交换机向桥接器中的nt设备发送数据,nt设备将收到的数据通过串行接口向通用异步收发装置转发;通用异步收发装置通过串行接口向桥接器中的nt设备发送数据,nt设备将收到的数据通过光纤交换机向nc节点端转发。
3.一方面,由于“命令/响应”通讯方式与“对等收发”通讯方式(串口通讯)在通讯机制上是不兼容的,因此,为实现fc

ae

1553协议与uart之间的桥接,必须解决好命令/响应通讯方式与对等收发通讯方式的“合理共存”问题,否则就会出现nc端(主控制器)接收到错误的数据报文,导致nc端和通用异步收发装置通讯超时或失败。
4.另一方面,航电测试系统的nc节点端设备软件由nc端主机程序和nc端fpga程序构成,nc端主机程序接收并解析上位机发送的报文(1553b报文和串口报文),并将这些指令以消息的方式配置给nc端fpga程序;nc端fpga程序通过fc

ae

1553总线将消息发送给nt设备。由于nc端主机程序尚不能在和上位机通讯前获悉接收到报文的信息量(rt地址、rt子地址以及同时和几路串口进行通讯),因此,nc端主机程序在初始化时需要向nc端fpga程序配置n条消息,每条消息序号不重复。由于nc端fpga程序的消息堆栈中能够容纳的消息个数有限(可能小于n条),因此,按照上述方法进行配置,一旦nc端主机程序配置的消息个数大于消息堆栈容量,nc端fpga程序就会丢失fc

ae

1553消息,最终导致通讯失败。


技术实现要素:

5.(一)要解决的技术问题
6.本发明要解决的技术问题是:为了使航电测试系统中nc端和rt设备以及通用异步收发装置能够正常通讯,防止出现fc

ae

1553消息被覆盖或丢失的现象,并提高nc端和nt端通讯传输的实时性和可靠性,设计一种fc

ae

1553协议桥接mil

std

1553和uart的通讯处理方法。
7.(二)技术方案
8.为了解决上述技术问题,本发明提供了一种航电测试系统中fc

ae

1553协议桥接mil

std

1553和uart的通讯处理方法,包括以下步骤:
9.s1:设计通讯报文长度和nc端控制命令的发送频率;
10.s2:基于步骤s1,nc端主机程序接收上位机指令并向nc端fpga程序发送握手信号;
11.s3:基于步骤s2,nc端主机程序根据fc

ae

1553协议完成每条消息的配置;
12.s4:基于步骤s3,nc端主机程序通知nc端fpga程序消息配置完成,并启动消息发送;
13.s5:nc端主机程序通过中断完成数据报文接收工作。
14.优选地,步骤s1中设置nc端每次读取nt数据缓冲区中的数据长度为固定值l,设置串口通讯协议中nc端接收数据报文的长度必须为长度l的正整数倍,设置1553b总线通讯协议中nc端接收数据报文的长度为64字节。
15.优选地,步骤s1中设置nc端发送“nt

>nc控制命令”的频率大于通用异步收发装置uart周期发送的频率,该命令的发送时间间隔小于通用异步收发装置接收串口数据的超时时间。
16.优选地,步骤s2具体为:nc端主机程序将接收到的上位机指令存储在消息队列中,所述上位机指令包括1553b报文和串口报文;nc端主机程序从消息队列中取出一条消息,对报文中的rt地址、rt子地址、数据长度、数据内容以及报文类型进行解析处理,将报文分为nc

>nt类型和nt

>nc类型两种报文;nc端主机程序通过pcie总线向nc端fpga程序发送握手信号,通知其准备接收新的消息。
17.优选地,所述nc端主机程序通过pcie总线向nc端fpga程序发送握手信号,并完成以下工作:通知nc端fpga程序停止对当前消息栈的操作;收到nc端fpga程序反馈信号后,清空当前消息栈内容;初始化nc端设备;设置消息栈中消息运行次数为1次;初始化消息栈中的所有消息序号为无效;消息栈中消息计数清零。
18.优选地,步骤s3具体为:nc端主机程序在接收到nc端fpga程序反馈的“接收消息准备好”信号后,按照如下步骤完成向nc端fpga程序的消息配置:
19.nc端主机程序在初始化时动态分配一块内存空间,将理论上有可能向nc端fpga程序配置的n条消息存储在该空间内,并初始化每条消息的序号,n表示消息个数的最大值;
20.nc端主机程序按照fc

ae

1553协议配置每条消息的消息类型、消息发送的源id、消息发送的目的id、消息发送的源地址、消息发送的目的地址、消息长度、消息内容和消息间隔时间,并将这些信息存储在每条消息对应的存储空间内;
21.nc端主机程序从消息队列中每解析出一条消息,将接收消息计数加一,并将该条消息的真实消息序号保存在以消息计数为下标的数组中,所述真实消息序号为初始化时分配的消息序号;该数组中保存的是nc端fpga程序消息栈中实际接收到的消息序号,该消息计数即为消息栈中的消息个数,从而建立了可能接收到的最多的消息与每次实际存储到nc端fpga程序消息堆栈中消息的映射关系;nc端fpga程序消息堆栈中的每条消息均能找到与其对应的真实消息序号。
22.优选地,步骤s4具体为:nc端主机程序完成步骤s3中的消息配置后,根据当前nc端fpga程序消息堆栈中消息计数值设置消息栈内所有消息的运行时间;
23.nc端主机程序通过pcie总线通知nc端fpga程序消息配置完成,让其准备好从dma缓冲区接收数据;
24.nc端主机程序通过pcie总线收到nc端fpga程序“数据接收准备好”信号后,启动dma控制器,将本次从消息队列中解析的所有消息的配置信息通过dma方式发送给nc端fpga程序;
25.nc端fpga程序将dma缓冲区中的数据取走后,通过pcie总线向nc端主机程序发送“数据接收完毕”信号,并将dma缓冲区中数据存储到消息堆栈中;
26.nc端主机程序通过pcie总线通知nc端fpga程序开始对当前消息栈内消息进行发送操作,并判断nc端中断状态寄存器的状态,同时,nc端fpga程序根据步骤s3中数组中保存的消息序号,通过fc

ae

1553协议向nt端发送该条消息的配置信息内容。
27.优选地,判断nc端中断状态寄存器的状态时,若中断状态寄存器中显示当前消息栈中所有帧已完成处理,表明当前消息栈中所有帧已经发送完成,此时,nc端主机程序再从消息队列中取出下一条上位机发送的数据报文,返回步骤s2开始执行消息处理。
28.优选地,步骤s5中,一旦nt端收到通用异步收发装置发送的串口数据报文或者rt设备发送的1553b数据报文,程序会以中断的方式通知nc端;nc端中断程序通过消息队列将收到的消息发送给任务a,任务a从消息队列出取出接收到的串口数据报文或1553b数据报文,并判断nc端中断状态寄存器状态;在nc端中断状态寄存器状态均正常的情况下,调用消息接收函数接收该条消息。
29.优选地,步骤s5中,通过判断接收到的消息序号能够区分串口数据报文和1553b数据报文。
30.(三)有益效果
31.本发明提出的方法在nc端主机程序向nc端fpga程序配置消息时,避免nc端主机程序和nc端fpga程序访问“共享存储区”出现读写冲突的现象;避免出现nc端读取nt数据缓冲区中数据超时现象,完美实现了“命令/响应”通讯方式与“对等收发”通讯方式的兼容;采用消息映射的方法进行消息配置,无需增加硬件内存空间,无需改动nc端fpga程序,具有程序处理简单、系统开销小、成本低等特点;该方法尤其适用于上位机每次发送的报文种类较多,且发送频率较快的情形。
附图说明
32.图1是航电系统fc

ae

1553协议桥接示意图;
33.图2是本发明的方法流程图。
具体实施方式
34.为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
35.本发明提供了一种航电测试系统中fc

ae

1553协议桥接mil

std

1553和uart的通讯处理方法,该方法首先设计合理的通讯报文长度和nc端控制命令的发送频率,然后nc端主机程序接收上位机指令并向nc端fpga程序发送握手信号,接着nc端主机程序根据fc

ae

1553协议完成每条消息的配置,之后nc端主机程序通知nc端fpga程序消息配置完成,并启动消息发送,最后nc端主机程序通过中断完成数据报文接收工作。
36.参考图2,该方法的具体实施步骤如下:
37.s1:设计合理的通讯报文长度和nc端控制命令的发送频率
38.由于nc端每次读取nt数据缓冲区中的数据长度不固定,一旦某一时刻nt数据缓冲区中的有效数据长度小于本次nc端要读取的数据长度时,就会出现nc端读取nt数据缓冲区
中数据超时现象。为避免数据读取超时,需要合理设计通讯协议中每种报文的长度。同时,为了避免出现nc端未能及时读取nt数据缓冲区中数据而导致数据缓冲区中数据丢失或被覆盖的现象,需要在nc端设计合理的“nt

>nc控制命令”发送频率。
39.因此,为避免出现nc端读取nt数据缓冲区中数据超时现象,设置nc端每次读取nt数据缓冲区中的数据长度为固定值l,设置串口通讯协议中nc端接收数据报文的长度必须为长度l的正整数倍,设置1553b总线通讯协议中nc端接收数据报文的长度为64字节。当通讯协议中每种数据报文的长度满足上述要求后,nc端读取nt数据缓冲区中数据时,就不会出现因nt数据缓冲区中数据长度大于0且小于l,使得本次数据读取失败,最终可能导致数据接收超时的现象。
40.进一步,由于串口通讯是“对等收发”通讯方式,为了避免出现nc端未能及时读取nt数据缓冲区中数据导致数据缓冲区中数据丢失或被覆盖的现象,nc端发送“nt

>nc控制命令”的频率应该大于通用异步收发装置uart周期发送的频率,该命令的发送时间间隔应该小于通用异步收发装置接收串口数据的超时时间。在满足上述条件的情况下,该数据发送的频率也不应该设置过快,否则会增加fc

ae

1553总线负荷。
41.s2:nc端主机程序接收上位机指令并向nc端fpga程序发送握手信号
42.本步骤中,nc端主机程序接收到上位机发送的1553b报文后,通过消息队列对报文中的rt地址、rt子地址、数据长度、数据内容以及报文类型进行解析处理,将报文分为nc

>nt类型和nt

>nc类型两种报文;nc端主机程序通过pcie总线向nc端fpga程序发送握手信号,通知其准备接收新的消息。后续在接收到nc端fpga程序的反馈信号后,nc端主机程序就可以开始进行消息配置工作。
43.具体地,nc端主机程序将接收到的上位机指令(包括1553b报文和串口报文)存储在消息队列中;
44.nc端主机程序从消息队列中取出一条消息,对报文中的rt地址、rt子地址、数据长度、数据内容以及报文类型进行解析处理,将报文分为nc

>nt类型和nt

>nc类型两种报文;
45.nc端主机程序通过pcie总线向nc端fpga程序发送握手信号,并完成以下工作:
46.通知nc端fpga程序停止对当前消息栈的操作;
47.收到nc端fpga程序反馈信号后,清空当前消息栈内容;
48.初始化nc端设备;
49.设置消息栈中消息运行次数为1次;
50.初始化消息栈中的所有消息序号为无效;
51.消息栈中消息计数清零。
52.s3:nc端主机程序根据fc

ae

1553协议完成每条消息的配置
53.为避免nc端fpga程序的消息堆栈出现存储溢出现象,只需将nc端主机程序每次从消息队列中实际接收到的消息存储到nc端fpga程序的消息堆栈中即可。这就需要在nc端主机程序配置消息时,对实现理论上可能接收到的最多的消息与每次实际存储到nc端fpga程序消息堆栈中消息的映射关系进行处理。通过这种方式,既有效控制了nc端fpga程序消息栈内有效消息的个数,又保证了nc端fpga程序处理消息栈的实时性和可靠性。
54.具体地,nc端主机程序在接收到nc端fpga程序反馈的“接收消息准备好”信号后,
按照如下步骤完成向nc端fpga程序的消息配置:
55.nc端主机程序在初始化时动态分配一块内存空间,将理论上有可能向nc端fpga程序配置的n(n表示消息个数的最大值)条消息存储在该空间内,并初始化每条消息的序号(消息序号不重复);
56.nc端主机程序按照fc

ae

1553协议配置每条消息的消息类型、消息发送的源id、消息发送的目的id、消息发送的源地址、消息发送的目的地址、消息长度、消息内容和消息间隔时间,并将上述信息存储在每条消息对应的存储空间内;
57.nc端主机程序从消息队列中每解析出一条消息(bc

>rt类型消息、rt

>bc类型消息、串口发送消息或者串口接收消息),将接收消息计数加一,并将该条消息的真实序号(初始化时分配的消息序号)保存在以消息计数为下标的数组中;该数组中保存的是nc端fpga程序消息栈中实际接收到的消息序号,该消息计数即为消息栈中的消息个数。通过这种方法建立了理论上可能接收到的最多的消息与每次实际存储到nc端fpga程序消息堆栈中消息的映射关系。nc端fpga程序消息堆栈中的每条消息均能找到与其对应的真实消息序号。
58.s4:nc端主机程序通知nc端fpga程序消息配置完成,并启动消息发送
59.nc端主机程序完成对接收消息的配置处理后,设置nc端fpga程序消息堆栈中消息的运行时间,并通过pcie总线向nc端fpga程序发送握手信号,通知其消息配置完成,nc端fpga程序可以启动对消息栈中消息的发送工作。
60.具体地,nc端主机程序完成步骤s3中的消息配置后,根据当前nc端fpga程序消息堆栈中消息计数值设置消息栈内所有消息的运行时间;
61.nc端主机程序通过pcie总线通知nc端fpga程序消息配置完成,让其准备好从dma缓冲区接收数据;
62.nc端主机程序通过pcie总线收到nc端fpga程序“数据接收准备好”信号后,启动dma控制器,将本次从消息队列中解析的所有消息的配置信息通过dma方式发送给nc端fpga程序;
63.nc端fpga程序将dma缓冲区中的数据取走后,通过pcie总线向nc端主机程序发送“数据接收完毕”信号,并将dma缓冲区中数据存储到消息堆栈中;
64.nc端主机程序通过pcie总线通知nc端fpga程序开始对当前消息栈内消息进行发送操作,并判断nc端中断状态寄存器的状态,同时,nc端fpga程序根据步骤s3中数组中保存的消息序号,通过fc

ae

1553协议向nt端发送该条消息的配置信息内容;
65.判断nc端中断状态寄存器的状态时,若中断状态寄存器中显示当前消息栈中所有帧已完成处理,表明当前消息栈中所有帧已经发送完成。此时,nc端主机程序再从消息队列中取出下一条上位机发送的数据报文,返回步骤s2开始执行消息处理。
66.s5:nc端主机程序通过中断完成数据报文接收工作
67.一旦nt端收到通用异步收发装置发送的串口数据报文或者rt设备发送的1553b数据报文,程序会以中断的方式通知nc端;nc端中断程序通过消息队列将收到的消息发送给任务a,任务a从消息队列出取出接收到的串口数据报文或1553b数据报文,并判断nc端中断状态寄存器状态;在nc端中断状态寄存器状态均正常的情况下,调用消息接收函数接收该条消息。
68.通过判断接收到的消息序号能够区分串口数据报文和1553b数据报文,该消息序号通过步骤s3中的映射关系得到。
69.需要注意的是,由于按照步骤s1中的方法设置nc端接收数据报文的长度,因此,nc端每次调用消息接收函数能够得到完整的1553b接收报文,而每次调用消息接收函数收到的由通用异步收发装置发送的串口数据报文长度均为l。为了收到完整的串口数据报文,需要连续调用多次消息接收函数。同时,根据串口数据报文的数据帧格式对接收到的报文进行内容解析和拼包处理。该方法在接收处理多种长度不同的串口数据报文时具有较高的容错能力。
70.可以看出,本发明通过设计合理的通讯报文长度和nc端控制命令的发送频率,并优化了nc端向nt端发送消息的过程,保证了fc

ae

1553协议同时桥接mil

std

1553和uart时,nc端能够及时响应并处理上位机发送的指令以及接收数据的正确性。
71.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1