基于LabVIEW的叉车动力单元总成测试系统设计
2021-07-15许敏影
许敏影
(杭州水表有限公司,杭州 310000)
0 引言
LabVIEW作为常见的图形化编程语言,在测试仪器、数据采集、工业环境下的系统控制和仿真领域的应用颇为广泛。开发流程基本分为需求收集、设计、编码、测试、发布与维护等。本文所开发了测试系统软件——动力单元总成测试系统,采用虚拟仪器LabVIEW 13.0设计开发,基于界面操作事件结构与队列状态机架构模式设计了动力单元泵源与电动机相关的性能测试[1]。该软件系统在功能设计上可实现传统工业PLC在数据采集、流程控制、数据存储等方面的需求;图形化编程语言,在界面设计、逻辑控制等方面优势明显。
1 测试项目介绍
叉车系列吨位动力单元作为供油装置可集成控制回路、回油过滤回路,采用齿轮泵为动力源,可集成阀块、电动机、油箱等,通过阀块管路系统与外部液压油缸、控制阀组等液压元件相连,组成闭式回路控制系统。动力单元可集成多元化功能平台,模块化设计方便采用标准元件。
动力单元性能测试采用装机模拟实测方式,测试项目主要围绕齿轮泵电动机组、换向阀等开展以下测试项目包括负载特性试验、比例特性试验、耐久特性试验、油路机能试验等4个项目。
图1 动力单元外型与原理图
2 LabVIEW项目管理设计
上位机软件设计基于LabVIEW 13.0虚拟仪器平台开发,为了便于管理和配置设置,采用测试功能模块化并基于Project工程管理程序[2]。
首先,关键参数设置放置在配置文件,供主程序Main调用。这样可在日后关键参数变更时直接修改配置程序,而不必修改主程序,配置文件需放置在指定文件夹并加密。其次,完整程序必须有相应的错误处理机制。针对不同类别的错误,例如测试设备出错、偶然因素中断测试、产品测试参数不合格等,做好有效错误和无效错误的分类判断。最后,设计者需要将功能相似的模块编写为子VI形式,方便程序后期的可扩展性等。
图2为本项目的Project列表,其中,NI USB-6000系列采集卡作为数据采集硬件,软件采用与之配合对应的驱动NI-DAQmx[3],DAQmx函数配有VI函数和开发工具,设计者可利用面板现有的封装函数编写底层驱动程序,并结合DAQ采集硬件,便可实现多线程实时数据采集工作。
图2 Project-项目树列表
图3中AI/AO数据采集调用了DAQmx任务形式,采集流程按照配置采集端口、开始数据采集、读取/写入数据循环及停止数据采集构成。程序的数据流传递采用了For循环结合顺序结构,可实现按照配置文件要求执行完所有程序要求读取或写入的所有系统模拟信号。其中AO任务主要实现了对液压系统比例电磁铁控制命令信号的输出与控制[4]。
图3 AI/AO数据采集与控制程序图
3 主要功能模块开发
3.1 主界面设计
该测试系统的被测对象主要是适用于不同吨位叉车的动力单元。主界面设置如图4所示,主要包含了仪表显示区、主要控制参数输入窗口区、人机交互操作区等几部分。首栏菜单由文件、测试项目、表格数据及帮助组成,其中测试项目下拉菜单包含了负载特性试验、比例特性试验、耐久特性试验、油路机能试验。其他菜单功能便于人机交互与试验数据设置与保存。
图4 操作主界面示图
主界面由Main程序控制,底层程序设计如图5所示,数据流采用基于事件的生产者/消费者设计模式[5]。其中生产者循环基于用户界面处理模式,用户事件主要包含[0]前面板关闭、[1]菜单选择(用户)、[2]“打印报表”:值改变、[3]“保存”:值改变、[4]“测试结果、型号”:值改变、[5]“查询型号”:值改变、[6]“查询隐藏”:鼠标进入、[7]“查询型号”:鼠标离开等等。消费者循环基于通知器读取数据,执行相应的指令任务,例如初始化、保存、耐久特性试验等,并开始在本循环内按照程序设定执行或调用子VI设定执行完相应的测试命令。以子VI2为例,在生产者循环内基于用户事件[1]菜单选择,执行“负载特性试验”;VI2为负载特性试验的独立设计模块,以子VI形式按照顺序结构调用执行;此时的消费者循环读取到通知器内“负载数据”的相关执行命令,并在消费者循环内调取执行对于负载数据如电动机的电流、电压,系统压力、流量;负载上升、下降速度等相关测试参数的采集与显示[6]。
图5 Main底层程序设计框图及部分菜单
3.2 负载特性试验功能模块设计
负载特性试验基于生产者/消费者(事件)模式[7],操作运行界面-程序框图设计如图6所示。启动后,需要设置实验负载参数,系统与采集实际负载进行对比,并给出相关提示。然后按照测试顺序,负载上升-停止-负载下降执行。其中“复位”是为确认测试系统初始位置设置,“比例阀”用来调节上升下降速率,以测试不同工况下的负载特性参数。
图6 负载特性操作运行部分界面
该底层程序如图7所示,采用常用的生产者/消费者(事件)设计模式进行编辑。生产者程序设计首先由“负载试验-初始化”开始,循环内基于用户界面事件模式执行相应测试流程的参数设置或试验进程,当出现误操作时以弹窗形式提示后续正确操作流程[8]。消费者循环内基于通知器读取数据,并执行相关指令任务。各指令任务程序内嵌套层叠顺序结构,可有序执行“开始测试-传感器数据读取-测试数据数据写入显示”。
图7 负载特性试验底层程序设计框图
3.3 耐久特性试验功能模块设计
耐久特性试验模块为自动测试模式,主要针对动力单元装机后按照预定负载,设置边界条件如电动机温度上限、油温,叉车在最低位与最高位的停止时长等,进行耐久测试。如图8所示,主界面以曲线形式实时显示系统压力、流量、电流、电动机温度、油温。
图8 耐久特性试验主界面
底层程序框图如图9所示,采用队列消息处理嵌套用户界面事件处理器模式,并通过移位寄存器实现状态跳转。最外层队列消息处理模式按照“初始化、读取测试序列、执行测试序列、退出”测试流程运行。前置的嵌套用户界面事件处理器用于耐久测试总体参数设置,并将设置结果传递至顺序结构内,以支持完整测试流程的进行。该程序框架内采用了属性节点、全局变量的典型设置方式,以实现程序的简化。
图9 样品照片
图9 耐久特性试验底层程序设计框图
4 结论
本文基于图形化编程方式,对叉车动力单元总成测试系统软件进行了开发,得出以下结论:
1)程序设计按照Project项目管理方式进行,主要包括主界面、DAQ数据采集、报表、文件等类别子VI的程序设计,更有益于程序的后续扩展和可读性。
2)依据测试内容进行模块化程序设计,主要包含负载特性试验、比例特性试验、耐久特性试验、油路机能试验等4个项目。模块化架构设计可实现更复杂的逻辑控制。
3)生产者/消费者模式在人机互动测试系统中更有利于响应用户界面操作与数据流传递。
4)上位机采用图形化编程较其他传统编程语言工具更便捷。