基于ARM的振动设备三维模拟系统设计∗
2019-05-07管慧明
管慧明 吴 陈
(江苏科技大学 镇江 212003)
1 引言
振动实验三维模拟系统对整个实验过程进行模拟,而且还能实时监控被振动设备的当前状态。现在的振动实验大多使用曲线来描述实验的振动过程,不够直观,而且需要工作人员进入噪声环境特大、空间狭小的环境中去查询设备状态,对于已经发生故障的设备,如未及时查询,往往导致振动实验继续的无意义性。对于包含多CAN节点的系统设备,实验者需要耗费大量时间去定位并记住故障模块并伴随着定位错误的风险。同时,由于现在软件的成熟性,二维的界面显示已经越来越不能满足人们对于审美观的要求[1]。因此,本文设计的模拟监控系统无疑具有很大的应用市场。
2 系统总体方案设计
该监控系统主要由显示终端和监控终端组成,监控系统的总体框架如图1所示。其中监控系统由STM32F103C8T6芯片、温度传感器、电压采集电路、信号采集电路、CAN物理层电路组成。监控系统针对不适合人现场工作的恶劣环境,实时采集被监控设备当前温度、工作电压、重要模拟信号,并以CAN口发送出去。显示终端以Cortex-A9处理器为核心[4],加载振动设备三维模型,根据ID号解析各个监控终端发来的实时数据,将实时数据在三维界面上体现[2]。
图1 系统总体框架图
3 硬件设计
3.1 显示终端硬件设计
显示终端为实现界面操作流畅、三维模型加载、渲染等功能,对主控制器,尤其是3D处理方面提出了较高要求,系统采用Freescale公司推出的I.MX6 Quad处理器,其内核运行频率高达1.2GHz,带有1MB L2缓存和64位DDR3或2通道、32位LPDDR2、4个着色器和两个2D图形引擎,将节能高效的处理能力与尖端的2D、3D图形,以及高清视频功能相结合,将多媒体性能提升到全新的水平。支持2个LVDS输出通道,兼容市场上绝大多数LVDS液晶屏,以便我们实现信息交互[3]。由于处理器内部没有CAN收发器,故需要外接TJA1050[14],将CAN控制器的逻辑电平转换为CAN总线的差分电平[15],在两条有差分电压的总线电缆上传输数据,如图2所示。
图2 TJA1050外围电路
3.2 监控终端硬件设计
监控终端采用意法半导体推出的STM32F3系列单片机为主控制器,搭载Cortex-M3内核,具有高性能、低成本、低功耗、外设丰富的特点。由于STM32自带的I2C模块具有卡死的风险,故本系统采用通用GPIO口来模拟I2C协议,通过I2C接口连接MLX90614温湿度传感器[5],可以获得当前设备的温度。通过电池备份电路可以使得外部供电故障的情况下也可以正常和监控系统通信。如图3所示。另外通过STM32自带的AD0、AD1转换,来获得当前设备的电压、模拟信号以确定当时设备是否正常。
图3 MLX90614外围电路及备用供电电路
4 软件设计
4.1 系统软件设计
该系统软件的特色之一就是可以跨平台运行。在PC平台上开发环境为qt creator2.8+qt4.8.5[7]。利用Qt的跨平台特性,经过不同平台的编译以后可以使得同一个程序在Linux、Windows、Android、IOS上运行。在显示终端移植嵌入式Linux系统与Qt应用程序开发框架,通过修改文件/etc/rc.d/rc.local脚本文件,可以使得系统启动后自动调用Qt程序,进入主界面,程序流程如图4所示。上电后,系统初始化环境变量,并且加载使用3d max生成的OBJ和MTL文件,还原出3D模型以便交互。系统工作在两种工作模式下面,分别为动画模式和查询模式,在动画模式下面可以真实地模拟出当前振动台的工作状态,比如当前振动方向、振动速度、冲击速度等[8]。在查询状态下,可以单击模块以拾取出当前需要查询的模块,从而可以进一步缩放、旋转当前模块,以便更好地观察当前被监控模块的状态。当观察结束后通过双击该模块可以恢复初始化状态,为进入动画模式做准备[9]。
图4 显示终端程序设计流程图
4.2 OBJ+MTL文件解析
OBJ模型文件和MTL材质文件是可读的文本文件,OBJ文件中存储了三维模型的顶点、法线、纹理和材质使用情况。MTL文件是材质库文件。存储了模型的材质、颜色、光照、纹理贴图、反射贴图。该设计中将三维模型的解析过程以类的方式实现,在构造函数中只需要传入OBJ和MTL路径名即可,方便易用。OBJ文件中常见关键字和描述见表1所示,MTL文件中常见关键字和描述见表2所示。
表1 OBJ文件关键字及描述
表2 MTL文件关键字及描述
在Material类中申请了Ka、Kd、Ks三个数组用来存放MTL文件中相关信息,同时在Point3类中定义了顶点信息,用来保存OBJ文件中顶点信息,在完成OBJ和MTL文件相关数据获取以后通过OpenGL相关函数glVertexPointer()、glNormalPointer()、glTexCoordPointe(r)、glDrawArrays()来获取的数组信息还原出来,重新构造出三维模型,以便交互。
4.3 振动过程模拟
振动台的振动过程中,分为X、Y、Z三个振动方向以检测被检测设备的在恶劣环境下是否可以正常工作。
以垂直X轴方向为例,在定时器中通过增减变量Golbal::x,来调整三维模型在世界坐标系中的位置,以实现模型的沿着Y轴上下振动。
5 系统功能测试
图5 测试结果
振动设备三维模拟系统在Windows7和Linux系统下进行了测试。测试根据实际生产制作过程中来完成,如OBJ模型的加载、振动台的运动、被监控模块的拾取、缩放、旋转等[10]。通过CAN网络通信,显示终端的CAN节点通过解析CAN报文可以读取当前拾取的模块的状态信息,如模块内部温度、关键模拟信号的有无、模块供电电压有无等。根据获取的实际信息对被拾取的模型进行相应的改变,将故障信息直观地体现出来。比如出现电压故障时模块对应电压的绿灯变为红灯、关键信号丢失时对应插头分离等。测试依次展示了振动台和振动设备、模块的拾取、电压故障、关键信号丢失和模块放大、模块旋转、模块缩小。测试结果如图5所示。
6 结语
该系统分为显示终端和监控终端两个部分。通过对各个节点数据的实时解析,使得显示终端能够实时获取当前被监控各个设备模块的状态,可直观地展示发生故障的通信节点。并且将异常数据存入本地数据库当中,以供研发人员获取历史故障信息,为以后研发设计以及生产提供借鉴。实际运行表明,这种监控系统具有使用方便、可靠性高、界面炫酷逼真的优点,对于远距离数据获取、恶劣的工作环境、被监控设备多而杂的情况具有很大的应用价值。