你有没有想过飞行员坐在一架巨大飞机的驾驶舱里,是如何知道飞机的每一个细节,比如空速、发动机效率、油量、内外温度等?并以人类可读的形式解释这些信息?在本文中,我们将讨论一个名为I/O Manager的特殊模块,它从硬件外设如温度传感器、燃油水平指示器等处获取输入,并将这些数据转换为工程单元,提供给图形生成模块。然后,图形生成模块会在X/Y坐标的基础上添加一些图形,并将结果渲染到驾驶舱显示屏上。
下面是不同外设的数据如何到达驾驶舱显示系统的顶层流程。
图1.从输入传感器到座舱显示屏的数据流。
什么是“ I/O模块”?
输入/输出模块是一个离散的应用程序,提供了从物理飞机到其他应用程序的接口。I/O应用程序从共享内存或公用数据网络接收数据,处理数据,然后通过共享内存将其提供给位于其他系统分区上的各种应用程序使用。
以下是I/O管理器的常用功能:
接收和发送数据
检查传入/传出邮件的存在性和有效性
筛选
磁滞(上下计数)
来源选择
通用处理单元
健康监测
串扰缓解
I/O应用程序还提供允许本地应用程序将数据传输到其他分区上托管的其他应用程序的服务。
让我们一个接一个地浏览所有I/O模块功能。
接收、验证、发送
I/O通过在多个表中使用数千个组织良好的参数来进行操作。基本上,它包含用于RX,PAV和TX的表。
所有传入数据都在RX表中接收。I/O应用程序将获取此数据,执行一些操作,然后将结果存储在PAV表中。更进一步,I/O从PAV表中获取所有有效数据,并在冗余源上执行源选择,然后将选定的源移至TX表进行传输。
让我们详细讨论这三个阶段:
接收资料
I/O应用程序以ARINC 664协议的形式从网络或硬件设备检索数据。提取数据后,它将数据转换为工程单位。
每个值参数都有一个状态参数。I/O对收到的参数值执行有效性检查。
图2. I/O应用程序从网络中获取应用程序数据,并将其转换为工程单位,以在驾驶舱显示屏上呈现为值。
在场和有效性检查
I/O应用程序监视参数输入数据的存在和有效性,并使用源选择从所有冗余源中选择一个有效源。然后将选定的数据提供给显示应用程序。
传输资料
在传输时,I/O应用程序将参数数据加载到消息中。它从内部存储器或显示应用程序检索数据。
在传输数据之前,I/O应用程序会检查数据的新鲜度,并使用其状态参数来验证参数值。使用源选择获得有效数据后,I/O模块根据协议将参数值和状态打包到消息中,然后将其传输到网络上。
过滤的用途是什么?
I/O模块使用过滤来防止输出发生任何急剧变化。它只会逐渐增加输出参数值,以保持平面运动平稳。例如,如果飞行员在起飞过程中犯了一个错误,并将起飞角度增加到90度,则I/O过滤 将非常缓慢地增加角度。
I/O如何处理输入值的冗余源?
当飞机处于空中时,如果设备发生故障,飞机几乎会与地面的支持团队断开连接。因此, 对于所有类型的输入信号,始终建议使用冗余的硬件和软件。
在此,I/O模块的工作是仅选择一个有效源进行进一步处理。I/O模块执行源选择,以在来自任何硬件或软件应用程序的多个冗余源中选择单个有效的新鲜源。如果所有输入的冗余信号均有效,则I/O模块将根据预定义的优先级选择一个信号。
什么是通用处理单元?
座舱显示软件具有设计用于执行特定任务的许多不同应用程序,包括导航显示(ND)、主要飞行显示(PFD)、多功能显示(MFD)、发动机指示和机组警报系统(EICAS)和抬头提示显示(HUD)。所有这些显示应用程序都根据需要将一些信息发布到其他显示应用程序,并使用其他显示应用程序发布的一些信息。
I/O模块提供特殊服务,以促进所有这些显示应用程序之间的数据传输。它执行一个通用过程以从所有显示应用程序收集信息,并为所有应用程序准备好最新信息。因此,现在所有显示仅需要联系I/O应用程序即可检索所需的信息。
I/O使用哪些通信协议?
如今,现代技术更喜欢使用A664协议而不是A429协议进行数据传输。I/O模块还使用A664协议从公用数据网络接收数据并向公用数据网络传输数据。
但是,航空电子设备是多种设备的集合,少数设备仍仅使用A429数据格式。在这种情况下,I/O模块使用封装将A429数据加载到A664消息中,然后通过CDN发送A664数据包。在接收端(另一个分区),I/O管理器从CDN接收A664数据,从A664数据包中检索A429消息,并将其提供给相关应用程序。
I/O在设备运行状况监视中的作用是什么?
I/O运行时通过连续检查来自那些设备的信号的状态标志和更新标志来检测各种设备的运行状况。而且,如果I/O应用程序在显示应用程序或传感器等硬件设备发出的任何信号中遇到任何问题,它都会等待特定的周期-如果在预定的超时时间内未获得有效值(称为迟滞) ),则I/O模块会向健康监控系统发出故障。
什么是串扰,它如何发生?
在PFD,ND,EICAS等显示应用程序之间共享数据的过程称为串扰。同一分区内的串扰是通过ARINC 653协议完成的,但是当应用程序要与驻留在不同分区上的另一个应用程序进行通讯时,I/O管理器会通过A664协议发送数据来帮助它。
图3.分区内部和分区之间的数据传输。
在图3中,分区1中的应用程序1正在传输数据,而同一分区中的应用程序2将通过ARINC 653端口接收数据。其他应用程序在I/O管理器的帮助下以A664格式接收数据。
当I/O将数据发布到其他分区时,它将以以下格式存储参数值:
-IO_<Parameter_Name>_XT
I/O以下列格式使用来自其他分区的数据:
-IO_<Parameter_Name>_X2 (1st right partition)
-IO_<Parameter_Name>_X3 (2nd right partition)
-IO_<Parameter_Name>_X4 (3rd right partition)
请注意,虽然这是串扰的工作方式之一,但它可能因飞机而异。
结论
I/O模块是一个多任务应用,它可以接收数据,检查数据是否有效,传输有效数据,对输出值进行过滤,避免因信号值发生剧烈变化而发生意外,进行信号源选择,在多个信号源中选择一个有效的信号源,帮助应用程序相互共享信息,并通过持续监测输入信号来检查各种设备的健康状况。总的来说,这是一个多合一的模块,它可以防止无效数据进入系统,并使许多其他模块的工作变得更容易。eInfochips是一家Arrow公司,使用按照DO-178B标准编写的测试用例和程序对I/O模块进行完整的验证,并使用存根机制来创建在正常测试环境中无法实现的场景。 还使用LDRA和RapiCover等工具对I/O代码进行结构覆盖分析。