基于CAN总线的A320模拟器硬件仿真

考虑到各种机型的驾驶舱功能的共性,即系统模块多、通信频繁、结构复杂而导致模块间布线繁杂,以及由此产生的干扰等问题,提出一种驾驶舱硬件仿真方案,该方案可以满足驾驶舱各模块间稳定通信,且简化布线。
1 方案确立
驾驶舱仿真主要以报文的形式承载各系统模块的操作信息,通过上位机完成逻辑运算,实现驾驶舱功能仿真。驾驶舱仿真设计的原则是稳定,即整个驾驶舱网络应具备一定的容错能力,在数据传输过程中若产生冲突竞争,则应有一种机制解决冲突,且不丢失数据,而can(co-ntroller area network)是一种有效支持分布式控制或实时控制的串行通信网络,具有突出的可靠性、实时性和灵活性,基于此选取can总线作为整个驾驶舱网络通信方案。由于飞机驾驶舱结构复杂、功能繁多,所以需对驾驶舱进行功能模块划分,各模块间通过can总线进行通信,以下即从系统总体设计、can节点通信接口硬件设计和数据传输软件设计3个方面详细阐述该方案。
2 系统总体设计
飞机驾驶舱中的显示部分主要有电子飞行仪表系统(electronic flight instrument system,efis),飞机电子中央监控(electronic centralized aircraft monito-ring,ecam),分别由3台触摸屏显示器显示,其显示逻辑统一由上位机控制。操作部分有顶版、中央操纵台、遮光板,侧杆,这4部分全部由硬件实现,基于区域划分的原则将其进行模块划分,每二模块为一节点。整体架构如图1所示。
由于各节点间存在逻辑控制关系,所以采用多主方式通信,can总线网络上任一节点均可作为主节点向其他节点发送数据。上位机作为其中一个节点,通过can总线智能适配卡与网络上的各节点进行通信,负责主要的逻辑运算和驾驶舱显示功能的控制,其他节点不仅完成操作动作的采集,还根据逻辑要求互相控制。
3 can节点通信接口硬件电路设计
由于驾驶舱各节点间的控制逻辑复杂,数据量大,通信频繁,故对各节点主控芯片的存储容量有较高的要求,且对can总线网络中数据传输的稳定性也有较高要求。选取c80c51f040作主控芯片,因其拥有4352b ram以及64kb的flash,满足程序应用需要。它内部集成can控制器,它兼容can技术规范2.0a和2.0b,主要由can内核、消息ram(独立于cip51的ram)、消息处理单元和控制寄存器组成。can内核由can协议控制器和负责报文收发的串行/并行转换rx/tx移位寄存器组成。消息ram用于存储报文目标和每个目标的仲裁掩码。这种can处理器有32个随意配置为发送和接收的报文目标,并且每一个报文目标都有自己的识别掩码,所有的数据传输和接收滤波都是由can控制器完成,而不是由cip51完成。c8051f04o所具备的完善的can总线控制器和独立的can信息缓冲区,可以解决mcu(micro control unit)与can总线之间串/并转换、不同节点间波特率误差的校正、以及mcu与can总线通信的冲突竞争和同步等问题,为can总线网络具有较高稳定性提供了可靠的保障。
can总线的收发器选用ti公司的sn65hvd230芯片,该芯片正常模式下的低电流设计使得芯片的发热量小(典型数值为370μa),而且其优化的驱动器设计使得信号质量得到进一步改善;为进一步提高系统抗干扰能力,在主控芯片c80c51f040和收发器sn65hvd230之闻加入光耦6n137进行电气隔离,由于通信信号传输到导线的端点时会发生反射,反射信号会干扰正常信号的传输,因而总线两端接有终端电阻以消除反射信号,有效隔离can总线上的干扰信号,提高了系统可靠性。如图2所示。
4 数据传输软件设计
在can总线上发送的每一条报文都具有惟一的一个11位或29位数字id,当发生冲突时,仲裁器就根据id值的大小决定优先级最高的id发送,其他的退出总线。can总线状态取决于二进制数0而不是1,即信号是线“与”关系:当一个节点发送1,另一个节点发送0时,其他节点接收到的是信号0。所以id值越小,该保报文拥有的优先权越高。
4.1 can通信协议设计
通信协议设计主要包括两部分,确定报文id和定义报文所含8位数据的每位具体含义。由于报文id决定其优先级,所以需要根据实际逻辑确定每一报文的优先级,鉴于驾驶舱操作部分部件少于1000件,所以采用标准格式帧,11位的标识符可以表达211-1等于2047种报文,满足实际需求。每个报文含有8字节数据,由于上位机负责主要逻辑运算,所以上位机应能根据每一个报文内容精确定位驾驶舱被操作部件,定义其格式如图3所示。
协议采用data0~data4五个字节承载所有信息,信息内容包括板号(penal number)、件号(component number)、部件类别(component sort)、部件状态值(整数部分和小数部分)和小数标志位(dot)。经过整合,共有32块面板,所以使用5位二进制表示面板号,板号(pn0~pn4)对应data3.3~data3.7;每块面板上的部件数均少于128,跳开关面板上部件最多,为125个,所以采用7位二进制表示件号,件号(cn0~cn6)对应data4.o~data4.6;根据部件输出状态将其分为5类,分别是按钮、波段开关、电位器、显示屏和跳开关,所以用3位二进制表示件类别,部件类别(cs0~cs2)对应data3.o~data3.2;部件状态值整数部分(int0~int15)对应data1.0~data1.7和data2.0~data2.7,状态值小数部分(dec0~dec7)对应data0.0~data0.7,小数标志位(dot)对应data4.7。
4.2 通信实现
can总线节点数据传输的实现主要分为三部分,分别是初始化设置、发送数据和接收数据。初始化can控制器的一般步骤如下:
(1)将sfrpage寄存器设置为can0_page;
(2)将can0cn寄存器中的init和cce位设置为1;
(3)设置位定时寄存器和brp扩展寄存器中的时序参数;
(4)初始化每个消息对象或将其msgval位设置为无效;
(5)将init位清零。接收数据有查询和中断两种方式,本文在设计时采用中断方式。接收数据程序流程图如图4所示。
当总线上有数据传入时程序进入中断,读取中断寄存器的值,该值对应32个消息对象中的其中一个消息号,将该消息号写入ifx命令请求寄存器,读取ifx报文控制寄存器,查看标志位newdata,值为1表示有新数据,值为0表示没有新数据,读取完当前数据后查看数据块结束标识位eob,值为1表示数据块结束,当前数据接收完成;值为0,表示数据块没有结束,将消息号增一,继续接收下一个消息对象中的数据,直至接收完成。发送数据时需配置寄存器,设定报文id,此外还需在将数据写入数据寄存器的时候,先写高位后写低位,即先对canodath赋值,再对canodatl赋值,最后将消息号写入ifx命令请求寄存器即启动数据传送。
5 结语
实际测试表明,模块间通信稳定,抗干扰性强,且布线简洁。该方案已经应用于机载电子系统故障诊断模拟机,虽然该模拟机是针对a320机型,但是该方案也可扩展应用到其他机型的模拟机,具有广阔的应用前景。

清华大学研究院全力攻关石墨烯“宏量制备”技术关卡
李佳:AI团队的工作、AutoML研发的难点以及如何将研究与产品结合
7nm掀高端处理器价格战 优势不如最初预期
人工智能作为智慧城市发展的新动能,正在推动各领域向智能化加速跃升
三星申请Space Zoom商标,将用于手机上的长焦镜头
基于CAN总线的A320模拟器硬件仿真
美国联邦航空管理局将进行人工智能空中交通管制试验
GTC23 | NVIDIA 携合作伙伴秀 “软” 实力,AI 应用的星辰大海已开启?
什么是动态DR?大视野平板动态DR功能特点介绍
什么是石墨化?石墨化与碳化的区别
库存消化后NVIDIA应仍有成长表现
荣耀手环5的血氧检测功能怎样升级
哪些手机音质比较好?魅族pro6,vivox9,荣耀v9HiFi音乐手机良心推荐!
中国2022年将成全球最大的物联网市场
怎样消除蓄电池硫化
华为的专利揭示了他们关于智能功能的想法
SCT1270、SCT1271高效同步升压转换器(芯洲)
区块链等同于数字货币?一文了解区块链与数字货币的关系
语音数据标注平台让语音识别技术更精准
对于缺水问题,半导体产业可能造成台湾经济危机