随着嵌入式系统和现场总线技术的快速发展,实现系统的自动化管理已成为各个行业改进管理、提高效率的一个主要手段。传统人工加油的方式由于受人的影响较大,不但加油量误差较大,而且容易造成少加、错加、加冒等人为差错,不能满足加油过程中实现对机体快速、安全的燃油补给。针对这些问题,需要提高飞机加油效率和管理效能,同时考虑加油系统的制造成本,适应民航业高效运营的要求,本文设计了基于3964R协议的多控制终端加油系统[1]。
1 硬件电路设计
硬件电路主要由5部分组成:LPC2294最小控制单元、流量信号输入电路、压力信号输入电路、电动阀控制信号输出电路和485通信接口电路。图 1为系统的整体框图。
1.1 LPC2294最小控制单元
本设计选用LPC2294微控制器作为CPU,是因为LPC2294内部集成2路UART接口,支持SPI通信,可配置的外部存储器接口最大有4个块,每块拥有最高16 MB空间和支持8/16 /32位数据宽度[2, 3]。考虑LPC2294内部的SRAM空间偏小,为了确保系统对堆栈和数据的存储,外部连接了一片16位总线1 MB的静态存储器IS61WV102416BLL。
1.2 外部信号输入、输出电路设计
外部信号有流量输入信号、压力输入信号和电动阀控制输出信号。
1.2.1 流量信号接收通道
流量传感器传输是脉冲信号,因此流量的统计就是统计脉冲的个数,将脉冲的个数进行数学运算得出流量。考虑到LPC2294芯片只有脉冲捕获功能,没有脉冲计数功能,所以需要拓展一个脉冲捕获单元。在电路设计中,使用单片机的计数器0统计脉冲,通过SPI总线与ARM进行通信。单片机型号选择宏晶科技的STC12C5410单片机,它内部集成了SPI外设接口、2个定时器/计数器、1个看门狗定时器,满足设计需求。外部流量信号输入经过由芯片74HC14组成的整形、滤波电路后,连接单片机的计数器0引脚。芯片74HC245有2个用途,一是进行电平转换;二是起到收发器的作用。流量信号接收通道框图如图 2所示。
1.2.2 压力信号接收通道
为了适应不同类型的压力传感器输出信号,设置了0~10 mA和4~20 mA这2种接收电路并以跳线形式进行选择。设计中采用误差千分之一电阻、22 μF极性电容和2N551三极管组成的电流转电压(I/U)电路,压力电流信号通过I/U电路,将相应的电流转换成电压。为了避免信号间相互干扰,保证外部设备和内部设备的安全,在压力信号进行AD采样前,连接一个放大增益为1的隔离放大器ISO124。AD芯片采用一款高速、低功耗、12位模数转换器AD7888,它有8个采样通道,转化速率高达125 ksps。AD7888的引脚2(REF IN)需要一个基准电压输入,选用芯片REF5050产生一个5 V的基准电压。压力信号接收通道框图如图 3所示。
1.2.3 电动阀控制信号接收通道
设计中选用12位串行DA转换器TLV5616芯片,通过LPC2294系统控制数模转换器输出1~5 V电压。数模转换器选用TLV5616,它是一款12位电压输出的4线可变串行接口的数模转换器,引脚6(REFIN)需要外接一个基准电压,选用芯片REF5025,产生一个2.5 V基准电压。电压信号经过ISO124隔离运放,最后通过由芯片XTR111组成的U/I电路输出4~20 mA电流给电动阀控制其开度。电动阀控制通道框图如图 4所示。
1.3 485接口电路设计
LPC2294有2个UART接口(UART0和UART1),每个UART接口的TXD和RXD引脚分别接一片MAX485收发器的DI和RO引脚[4, 5]。ARM的2个通用IO口引脚分别连接收发器的控制端口,一个输出高电平,作为发送;一个输出低电平,作为接收。构成一组支持全双工通信的485接口。
2 软件设计
在本系统的软件设计中,采用的嵌入式系统是μC/OS-II,它具有支持多任务调度,实时性高等优点[6]。485总线通信协议采用3964R协议,通过点到点的连接实现本地站点和通讯伙伴之间的数据传输[7, 8, 9]。
2.1 3964R协议基本控制字及通讯过程
3964R协议基本控制字见表 1所示。
序号 | 控制字符 | 数值 | 说明 |
1 | STX | 02H | 被传送文件的起始点 |
2 | DLE | 10H | 数据链路转换或肯定应答 |
3 | ETX | 03H | 被传送数据的结束点 |
4 | BCC | 本次发送用户数据及 DLE、ETX两位进行纵 向奇偶校验结果 | |
5 | NAK | 15H | 否定应答 |
3964R协议的通讯过程如图 5所示。
3964R协议接收函数rec_485_packet()和发送函数send_485_packet()的程序流程图如图 6所示。
发送方发送STX后切换至接收模式,若在100 ms范围之内收到DLE,则开始发送用户数据;反之若未收到DLE,则在接收到控制代码或100 ms到时,再次发送STX申请建立连接。若在申请建立连接时,发送方未收到接收方发回的DLE,而是收到接收方发送的STX,则由优先级较高的控制终端重新建立连接发送STX。
在用户数据发送结束后,发送方发送DLE、ETX、计算并发送BCC,完成后切换到接收方式,若接收到DLE,则结束本帧发送过程。若非DLE,则重新发送STX尝试重新建立连接,发送本帧数据。
在发送过程中,发送方连续发送数据字节间隔不应超过20 ms,否则由接收方发送NAK,强制发送方重新建立连接发送本帧数据。发送方或接收方等待对方回应时间应不超过100 ms,否则若发送方等待则直接重新发送STX建立连接;若接收方等待则发送NAK强制发送方重新建立连接,重新发送本帧全部数据。
为了避免接收方将正文中的字符10H误认为是报文结束标志,正文中如果有字符10H,在发送时将自动重发一次,接收方在接收到2个连续的10H时将会自动剔除一个[10]。
2.2 应用层报文协议
应用层通信报文结构见表 2所示。表中定义的协议内容主要指用户数据部分发送的内容,不包含控制字等。
组件包括加油系统终端(代码:01H)、操控面板(代码:02H)和手持终端(代码:03H)。序列号是指开机以来发送该型报文的累积次数。
2.3 主程序设计
控制终端的主要功能是数据的采集和数据帧的打包,进而完成终端与外部设备的通信。本终端使用嵌入式μC/OS-II作为操作系统,通过裁剪、移植使其能顺利运行于LPC2294控制器。另外,在系统中编写了6个任务函数,使其分工合作实现模块的各项功能,并通过μC/OS-II系统的任务调度管理机制来进行系统资源的分配。
系统首先建立了设备初始化任务Task0,该任务函数主要完成IO口方向和功能选择、串口初始化,在完成以上工作后,创建2个子任务,按优先级由高到低依次为TaskB、TaskC。这2个子任务的具体功能如下:
TaskB:主要功能为压力和流量信号的采集、计算,控制电动阀信号输出;对应用层报文的打包,根据TaskC中状态的标志位,发送相应的通信消息队列。
TaskC:主要功能为接收外部设备的报文,拆包解析,设置相应的状态标志位;接收TaskB的消息队列,发送相应的通信报文。
3 实验测试
为了便于直观地验证本系统通信过程,实验选用232/485转换器,将加油系统向操控面板和手持终端发送的通信报文通过上位机串口调试助手读出来。实验过程中,波特率选择19 200 bps,传输方式选择点对点。实验环境下,选择电流发生器产生4~20 mA的模拟压力信号,使用波形发生器产生频率1 kHz,振幅5 V的矩形脉冲,模拟流量信号。
图 7、8分别为加油系统向操控面板和手持终端发送的数据报文。系统上电后,等待操控面板或手持终端的“握手报文”,若收到任一设备报文,则认为该设备已开机且总线通讯正常,回复“握手回复报文”;若收到操控面板或手持终端的“自检报文”,则向操控面板或手持终端发送“自检结果报文”,并开始以1次/s的频率发送“心跳报文”;系统正常工作,以2次/s的频率发送“加油系统状态报文”。
图 7“自检结果报文”中,第9字节表示设备自检情况:Bit0置0表示电动阀正常,置1表示电动阀故障;Bit1置0表示操控面板正常,置1表示操控面板按键异常;Bit2置0表示手持终端正常,置1表示手持终端通讯异常;BIT3~ BIT7保留。
“加油系统状态报文”中,第9字节表示加油系统状态:00H表示待机,01H表示工作中。第10字节表示操作模式:00H为手持终端操作,01H为操控面板操作。11~13字节表示实时压力数值:实时压力数值=AD采样值/4 095×1 600,Pa。第14字节表示电动阀状态:00H为电动阀关闭,01H为电动阀开启,02H为电动阀故障。15~17字节表示实时流速数值:实时流速数值=单位时间脉冲个数/37×60(1 L暂定取37个脉冲),L/min。18~20字节表示累计加油量,L。
4 结束语 4 结束语
本文阐述了以ARM7系列LPC2294为核心的加油控制终端设计的实现过程,概述了本系统中压力信号和流量信号采集,以及电动阀控制信号输出电路。详细叙述了3964R通信协议的实现过程,以及报文结构。通过实验,实现加油控制系统与外部设备进行信息交互,证明了该系统设计方案的可行性。为使系统更加完善,下一步的工作:增加10 M/100 M以太网接口电路,这样可以实现与控制中心通信。
[1] | 鄢涛, 杜小丹, 刘永红, 等. 基于RS485的数据通信协议的设计与实现[J]. 电子设计工程, 2013, 21(17): 19-22. |
[2] | 周立功. ARM嵌入式系统基础教程[M]. 2版. 北京: 北京航空航天大学出版社, 2008: 443-453. |
[3] | 李莉. 基于ARM处理器和嵌入式实时操作系统的数据采集装置设计[D]. 太原: 太原理工大学, 2006: 33-60. |
[4] | 刘良勇, 侯友夫, 徐达, 等. 基于3964R协议的可靠串行通信的研究[J]. 自动化与仪器仪表, 2007 (4): 63-66. |
[5] | 卢嫚. 基于RS-485总线的温室多点监测系统设计与实现[D]. 西安: 西北农林科技大学, 2013: 30-32. |
[6] | 杨冠群. RS485总线在泵站监控系统中的应用研究[J]. 流体机械, 2014, 42(8): 56-59, 45. |
[7] | 吴丽萍, 戈志明. 嵌入式系统应用中实现RS485的方向切换[J]. 单片机与嵌入式系统应用, 2014(4): 13-16. |
[8] | 胡中功, 黄波, 江维. 基于RS485总线的PC与单片机多机通信系统设计[J]. 自动化与仪器仪表, 2012(1): 30-31, 35. |
[9] | 蒋永年, 冯平, 肖玮. 基于LPC2294和μC/OS-Ⅱ的储油罐区测控系统智能节点[J]. 自动化与仪器仪表, 2011(3): 107-110. |
[10] | 陈建忠. 基于μC/OS-Ⅱ的数控系统软件设计与实现[D]. 杭州: 杭州电子科技大学, 2013: 33-60. |