基于静态链接库的1553B总线通讯编程方法
2018-08-07付禹马晓凯
付禹 马晓凯
摘 要:机载设备中,1553B总线因其冗余度高,响应速度快的优势而被广泛应用。进行编程时,通过使用链接库,可在不了解详细构造的环境下,仅通过调用顶层函数便可实现对不同厂家接口模块的编程。本文从1553B总线的构造出发,通过比较静态链接库和动态链接库的区别,给出了一种通过调用静态链接库与1553B总线接口模块通讯的编程方法。
关键词:静态链接库 1553B总线 通讯编程
中图分类号:TP316 文献标识码:A 文章编号:1672-3791(2018)02(a)-0012-02
Abstract: 1553B bus is widely used in airborne equipment because of it's high redundancy and fast response.When using the 1553b interface module for software programming,by using the static link library to achieve different business interface modules,we do not have to know the detailed structure,we can directly call the top-level function to use the excuse module.this paper presents the 1553b bus structure,then make a compare of the static link library and the dynamic link library,at the last presents a method of 1553b programming based on static link library.
Key Words: Static link library; 1553b bus; Communication programming
1553B总线起初是美国军方为机载设备制定的一种标准数据信息传输协议。由于1553B总线具有冗余度高,传输速度快,传输数据量大的优势,迅速被不同国家广泛应用于各个领域。开发商可根据不同的用途及环境对接口模块进行专业定制,以满足用户需求。本文详细介绍了1553B总线的组成和特点,并对在软件编程中使用动态链接库和静态链接库进行了比较,最后给出了一种通过调用静态链接库与1553B总线接口模块通讯的编程方法。
1 1553B总线的组成
1553B总线的工作频率为1Mb/s,工作方式为半双工,具有双冗余结构。1553B总线由3个部分组成,分别为总线控制器(BC)、远程终端(RT)、总线监视器(BM)。
(1)总线控制器BC。BC作为1553B总线的控制终端,具有建立和启动数据传输的功能。它是1553B总线的司令部,能够向子设备RT发送控制命令。通过给链接到总线上的子设备分配不同的RT子地址,只需使用一个BC,便可实现对所有子设备的控制。同时在1553B总线的标准中只规定了送到总线上的数据格式,对BC的工作方式没有做出具体规定,这给使用1553B总线进行设备控制带来了很大的自由度。使用者只需应用标准的数据格式,即可自主设计RT的个数以及整个系统的链接方法。1553B更大的优势在于,板卡能够在BC模式和RT模式间进行转换,这就在更大程度上扩展了系统结构的设计方法。
(2)远程终端RT。RT在1553B总线起到接收总线控制数据的作用,它只能接收BC发送的数据并进行应答,无法主动向总线传送数据,是总线中接收命令的结构。如今,RT的使用分为两种情况:嵌入式和非嵌入式。现在很多RT已经嵌入子设备,并作为子设备的一部分参与总线数据接收。除数据接收外,RT还具有缓存有用的数据、将数据传送给子设备进行分析处理、检测传输错误以及确认数据有效的功能。由于1553B总线双冗余结构的存在,RT需要同时处理两条总线发送的数据和命令。
(3)总线监视器BM。总线监视器BM的作用是监视和记录总线上传输的命令和数据,它受BC控制,不参与任何数据传输的过程。BM有两种工作模式:一种是字监视模式,它监听总线上所有的消息字;另一种是选择监视模式,只对指定的RT地址进行监视。
2 使用静态链接库和动态链接库在编译上的差异
在对接口模块进行编程的过程中,需要根据接口模块开发商提供的软件接口文件,达到使用不同的接口模块的目的。软件接口文件,就是库文件,库文件分两种,即静态链接库和动态链接库。静态链接是在链接阶段,将源文件中使用的库文件与通过汇编生成的目标文件和并后生成的可执行文件,而这种链接方式的好处在于,方便程序的移植,因为产生的可执行文件和库文件再无关系,所以,它可以直接应用到任何环境。它的缺点在于,产生的文件内存过大,同时也因为产生的可执行文件和库文件毫无关系,在需要对库文件进行更改升级时,需要对静态链接库进行重新编译,很不方便。而动态链接库的产生就完全规避了这些缺点,它将函数的可执行代码置于另一个DLL文件中,多个程序可以同时访问存在内存中的同一DLL的内容,产生的文件内存很小。同时,在需要库文件进行更改升级时,只需要更改DLL文件中的内容,无需对源程序进行重新编译。而它的缺点在于,程序对DLL依赖性过大,当DLL被更改或者删除时,程序无法正常运行。同时,由于DLL文件的特点,它的可移植性較差。
3 一种使用静态链接库对1553B通讯接口模块进行通讯编程的方法
本文讲述的编程方法建立在WINDOWS7操作系统平台上,使用XE7编程软件和C++语言编写完成。首先,在源程序中加入1553B模块开发商提供的头文件和库文件。例如:在源文件中添加include"mbi.h"的同时,将提供的mbi.lib库文件通过XE7软件中的Project->Add to Project方式添加到源文件中。其次,使用提供的软件接口函数查找1553b模块的驱动是否安装成功。当成功检测到安装的接口模块后,需要定义1553b总线表格式以及1553B模块使用模式。例如:
unsigned bus[2][8],//1553B总线表定义
INCOM rcom[30]; //输入通信表设置
OUTCOM tcom[30]; //输出通信表设置
unsigned short rcomlen[2]; //输入通信表长度
unsigned short tcomlen[2]; //输出通信表长度
init(&rcom;[0],&tcom;[0],0);//初始化1553B总线,并设置1553B模块的工作方式。
最后,使用开发商提供的1553B模块的读写函数启动总线表,进行总线上的数据传输。
4 结语
本文通过对1553B的总线结构进行研究,并对软件设计过程中使用静态链接库和动态链接库在编译上的差异进行分析,给出了一种利用静态链接库与1553B接口模块通讯的编程方法,经过一段时间的运行调试,此种方法可以运用在大多数与1553B接口模块进行通讯的编程中。
参考文献
[1] 吴云忠.基于pci接口的1553b总线控制软件设计[J].现代电子技术,2013,36(24):47-49.
[2] 刘士全,隽扬,蔡洁明,等.1553B总线应用发展研究[J].电子与封装,2013,13(12):12-15.
[3] 张荣锋,朱坚,夏文元,等.基于pci总线的1553b总线接口电路的设计与实现[J].红外,2008,29(1):41-45.
[4] DDC Data Device Corporation.MIL-STD-1553A/B Designer's Guide[Z].
[5] DDC MIL-STD-1553B Designer's Guide[Z].
[6] 罗至强.航空电子综合化系统[M].北京:北京航空航天大学出版社,1990.