当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于PC/104的1553B总线测控系统的设计与实现

引言

随着我国航空事业的迅速发展,各种新型飞机和发控设备相继研制成功,以往一些测控设备在功能和性能上已无法满足新的要求。本测控系统就是在某型飞机的研制过程中扩展出来的一个功能比较全面的1553总线测控系统,总体上采用了PC/104结构的嵌入式系统,既可以实现1553总线数据的实时接收和发送,还可以完成多路数据的采集及负载控制。

总体概述及工作原理

本系统的主要功能是对外部的电压电流及负载I/O信号进行采集测量,并根据由1553总线传输来的飞机控制设备发送的命令字对负载进行控制,对电压电流及负载当前状态进行监控,并将当前数据反馈给控制设备。整个系统在满足实时高速传输的同时,也必须完成对负载精确的控制,测控过程要能够实时监控和显示,方便操作人员控制及发送指令。

为满足以上条件,系统主构架选用了PC/104的嵌入式模块,不仅尺寸小、功耗低,而且其堆栈式结构方便了外扩设备。总体上分为采集、处理、通讯三大部分,各部分硬件上通过PC/104总线紧密连接,由上位机通过以太网总体控制,而软件上分成独立的模块,实现各自部分的功能,在实时嵌入式操作系统VxWorks下再通过主程序的调度协调起来。

硬件设计
系统硬件总体设计以PC/104体系结构为核心,以1553B总线卡作为与飞机(或其他发控设备)通讯的主要接口,ADT600负责电压电流模拟量和负载I/O信号的采集。PC/104可以外扩LCD显示器和键盘鼠标等外设,通过以太网与上位机相连可对测控系统进行有效的控制和过程监测,同时PC/104通过母板外接I/O扩展板对负载进行实时控制。系统框图如图1所示。




SCM/SuperDX是一种高度集成、自栈结构、IBM-PC/AT兼容的PC/104 CPU模块,它被设计成可以方便与其它周边设备及模块构成完整系统的核心部件,采用增强型的80486处理器作为CPU,板载有PC/AT兼容的DMA控制器、中断控制器及定时器,ROM-BIOS,4M~16M字节的DRAM及键盘,网口等。本系统中,将嵌入式操作系统VxWorks下载到Campact Flash中以启动PC/104,上位机通过以太网与PC/104相连,通过网络加载将程序加载到PC/104的RAM中执行,上位机进行实时监视和程序控制,PC/104的LCD显示屏可以实时显示测试数据及数据传输状况。

采集卡选用SBS公司的ADT600,它与PC/104完全兼容,最多提供十六个模拟输入通道,通过71055的可编程外围接口(PPI)提供24路数字量I/O线。模拟量输入的量程可用跳线器选为?5~+5V,?10~+10V,0~10V,并带有+/?35V的过压保护。本系统的模拟量是电压电流信号,量程选择?5~+5V。而I/O通道通过71055的PPI设置为方式0的基本输入输出,采集卡和调理板调理电路硬件连接图如图2、3所示。

电压、电流模拟量的采集应注意数字地和模拟地的分离,以减小干扰,最后通过磁珠单点相连,而I/O电路将电压/地的数字I/O信号通过转换电路转换为采集卡输入电压范围的地/开路信号。
1553B通讯卡选用SBS公司的ASF-PC104-XT-1,该卡能实现PC/104总线和1553B总线的转换,是一款智能MIL-STD-1553的板卡,支持MIL-STD-1553A和MIL-STD-1553B协议,适用于PC/104底板,可以工作在BC模式、RT模式、BM模式及并发BM模式,实现多个终端之间的快速通信。它具有以下高级结构特点:具有高速可编程逻辑装置用于以字为单位的底层1553协议的编解码;采用TI公司的DSP用于信息级和底层1553协议的处理;具有128K字节的高速静态双端口RAM用于信息缓存;配合底板接口的高速可编程逻辑电路(ASIC设计);板上提供标准的和IRIG时间码相关的高级计时电路;配套的软件接口库为1553和429设备管理提供扩展功能。

由于SCM/SuperDX提供的I/O资源有限,因此,采集卡ADT600和1553B通讯卡的I/O地址的合理选择就十分重要,以避免冲突以及在调试时产生不必要的麻烦,SCM/SuperDX的I/O地址分配如表1所示。ADT600模块要占据十二个连续的I/O口的位置,基地址由DIP开关选择,而ASF-PC/104卡需要主机为其分配未经使用的8块连续的地址寄存器,考虑以上因素,选取ADT600的基地址为300h,ASF-PC/104为390h。

软件设计
软件设计的重点主要包括底层设备驱动的编写、系统任务的划分及优先级的设定。操作系统选用VxWorks,以充分满足1553B实时通讯的要求,系统总体软件主流程图如图4所示。系统启动之后执行主程序进行自检测和AD/1553板卡的初始化,若失败则报错,将错误信息显示在显示屏上,成功后创建主任务并执行,包括数据的采集、发送和接受及解析命令控制字并执行,主程序将循环执行,直到上位机发送停止程序的控制命令。

底层设备驱动配置
驱动程序为硬件平台和应用软件间提供一个固定接口的软件层,应用程序必须通过驱动程序才能与硬件进行数据通信。而驱动程序的编写又与操作系统密切相关,具体的操作系统对驱动的要求有所不同,本设计的底层驱动和操作系统VxWorks及任务关系图如图5所示。根据本系统的实际需要,编写了与VxWorks系统密切相关的底层设备驱动。

首先介绍1553B通讯卡的驱动配置。本系统选用的1553B通讯卡有两种板卡访问方式:内存映射和I/O访问。I/O寻址采用专门的指令,编程缺乏灵活性,并且每次只能传送单个字节;而内存映射方式指令丰富,编程方便、硬件节省,便于实现快速交换数据。故选用内存映射方式,PC/104可以映射的空间为0xC8000~0xEFFFF,选取内存映射基地址为0xD0000。同时INT引脚通过跳线选择IRQ9。软件设置如下:
1)调用setup_fw.c将固件库源文件F002p.dat生成与ASF-P104卡匹配的Firmware.h(固件数据结构)文件,为板卡硬件提供匹配的接口定义信息;
2)在sbs_sys.h文件中添加#define VXWORKS和#define NO_FILE_SYSTEM语句行,设置操作系统信息;
3)在dev_cfg.h文件中按如下设置定义设备配置信息:

配置好软件设置后就是1553驱动程序的实现,即完成设备驱动函数的编写。在编写函数之前,需要定义驱动号以及设备的描述符,这在头文件中实现,如下所示:

}M1553_DEV; /*1553设备描述符*/
头文件定义完毕就可以编写函数了,以编写M1553Drv( )函数为例。M1553Drv( )函数调用iosDrvInstall( )安装设备的驱动例程。它在设备驱动程序表中为设备分配一个条目,并在其中填入此设备xxCreate( ),xxDelete( ),xxOpen( ),xxClose( ),xxRead( ),xxW rite ( )和xxIoctl( )等函数的地址。函数实体如下:


一一编写其他的1553设备驱动函数M1553DevCreate( ),M1553Open( ),M1553Read( )和M1553Write( )以及中断服务程序M1553Int( )。

以上为1553B卡的底层驱动编写,ADT600与之类似,只是头文件有差异,同理编写设备函数ADC_InitializeBoardSettings(),ADC_DigitalToSBS(),ADC_SetChannel(),ADC_StartConversion(),ADC_ConversionDone()和ADC_ReadData()。至此,设备驱动配置完成,将驱动程序加载至应用程序,上层程序代码就可以直接调用这些底层驱动函数进行编程。

任务设计

VxWorks是一个实时多任务操作系统,因此根据系统的功能模块要求,将应用程序分割成若干个独立的任务,使CPU通过操作系统来调度多个任务,轮番服务于一系列任务中的一个,使得应用程序的设计大大简化,并使程序的结构模块化、层次化。同时,使用了实时内核,所有时间要求苛刻的事件都可以尽可能快地得到处理。


任务划分的好坏直接影响到系统的性能。将一个实时应用问题分解为多个任务,可以加快执行速度,且有效地利用系统资源。但是,过度地分解任务,将会使系统中有大量的任务,需频繁地进行任务的切换,任务之间还要进行很多同步和互斥控制,将增加系统服务工作,降低系统的速度和有效性。因此,划分任务时必须进行各种综合平衡和折衷,有时将两个操作合并在一起处理效果好些,但有时必须分开处理。这都依赖于实时应用的特性。

根据系统功能需求,主任务划分如下,任务间总体上采用优先级抢占机制进行调度,各任务功能及优先级的划分如表2所示。PC/104优先接受来自飞机控制设备的命令字,然后执行负载控制任务,等待控制任务释放信号量后,程序就执行数据采集及发送任务,通讯监控任务对数据的接发进行实时监控,确保无信息的丢失,更重要的是,第一时间传递发控设备的控制命令,若启动重发机制之后仍然接受不到信息则会报错。而硬件初始化及自检测任务只是在主程序开始时调用,由于优先级的限制,只有等待再次软启动之后才会再次执行。

除了优先级的抢占外,主要任务间还通过设置信号量进行二次调度,确保任务的连续正确执行及资源的合理分配,优化程序结构。在主程序引导函数ProgStart( )中,建立了2个二进制信号量和1个互斥信号量:semCON,semSEND,currNodeSemId。semCON信号量用于数据接收任务和监控任务的信息传递,主要是数据的超时重发机制监控;semSEND信号量用于数据采集任务和数据发送任务的信息传递;currNodeSemId信号量用于数据采集监控任务中数据采集的完整性而设立的信号量,避免通讯任务抢占临界资源以及调用不合理而产生"死锁"现象。其中,2个二进制信号量创建时为空(SEM_EMPTY),处于不可用状态,高优先级任务执行semGive()释放后变为满(SEM_FULL),变为可用状态,供低优先级任务执行semTake()使用。互斥信号量currNodeSemId创建时,为了避免优先级倒置的情况以及为任务提供删除安全,联合使用了SEM_Q_PRIORITY、SEM_INVERSION_SAFE、SEM_DELETE_SAFE选项联合使用,使用按位或操作,程序代码如下:

currNodeSemId=semMCreate(SEM_Q_PRIORITY|SEM_INVERSION_SAFE|SEM_DELETE_SAFE)
程序最后执行ProgStop()结束主程序,删除创建的任务并释放信号量资源。因为程序中使用了互斥信号量,并启动了互斥信号量的任务删除保护功能,所以在删除任务之前,必须先成功占有互斥信号量。先删除任务,再删除信号量。

结束语
本文主要讲述了1553B总线测控系统的设计及其在VxWorks下的软件开发过程。实际中,建立了地面最小实验系统,经过联机调试,测控系统运行正常,系统具有很好的实时性和稳定性,达到了预期效果。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

据业内信息,近日ADM的一份内部报告显示,ADM正在计划降低其锐龙 7000 CPU的生产计划。现阶段全球市场PC的低迷和销量下滑,再加上AM5平台整体反响不佳等等一系列原因导致ADM采取这一行动计划。

关键字: PC ADM 锐龙 7000 CPU

上海2022年10月11日 /美通社/ -- 日前,国际独立第三方检测、检验和认证机构德国莱茵TUV大中华区(简称"TUV莱茵")为宁波坚锋新材料有限公司...

关键字: 新材料 PC 可持续发展 ISO

你平时除了工作还会用电脑吗?近日分析机构Canalys发布了2022年第三季度全球PC出货量报告,台式机和笔记本电脑在第三季度的总出货量同比下降18%至6940万台。其中,笔记本电脑出货量受影响最大,同比下降19%至54...

关键字: PC 台式机 惠普 联想

根据IDC全球个人计算设备季度追踪的初步结果,2022第三季度,全球PC发货量总计7420万台,传统PC市场继续下滑,需求降温和供应不平衡导致同比收缩15.0%。联想出货量1688万台,份额22.7%,比上年同期下降16...

关键字: 苹果 PC IDC 华硕

9月21日电,据巴伦金融周刊报道,全球个人电脑(PC)中央处理器(CPU)两大巨头英特尔与超微都坦承,当下PC市况比之前财报预期低潮的状况还更进一步恶化,超微更直言当前PC市场“一片混乱”,比原本财报预测的状况又恶化约1...

关键字: 英特尔 PC AMD

在吃完上一波居家办公、远程网课的红利之后,PC电脑再度遭遇至暗时刻。按照统计机构IDC的最新数据,预计今年PC出货量同比下滑12.8%,也就是从3.488亿台跌至3.053亿台,一年减少4350万台之多。

关键字: PC 电脑 销量

根据近日消费市场消息,今年的第二季度我国大陆地区PC(台式机、笔记本电脑和工作站)出货量1148.5万台,同比下降16%,其中台式机含台式工作站和笔记本电脑含移动工作站分别下降了26%和10%,同时,NAND Flash...

关键字: PC NAND Flash

8月23日消息,今年以来,由于PC市场需求下滑,导致OEM、ODM厂商的库存大幅上升,同时零售渠道的库存水位也于第二季度末攀升至新高,使得各OEM/ODM厂商的存货周转天数明显拉长,这也加剧了对于PC市场后续走向的疑虑。...

关键字: PC 联想 华硕

全球PC市场的加速下滑,拖累联想集团本期业绩。虽然告别了去年的高增速,但在手机、服务器、方案服务业务等“第二增长曲线”的支撑下,联想避免了像英特尔那样不得不拿出“灾难性”业绩的情况。

关键字: PC 联想 消费电子

摘要:基于DSP和CPLD设计了CAN一1553B网关,选择了1553B总线作为电机控制系统的主总线,其主要用于操作系统与子控制系统之间的通信。为了更好地完成各节点之间的通信,采用CAN总线作为子系统总线,构建基于CAN...

关键字: 电机控制网络 1553B总线 CPLD

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭