姜 柯 刘浩旭 李 维
(大连理工大学能源与动力学院,辽宁 大连 116024)
近年来,随着汽车发动机技术的进步,且相关部门对尾气排放限值越来越严格,推动着汽车发动机的开发进程。在开发过程中,发动机台架试验涉及多种复杂的试验设备,要求试验人员具有较高的知识水平和操作技能[1]。大部分发动机试验台架监控系统均采用C/S架构,将系统分为客户端和服务器端实现不同的功能。丁旭等[2]利用各种网络通信协议实现台架与系统之间的数据传输。王庆等[3]利用C#编程实现对发动机试验台架现场试验数据实时监控,对数据进行统一管理。韩二锋[4]以PLC控制器为核心,基于西门子触摸屏组态软件WinCC开发出一套柴油发动机性能监测系统,并对运行参数进行实时监测。与以上系统相比,B/S模式不用安装特定的客户端,仅需要利用浏览器就能够使用所有功能,便于系统后续的维护与更新,具有较高的效率和开放性。文章基于B/S模式设计出一套试验台架监控系统,通过该监控系统,可以对试验过程进行可视化监控,实时掌握台架试验状况,试验人员能够自动存储数据,有效地提高了台架的试验和运行效率,对发动机台架试验具有重要的意义。
在进行发动机台架试验时,台架会向外部发送XML信息,包含台架的各种运行参数。后端可以使用面向对象的Java编程语言,通过TCP/IP协议与台架建立连接,接收XML信息并解析出对应数据,然后通过操作关系型数据库的JDBC技术与MySQL数据库建立连接,将数据存入其中。经由轻量级Web服务器TomCat部署项目,可以使试验数据在网页上以数字、图表形式实时可视化显示。出现故障时可以通过页面按钮进行怠速、停机等操作,输入试验日期对台架历史试验数据进行条件查询。前端页面采 用HTML-JavaScript-CSS 的 网 页 开 发 技 术[5]、HTML构建网页结构、JavaScript控制网页行为、CSS控制网页表现,使用AJAX实现与后端程序的动态数据交互。系统总体流程如图1所示。
图1 系统总体流程
系统从软件架构上,采用MVC框架模式,将系统分为视图、控制器和模型三部分[6]。视图为系统中的表现层,即浏览器中的HTML页面,用于处理用户请求和展示相关内容;控制器是系统中的控制层,由Servlet类实现,负责在视图和模型之间交互信息,接收表现层的请求响应,将数据转交至相应的模型进行显示;模型是系统中的业务逻辑层和数据持久层,包括Service类和JDBCImpl类,负责所有数据的查询调取和各种业务功能的实现,将系统处理结果提交给控制层,控制层提交给表现层显示。
发动机试验台架监控系统采用模块化思想[7],设计划分出不同的功能模块,分为用户管理模块、数据采集模块、页面显示模块及数据查询模块。
2.2.1 用户管理模块
根据不同的登录用户,分为普通人员和试验人员两种不同的权限,试验人员在普通权限外,可以对台架运行参数进行范围设置,点击网页按钮执行怠速、停机操作。对网页配置过滤器进行登录验证,若无用户登录信息,则直接跳转登录页面。
2.2.2 数据采集模块
通过网络通信协议与试验台架保持连接,解决数据黏包和断线重连问题,持续接收并解析出试验数据,一方面送往前端页面显示,另一方面通过数据库连接池与数据库建立连接存取数据。
2.2.3 页面显示模块
包括试验台架集中显示页面和单台显示页面,使数据在页面上可视化显示,更直观形象,便于工作人员实时掌握台架具体运行状况。通过页面对运行参数进行设置,超出范围后,系统会发出警报声并发出电子邮件提醒。
2.2.4 数据查询模块
可以输入台架编号和试验日期对数据库中历史试验数据进行条件查询,能够查询和修改关于试验台架的具体信息。搜索出历史试验数据,可以生成图表和导出Excel文件。
数据库承担着试验台架监控系统中存储和管理数据的工作,对数据文件具有较快的读写速度。在Web数据库的选择上,MySQL数据库体积小、执行效率高、平台兼容性好且开源免费,适用于中小型网站的开发,采用该数据库能够满足系统需求。数据库中主要实体有用户实体、台架实体和试验数据实体,根据系统中数据关系与特点,详细分析各实体之间联系,可以建立实体-联系模型的实体关系图(E-R图)。数据库E-R图如图2所示。
图2 数据库E-R图
矩形表示数据库中的实体,椭圆形表示实体的固有属性,菱形表示各实体间的联系。每一个实体都对应数据库中一个数据表,其中台架信息表和试验数据表是一对多的关系,为保持数据的一致性和完整性,需要添加外键约束。
用户可以通过网页登录框输入用户名和密码,页面接收到登录信息后,向控制器发送HTTP请求,请求中携带包含用户名和密码的表单。后端程序接收请求后,调用业务逻辑层方法,根据用户名在数据库用户信息表中的条件查询该用户。若不存在该用户或存在用户但密码不正确,弹出登录失败提示框;若成功则自动跳转至集中监控页面,同时运用服务端会话跟踪技术,将用户信息(用户编号、用户名、密码、权限状态)储存在Session对象中,可以对后续操作的权限验证和访问其他页面进行登录验证。
监控页面包括集中监控页面和单台监控页面。集中监控页面为每个台架划分一个小区域,页面上包含全部台架进行集中监控。每个小区域实时显示转速、扭矩、功率等重要运行参数,点击相应区域可以跳转到单台显示页面。
后端程序通过TCP/IP通信协议与台架远程连接,连接过程中,为实现与台架的断线重连功能,引入了心跳包机制。系统每隔10 s发送给台架一个固定信息,如果无回应,则尝试重新连接。数据传输过程中,台架连续发送的数据包会在接收时黏成一团,后一次数据头连着前一次数据尾。为解决数据黏包问题,需要在程序里建立缓冲区,接收到台架的XML数据后立刻解析。为读取XML数据中的运行参数,采用了DOM4J解析技术,先获得数据所在根标签对象,再根据里面标签名得到试验数据。试验数据经由控制器传递到前端网页,通过Vue框架,将数据与表现层模型绑定,表现层模型随数据改变而改变,达到页面中显示内容实时更新的效果。
在单台监控页面中,将运行参数划分为不同种类,用数字形式实时显示,每秒定时调用setInterval函数更新最新的试验数据。中间区域引入ECharts开源可视化库绘制图表,以曲线图形式展示部分参数随时间的变化趋势,以表盘中指针跳动形式更新转速信息。为保证试验台架的安全性,页面上还存在怠速、停机按钮。出现故障时点击按钮,在登录账号操作权限验证通过后,即可经由TCP/IP连接,向台架发送包含怠速或停机命令的XML信息,台架收到对应信息,就会执行相应的怠速、停机操作。数据库按钮可以跳转至历史数据查询页面,实现调取历史试验数据的相关需求。点击设置按钮后可以进入参数设置页面,对试验台架参数进行相应的范围设置。提交设置后,监控页面可以将每次获得的运行参数与设置的参数进行对比,若超出范围,则对应数据显示样式变为红色,并基于SMTP协议(简单邮件传输协议),将数据超限邮件发送给特定的SMTP服务器,进而转发给提前设定的电子邮箱地址进行提醒。单台监控页面如图3所示。
图3 单台监控页面
系统解析出试验数据后,会多线程操作,运用数据库连接池,将数据存入对应台架的试验数据表内。需要查询历史试验数据,可以在数据查询页面对应的输入框,输入想要查询的台架编号和试验日期,点击查询按钮后,条件参数提交给后端业务逻辑层。后端计算开始索引后,调用数据持久层方法对数据进行条件和分页查询,得到对应信息后将数据打包返还页面显示。试验信息复选框勾选后,点击按钮生成可保存的折线趋势图;或将数据传至后端程序,生成带表头格式的Excel文件,并在网页上自动下载。旁边的台架信息按钮,点击可查询所有试验台架的具体信息。点击查询出的台架信息列表中存在修改按钮,会弹出表单,执行对台架信息的修改操作。数据查询页面的所有数据可以异步动态交互,点击按钮后无须刷新网页,即可实现数据的即时更新。数据查询页面如图4所示。
图4 数据查询页面
在Windows系统下使用IntelliJ IDEA作为开发工具,后端使用Java语言和MySQL数据库,前端采用HTML-JavaScript-CSS的网页开发技术,基于B/S模式设计并开发出发动机试验台架监控系统,服务端部署后仅需Web浏览器即可访问监控系统网页,对运行中的发动机试验台架实时监测和操控。整个系统相比C/S模式,操作简单、扩展性好、信息共享度高且易于维护,实现了对发动机试验台架运行状态的实时监控和数据的即时存储,发现故障时能够进行相应操作,提高了台架试验效率和安全性。