《武汉工程大学学报》  2015年01期 25-29   出版日期:2015-01-31   ISSN:1674-2869   CN:42-1779/TQ
重装空投数据采集分析系统设计


0 引 言  由于空降兵空降时携带装备有限,在长期作战中补给弹药都会显现出不足和弊端,因此重装空投系统就变得越来越不可或缺.在空投过程中,需要对空投物件的姿态,重力加速度等进行实时测量[1],通过对数据进行进一步的采集和分析,可以对空投的质量好坏提供一个进一步的参考.本文在原有的空投数据采集分析设备基础之上,提出的一种较新设计方式,其优势在于单一系统即实现了重力加速度,三轴角加速度以及应变力数据的采集,并通过上位机进行数据处理得到过载、姿态及压力.避免了上一代数据采集系统采集单一传感量的劣势.  1 测量仪硬件设计  在硬件设计测量仪时,需要通过主控芯片相应的外部通讯接口外接微型传感器. 由于测量仪系统需要采集三类不同类型的传感量数据且采集时其数据实时性要求较高,主控芯片作为测量仪设计的核心部分,因此在主控芯片选型时,需要选用频率较快、中断反应迅速、内存容量较大、外设较为丰富的主控芯片[2].另外,外围储存Flash芯片的容量及储存的稳定性,微传感器的转换速度和转换精度,都将作为测量仪硬件设计时必须要考虑的部分,测量仪具体硬件设计框图如图1所示.  Cortex-M3 IP核是由ARM公司开发的实时高性能32位哈佛结构处理器IP核,支持Thumb、Thumb2 ISA(指令集).具备三级流水线及NVIC中断向量表,保证了系统运行的实时性.其处理器IP核通过挂接Advanced High Performance Bus高速总线和Advanced Peripheral Bus外设总线与大量低速外部设备接口进行连接[3],保证了充足的外设接口.  采用亚诺德公司的AD22285作为重力加速度传感器.为了保证AD22285重力加速度计采集数据的稳定性和精确度,因此使用3个独立AD转换器[4]进行转换,分别用于与AD22285的三轴通道进行连接.按照一定的格式写入相应的数据帧中.  图1 系统结构框图  Fig.1 The diagram of system architecture  陀螺仪部分采用意法公司最新推出的L3G4200. 该陀螺仪测量精度较高,使用范围广,本设计采用SPI总线接口传输方式,由于在SPI总线工作模式下,最大的采样速率可以达到10 MHz.  应力形变部分采用海芯HX711.由于芯片内部已集成了放大电路、调理电路及数模转换器,采用此方案的优势在于将能够有效的减少了设备的开发周期,同时也提高了整机的性能和可靠性.  数据储存介质则是采用意法公司的M25P64串行总线存储器.该种储存器具有8 MByte的储存空间,其最大读写速率可以达到50 MHz,每个扇区都具有超过10万次的擦写次数,保证了数据存储的可靠性.  2 测量仪软件设计  2.1 系统初始化过程  CPU在初始化各个外设及其外围总线的之前,需要对自身进行初始化.由于需要使用高级语言进行编程,首先CPU必须要完成栈、堆的初始化,栈用以存放过程中定义的一部分变量,是不可或缺的;堆则是动态分配内存所需要的使用的数据区[5].栈初始化完毕后,系统会开始初始化锁相环,完成相关倍频工作后,PC指针会跳转到main函数地址处执行程序.  在main函数中处理器会初始化相应的外设:串口、定时器、RTC时钟、ADC、SPI接口会依次完成初始化,在接口完成初始化后,系统会对外围芯片进行初始化,并使外围芯片开始工作.外围芯片初始化完成之后,会等待外部提供触发.一旦提供外部触发,系统便会开始进行数据采集,数据的依照事先约定的协议组成数据帧进行写入及保存.  2.2 测量仪状态机设计  采用有限状态机(FSM)的方式对系统控制部分进行设计,定义5个不同的状态,系统会根据触发按键的的触发状态用以决定跳转至系统的哪一个状态.与此同时,定义相应的数据帧格式用以保存采集数据,其数据帧格式大小共256字节,其中头4个字节用于保存实时RTC.后252个字节分为7组,每组为36个字节,用于保存空投数据中采集的相应数据.  为了保证数据采集的实时性和有效性,设置两个采集数据交换缓冲区用作乒乓操作.保证当处理器向SPIFlash中写数据的同时,另外一个数据缓冲区也在采集数据.保证了数据的实时性和有效性,避免了数据采集不及时发生的遗漏数据问题.当系统采集到数据后,会将数据首先放入一个256字节的片内的内存交换区内,如果交换区写满,则会将交换区中数据写入到SPIFlash中.在一个交换区写满后,系统的数据会存储在另外一个片内交换区中,这种方式极大的保证了系统采集数据的实时性和有效性.  枚举变量IDLE_STATE、FLASH_STATE及FLASHFULL代表当前采集设备工作状态, IDLE_STATE为交换区当前状态,FLASH_STATE则为当前外部存储器的状态.FLASHFULL代表当页数据是否已写满,三者之间的状态的不同构成不同的状态:  1. 当IDLE_STATE=IDLE,FLASH_STATE=WRITE_IDLE,按键未触发代表系统处于未激活状态,此时PC端可以通过RS485/RS232串行接口完成与系统的通信和数据的处理.  2. 当IDLE_STATE=IDLE,FLASH_STATE=WRITE_IDLE,按键触发代表系统处于激活状态,数据缓冲区处于空状态,系统准备跳转至下一个状态.此时上位机无法再与采集系统进行通信,此时系统处于数据采集状态,系统还没有进入一次定时器中断,仅仅只是准备开始采集数据.  3. 当IDLE_STATE=BUSY,FLASH_STATE=WRITE_IDLE, FLASHFULL=0时该数据缓冲区正处于未写满状态.系统设置定时器中断,分时对重力加速度ADC转换采集值、应变片ADC转换采集值、角加速度转换值进行采集.当缓冲区处于写满状态,FLASHFULL会置为1用以辨明Flash页面已写满,此次写入帧已经写满,并跳转到下一个状态.  4. 当IDLE_STATE=IDLE, FLASH_STATE=WRITE_BUSY代表数据缓冲区已经写满,准备将数据写入SPIFlash中,在此期间由于该数据缓冲区已经写满.系统将会切换缓冲区,准备跳转至下一个状态.  5. 当IDLE_STATE=BUSY, FLASH_STATE=WRITE_BUSY控制器正在向内部储存器写入数据.当256个字节写入完成之后,会将状态设置为IDLE_STATE = IDLE,FLASH_STATE = WRITE_IDLE,以便开始下一次的循环写入过程.与此同时,另外一块缓冲区也处于工作状态,保证了在写入SPIFlash的同时,采集数据处于正常工作状态而无需等待.  6. 当按键处于抖动状态时,系统会短暂进入一个暂态,并跳转回原先状态.执行跳转前程序.  图2 状态机转换图  Fig.2 The transition diagram of state machine  2.3 测量仪的命令定义  数据在与上位机通信传输的同时,数据采集设备也会遵循一定的传输约定.上位机会首先发送特定的数据命令包.当采集端设备接收到数据包后,会对数据包进行数据解析,判断数据包的类型,进而采集端会进行相关的反馈.上位机请求数据包的数据头部为0x55、0xAA两个字节作为开始,数据尾部以0xFF、0x0D、0x0A作为结束,第三个字节作为相关的命令编号,第4~7个字节的数据内容根据相关的命令编号(第3个字节内容)而确定.收集到的数据会放在一个相应的Buffer中,会通知数据解析程序可以对请求数据包进行解析. 具体命令及数据内容细节如下所示:  0xAA:第三个字节命令编号为0xAA时,第4~7个字节无特定意义,默认发送0xFFFFFFFF采集系统接收该条指令后,会擦除SPIFlash中数据,用以记录下一次实验.在擦除Flash之前,会将位于CPU内部的Flash地址为0X0800F000的单个页清除掉,该页的前两个字节被系统定义用以记录已使用的SPIFlash的页面数.  0xAB:第三个字节命令编号为0xAB时,第4~7个字节无特定意义,默认发送0xFFFFFFFF采集系统接收该条指令后,会读取位于CPU内部的Flash地址为0X0800F000前两个字节,该页面的前两个字节被系统定义用以记录已使用的SPIFlash的页面数.得到CPU外部的SPIFlash中页面的使用数,开始向PC端发送数据包.直到发送完毕为止.  0XAC:第三个字节命令编号为0xAC时,首先CPU会读取SPIFlash中的四字节产品编号,将产品编号写到第4~7个字节中,用以测试SPIFlash.  0XAD:第三个字节命令编号为0xAD时,代表修改当前RTC时间,在二位机首先会弹出一个修改时间的窗口,将数据输入后,会将当前时间组成一个4字节的RTC秒数.将该四个字节秒数写入第4~7个字节中,即可达到修改时间的目的.数据命令包及其传输数据结构分析如图3和图4所示.  图3 数据命令包分析  Fig.3 Analysis of data command package  图4 传输数据包结构分析  Fig.4 Analysis of tranmission data package  2.4 数据包的设计及具体细节分析  数据包由256个字节组成,具体可分为两个部分.第一部分由4字节RTC实时时钟组成,第二部分由7个36字节的数据段组成.每个数据段具有相同的格式,用以采集不同时间段的数据.36字节的数据帧含四个不同的时间片,系统需要采集时间片1~4的重力加速度,其中时间片1~3采集6字节重力过载.时间片4采集18字节数据,包括6字节重力过载、6字节姿态以及6字节应力形变.  3 上位机处理端设计思想  所测量到上位机数据糅合算法采用捷联惯导系统进行处理,该重装空投测量系统通过测量载体在惯性参考系的重力加速度和角加速度,利用测量到的数据以时间为参考系进行积分,将积分后的数据变换为导航坐标系,即可得到在导航坐标系中的速度、偏航角和位置信息.通过采点绘图将用户所需要的信息完整的表现于用户端上.  起始状态的姿态可以由三轴加速度计来进行提供,公式如下:   P(z) T=0 =cos-1■(1)   P(z) T=0 =cos-1■(2)   P(z) T=0 =cos-1■(3)  其中P(x)、P(y)、P(z)分别为载物在静止时相对于x、y、z的姿态角度,由于开机系统处于静止状态,系统可以根据重力加速度计算出静止时的角度,用以进行载物下降过程中的姿态积分.  采集系统将采集到的重力加速度及三轴角加速度采集上传至PC端后,PC会对采集到的数据进行数据糅合,广义公式为:   P(i)T=t= P(i)T=0+■w(t)dt(i=x、y、z) (4)  离散处理方式为   P(j)T=t= P(j)T=0+(j=x、y、z) (5)  系数将会不断的进行积分,将会产生误差,产生的误差将由系统加速度来进行纠正.  4 测试结果  在测试实验中,采用飞机空投物件的方式进行测试实验.在空投的过程中测量仪会记录下空投物件的在空投过程中的所产生的数据.在完成相应空投测试后,会将测量仪与上位机通讯接口对接,用于进行数据通讯、数据分析.具体分析及处理软件如图5和图6所示.  图5 实际测量曲线图  Fig.5 Curve of survey  图6 处理软件  Fig.6 Processing software  在实际测量过程中,黑线代表X轴过载(上方部分),红线代表Y轴过载(中间部分),黄线代表Z过载(底部部分),由图5所示在在下降过程中,测量仪分别会对X轴,Y轴,Z轴的的测量数据进行储存.可以看到在时间轴1.25 s时产生了一个较为明显的波动.通过对测量过程中图表和最大最小值的分析,可以得到物件在下落过程中的过载、姿态、压力等细节,同时,系统在设计时,与某兵工厂之前所开发的上一代空投产品相比较,得到的结果较为满意,设备性能参数的对比如表1所示.  表1 设备性能参数  Table.1 The performance of device parameters  5 结 语  首先,由于更换了全新的高速率主控MCU,因此新的系统设计采集数据速度相较于原有设计具有较大提升;其次,系统采用3个独立12-Bit 数模转换器对数据进行相应采集,用以代替原有系统分时复用采集方式,提高了数模转换器数据采集的可靠性,三个独立数模转换器同时工作,也加快了系统数据的采集速度.最后,原有的系统设计仅仅只能对三轴重力过载进行相应采集分析,新的系统设计引入了三轴应变及姿态分析,提高了系统的适应性和竞争力.因此,通过上表比较,可以得出本系统相较于原先系统在性能上具有更好的宁投性能和稳定性的结论.  致 谢  感谢国家自然科学基金委员会及湖北省自然科学基金资金资助.