焦岗 韩阳 侯海军
西安远方航空技术发展有限公司,陕西 西安 710089)
摘要:本文采用多块BL2100控制器,以上下位机的架构形式,辅以按钮、断路器、继电器、接触器、航空连接器等元器件,实现对加装的测量设备供电及控制,识别加挂的各型吊舱及其供电与控制。采用Dynamic C语言进行编程,采用RS422、RS232等通信方式,解决了逻辑控制问题,完成了各项控制要求。
关键词:控制 BL2100 Dynamic C
引言
为实现某飞机加挂武器并对武器系统进行试验测量要求,需要在飞机上加装一套测量系统,引出飞机内部相关参数,在机体内部、机身蒙皮等处选择合适位置加装测量记录设备及收发天线,并敷设信号、供电、控制线路,并对外挂吊舱进行改装。
为了实现对加装的测量设备及加挂的各型吊舱进行识别、供电、控制等工作,需要研制操作控制设备。
1 系统分析
某型飞机加装的测量系统框图如图1。
.png)
由图1所示,整个测量系统较为复杂,本文只针对其中的操作控制设备进行研究。操作控制设备包括操作控制盒、数控继电器盒两部分。操作控制设备所要完成的功能包含以下内容:加温、GPS、遥测、记录、图控共5路28VDC供电;3、5、6、7、9挂点115VAC供电;3、5、6、7、9挂点共25种相互独立的控制模式,以及挂点识别功能。操作控制设备的功能框图如图2所示。
.png)
在选择电气元件时需要考虑振动、环境温度等要求,选型时尽量采用军品件,或者进行温度、振动筛选。
2电气设计
2.1操作控制盒的设计
由图3中可以看出,导光板上的11个按钮直接接入BL2100板卡,默认低有效,导光板上的16个指示灯也直接由BL2100板卡的OUT口直接驱动,数控继电器盒的电源供电端接在开关SA后端,这样操作控制盒与数控继电器盒的工作就是同步的。操作控制盒的电路设计到此已结束,从图上看出,所设计的电路已满足操作控制盒的功能及接口要求,剩下的控制逻辑需要由软件实现。
.png)
为了保证后期安装过程中能更好将壳体以及元器件进行装配,故对操作控制盒进行了简单的建模。后期实践证明,对于小型控制盒内部前期的建模对于后期的安装有切实有效的指导性。
.png)
2.2数控继电器盒的设计
数控继电器盒采用了两块BL2100板卡,两块卡有主副之分,分别称为主控制器和辅助控制器。主控制器负责与操作控制盒进行RS422半双工通信同时主控制器与辅助控制器进行RS232通信。其中5路28VDC供电采用板卡加直流继电器进行控制。5路115VAC供电采用板卡加中间继电器加交流接触器来进行控制。剩下的25种控制模式采用板卡加直流继电器进行控制,与28VDC供电的区别在于直流继电器常开点上接的是地信号。
.png)
3软件设计
操作控制盒、数控继电器盒软件包括:操作控制盒控制器软件、数控继电器盒主控制器软件、数控继电器盒辅助控制器软件。单个软件流程图如图6所示。
.png)
这三部分软件组合在一起,共同完成控制系统的整体功能。整体软件流程图如图7所示。
.png)
操作控制设备RS422半双工的发送速率为:19200,N,8,1。操作控制盒与数控继电器盒数据包的区别在于2字节与3字节刚好相反,0X01表示其为操作控制盒,0X02表示其为数控继电器盒。
3.1操作控制盒控制器软件
操作控制盒控制器软件主要包含3个函数,分别为ReadSensor()、SerialProcess()、ControlProcess()。当操作控制盒上电运行后,这三个函数组成一个等待的循环状态,即操作控制盒控制器将系统时间按运行量分给这三个函数。
ReadSensor()函数实时监控导光板上的按键信息,一旦哪个按键接通超过800ms时,ReadSensor()函数就将这个按键信息记录在本地数组中。SerialProcess()函数将从串口接收到的数据存储在本地数组中,同时将编码后的发送数组中的数据进行发送。ControlProcess()函数是处理数据的中枢,对于加温、GPS、遥测、记录、图控5个按钮的信息,一旦被记录,该函数即认为此信息确认成功,并将其放入发送数组中。对串口接收到的吊舱信号进行核对后,将导光板上的吊舱指示灯点亮。对于导光板上加电按钮被记录后,该函数首先判断哪个挂点已被识别,若无挂点被识别,则该函数认为该按钮信息无效,反之则记录相应挂点信息,并确认给该挂点上电,并将加电按钮指示灯点亮,此时加高压、控制1、控制2、控制3、控制4等按钮识别后方才有效。最后该函数将所有信息统计并放入发送函数中。
3.2数控继电器盒主控制器软件
数控继电器盒主控制器软件同样包含3个主要函数,分别为ReadSensor()、SerialProcess()、ControlProcess()。当数控继电器盒上电运行后,这三个函数组成一个等待的循环状态,即数控继电器盒主控制器将系统时间按运行量分给这三个函数。
ReadSensor()函数实时监测挂点信息,一旦哪个挂点识别,该函数会将其记录下来并放入本地数组。SerialProcess()函数则将从串口接收到的数据存储在本地数组中,同时将编码后的发送数组中的数据进行发送。但此函数中既有与操作控制盒进行交互,同时与数控继电器盒辅控制器也有交互。ControlProcess()函数则将本地数组中的数据进行解读,数据中需要主控制器执行的命令,主控制器会进行相应操作,若数据中指示需要辅控制器执行的操作,则其会将该数据放入发往辅助控制器的数组中。该函数的核心在于它对接收到的数据进行常规校验的基础上,利用其为挂点检测控制器的便利对本控制系统的控制逻辑进行二次校验(首次校验为操作控制盒控制器完成),使整个控制更加可靠,严谨。
3.3数控继电器盒辅助控制器软件
数控继电器盒辅助控制器软件包含2个主要函数,分别为SerialProcess()、ControlProcess()。当数控继电器盒上电运行后,这两个函数组成一个等待的循环状态,即数控继电器盒辅控制器将系统时间按运行量分给这两个函数。
SerialProcess()函数将从串口接收到的数据存储在本地数组中,同时将编码后的发送数组中的数据进行发送。ControlProcess()函数则将本地数组中的数据进行解读并执行相应的操作,并将自身执行的操作放入发送数组中(即通知数控继电器盒主控制器以及操作控制盒控制器,已完成指定的操作)。
4软件编程中的问题及解决
4.1串口函数的处理
在编写嵌入式软件时,对于串口函数的处理参照以前项目的类似写法进行处理,结果发现在操作控制盒或者数控继电器盒单独与电脑进行调试时,一切逻辑都正常,但是当把操作控制盒与数控继电器盒用调试电缆进行联调时,无论是操作控制盒还是数控继电器盒本身都无法接收到对方的数据,后来在RS422总线上增加总线监控器发现,在传统函数的处理方法下,总线上没有任何数据。后来查阅相关资料发现此处需要建立主从关系,利用这种思想对串口函数进行了相应处理,最终使得两者均能正常工作。
处理方法如下:以操作控制盒控制器为主,数控继电器盒主控板为辅。上电运行初始,使两块控制器均为等待状态,此时操作控制盒控制器,发送读取命令,等待规定时间后,转入接收状态等待指定时间,随后循环此过程。而数控继电器盒主控制器则首先转入接收状态,对接收缓冲区进行读取,当读取到指定数据时,转入发送状态,等待指定时间后,重复上述过程。
4.2瞬时触点型按钮的编程思考
由于操作控制盒的面板按钮不是机械自锁的为瞬时触点型,这要求在编程时需要考虑2个因素,当前这一次按键是否有效和这一次按键所代表的意义。
对于按键是否有效用延时来解决,一旦按键接通时间超过规定时间则认为这次按键有效;对于按键所代表的意义,则通过一个变量去记录,这变量只有0和1分别记录两种状态,每接收到一次按键有效命令后,更替一次数值。
4.3按键互锁的问题
导光板上的按钮:通电、加高压、控制1、控制2、控制3、控制4等按钮之间存在逻辑上的互锁关系。
对操作控制盒上按钮互锁,软件编写方法是这样的对于其中一个按键作为研究对象,明确这按键有效需要那些条件,依次往上追溯,直到将这个条件链归纳,依次对每个按键条件进行归纳,最后统一编写。
5结束语
本文采用Dynamic C语言,BL2100板卡,上下位机设计思路,解决了机载多路多模式电路供电控制,简化了复杂的电路,并减少了布线排故的工作量。同时在设计过程中考虑了振动、高低温等环境适应性的要求。
为后续机载非标设备供电及控制的研制提供了一种可靠的解决方案。
参考文献
[1] 谭浩强著,C程序设计,清华大学出版社,1999.12
[2] 朱站立 刘天时著,数据结构,西安交通大学出版社,2000.2
[3] 吴德伟著,航空无线电导航系统,电子工业出版社,2010.2