2. 机械科学研究总院, 北京 100044
2. China Academy of Machinery Science and Technology, Beijing 100044, China
换挡毂是汽车动力总成双离合变速器的核心零件, 也是亟待实现国产化高质量批量生产的关键件, 如图1所示. 其具有空间曲线换挡沟槽, 换挡毂沟槽线轮廓度是决定换挡性能的关键参数指标. 此外, 线轮廓度是几何公差中应用最广泛而又难以测量和评定的项目. 主要采用最小区域法对线轮廓度误差值进行评定, 即被测量线轮廓度要素的提取要素相对于理想线轮廓度要素的最大距离为最小. 主要采用有循环迭代法与分割逼近法[1]、遗传算法[2, 3]、粒子群搜索[4, 5]、Fréchet距离[6]等多种算法实现.
在换挡毂自动化检测仪器系统项目的实际开发部署过程中, 使用虚拟仪器LabView平台软件实现仪器控制与数据采集系统的设计. 由于LabView在算法开发方面能力较弱, 直接开发线轮廓度评价算法难度大, 不利于工程技术人员快速实现系统部署. 因此, 如何快速开发算法并搭建软件是工程实践中所面临的一个重要问题. 为了应对上述问题, 采用联合编程开发的方式, 集成LabView、Matlab、.NET多种软件技术, 优势互补, 从而加速开发进程.
LabView是美国NI公司推出的创新软件产品, 提供了一种图形化编程方法, 可直观显示应用的各个方面, 包括硬件配置、测量数据和调试. 这种可视化方法可让用户轻松集成测量硬件, 直观地表示复杂的逻辑, 以及设计自定义工程用户界面. LabView以其数据采集和仪器控制两大独特的优势, 在测控、故障诊断、生产过程控制、自动化等领域得到了较为普遍的应用[7], 但是LabView在处理大型数据, 复杂模型分析的时候就存在有自身的缺陷, 并且算法开发效率低[8].
Matlab是MathWorks推出的世界领先的科学计算语言和工具, 将适合迭代分析和设计过程的桌面环境与直接表达矩阵和数组运算的编程语言相结合, 语法结构简单、数学计算高效. Matlab包含有丰富并且经过专业开发、严格测试的函数基础和工具箱. 其在数据分析、深度学习、信号处理、控制系统等领域发挥着重要作用[9-11]. 但其GUI涉及功能薄弱, 代码运行效率低[12].
.NET Framework是Microsoft开发的完全面向对象的软件框架, 主要由框架类库FCL (Framework Class Library)和公共语言运行时CLR (Common Language Runtime)两个重要组件构成. .NET Framework提供了一个新的面向对象编程接口技术, 为众多高级语言的集成提供了一种可能, 极大地提高了软件开发的能力.
LabView与Matlab的联合编程将充分发挥两种软件独特的优势, 提高开发效率[13, 14]. 本文通过将Matlab所开发的Fréchet距离线轮廓度算法经.NET技术编译成dll程序集, 并在LabView所开发的线轮廓平台中进行调用, 最终完成线轮廓度评价软件的开发. 借助各软件的优势, 更加高效快速地实现了线轮廓度评价的工程应用目标, 并在所承担项目中得到了验证应用.
1 联合编程方法线轮廓度评价软件是涉及多种传感器于一体的测量分析软件. LabView具有强大硬件接口能力, 负责与外围设备的对接, 实现对伺服系统的运动控制、数据采集系统的信息采集以及搭建人机交互界面的目的. Matlab主要用于线轮廓度评价算法开发和测试, 编译成.NET程序集. 在LabView所设计的主体软件结构中调用, 实现集成, 软件结构如图2所示. 经过快速原型模型的测试与验证, 进而完成线轮廓度评价任务.
采用Matlab、LabView、.NET联合编程的方式, 将优势取长补短地融合集成, 极大地提高了编程效率, 并使得软件兼具有仪器控制、数据采集、数据分析、人机交互等特点. 具体来说即利用LabView强大的仪器控制与界面开发能力加快软件主体架构设计; 利用数学编程软件Matlab强大的函数库, 减少编程代码量; 两种软件通过.NET接口进行参数与指令传递, 使高级语言的集成成为可能, 在保证算法可靠性的情况下, 缩短了软件开发的周期, 降低了故障概率.
2 软件结构线轮廓度评价软件以LabView为主开发软件进行人机界面设计以及系统的集成. 状态机模型是图形化语言程序设计中主要的软件结构, 通过对结构进行拓展和修改, 再嵌入系统测试的相关算法, 可以快速完成自动化系统测试, 缩短开发时间, 提高工作效率.
对于线轮廓度评价软件的开发, 考虑到软件的功能实现与维护, 主要采用了2种状态机结构. 单线程采用JKI状态机结构, 2个VI+while+case+事件结构+移位寄存器+数据簇, 如图3所示. 多线程采用生产者/消费者设计模式, while+条件结构+队列, 如图4所示.
3 算法联合开发过程
采用快速原型模型[15]作为联合编程算法开发模型, 根据线轮廓度的评价要求与相关算法的可行性进行需求分析, 构建线轮廓度评价算法原型并进行原型评估, 原型Matlab编程, LabView调用完成原型测试5个主要阶段.
3.1 Matlab线轮廓度评价算法开发在线轮廓度的评定中需要解决两个问题: 一是测量轮廓与理论轮廓的最佳对齐; 二是测量点与理论轮廓的最短距离. 轮廓要素可以看作是一组点集, 对于点集的距离常用Hausdorff距离、Fréchet距离. 但是由于Hausdorff距离没有考虑点的顺序, 局限性较大. 因此选用Fréchet距离[6]作为线轮廓度评价方法. Fréchet距离在地图匹配[16], 生物信息学[17], 相似性度量[18]具有广泛应用. 在计算轮廓度时, 采用离散Fréchet距离对轮廓度误差进行度量, 两轮廓线Fréchet距离如图5所示.
线轮廓度的评价算法以Fréchet距离为基础, 利用SIMENS NX从三维模型获取关键点XY坐标信息, 形成关键点型线; 由于采用探针接触式轮廓采集, 需进行探针半径补偿, 对关键点型线偏移, 形成关键点偏移型线; 由线轮廓度公差要求, 形成上下偏差线, 即理论边界区域, 得到满足公差要求的理论边界区域, 如图6所示: 计算整条轮廓线所有采样点与理论偏移型线的Fréchet距离, 最终得出线轮廓度.
使用Matlab完成评价方法的编程工作, 编写主要函数, 其评价流程及代码如图7所示.
3.2 .NET程序集编译与数据接口线轮廓度评价主要函数的编写完成后即可进行编译工作. .NET程序集的编译主要使用Matlab的Library Compiler工具箱完成.
在Matlab打开Library Compiler. 在工具栏TYPE选项中选择.NET Assembly, 在EXPORTED FUNCTIONS选项中加载所要编译的5个重要函数, 在Library Name栏中输人名称并选填其他内容, 也可修改类库名称等信息. 在保存路径for_redistribution_files_only文件下的Profile.dll文件为在LabView中的调用的.NET程序集.
尽管生成的.NET程序集可以在未安装Matlab的计算机上应用, 但是对于.NET程序集中的类仍然需要Matlab基础函数的支持, 因此在计算机上需要安装Matlab Runtime, Matlab Runtime是一个独立的共享库, 可以避免安装庞大的完整版Matlab应用程序, 降低计算机资源的浪费.
此外, 在Matlab中使用的数据格式为Matlab特有的MWArray类型, 这种类型在LabView中无法直接使用, 需要通过MWArray.dll文件进行数据格式的转化.
MWArray类充当了LabView与Matlab (Runtime)之间数据传递的桥梁. 其类层次结构提供了使用Matlab Runtime创建和访问Matlab数据类型的接口. 所有的类都派生自MWArray类, 每个派生类都映射到一个Matlab数据类型. 数据转换类层次结构主要包括MWNumericarArray、MWLogicalArray、MWCharArray、MWStructArray和MWCellArray. 每个类都有属性和方法, 可用于查询类的各种属性, 如维度大小、元素大小和字段名等. 通过MWArray的类属性接口, LabView可以将Matlab计算的数据从内存中解析显示, 直观地判断结论的正确性, 类层次结构使用方法如图8所示.
3.3 LabView调用.NET程序集
在LabView中使用.NET对象进行原型测试, 需要使用.NET CLR 4.0. 使用CLR 4.0 LabView可以加载.NET CLR 4.0或较早版本的.NET程序集, 并且可以生成包含.NET函数的独立共享库、应用程序、打包项目库与.NET程序集. 调用接口如图9所示.
由Matlab开发的线轮廓度评价算法函数均有多个输入和多个输出, 以solve_key_point为例, solve_key_point函数有2个输入, 8个输出.
[curve_out_1, curve_out_2, curve_out_3, curve_out_4, curve_out_5, curve_out_6, curve_out_7, curve_out_8]=solve_key_point(path, file_name);
关键点参数存储路径与型号两个输入参数经MWCharArray类构造器节点进行转换, 传递至solve_key_point调用节点, numArgsOut设置输出参数数量, solve_key_point函数计算结果可以通过调用子VI的方式进行二维数据解析, 其调用VI如图10所示. 在实际的计算应用过程中, 过渡数据不建议进行解析, 可以提高程序运算执行效率.
将线轮廓度联合编程子VI嵌入到主程序中完成线轮廓度的评价, 联合编程子VI如图11所示. 子VI采用平铺式顺序结构设计, 顺序调用型线分类、曲线偏移、理论边界区域计算、线轮廓度评价等函数, 根据实时采样点坐标信息, 计算理论轮廓与测量轮廓Fréchet距离, 最终得出线轮廓度值.
4 软件应用实例
线轮廓度评价软件主要由3部分组成, 分别是运动控制、数据采集、数据分析. 以 LabView 2019为软件开发工具, 调用线轮廓度评价算法.NET程序集, 在Windows 环境下使用. 运动控制与数据采集实现整个测量系统的信息输入和输出, 以及多传感器的实时数据采集, 控制界面前面板与数据采集程序框图如图12与图13所示. 数据分析部分利用线轮廓度评价算法完成对测量数据的处理分析, 得到换挡毂换挡沟槽线轮廓度值. 并在前面板中显示出边界区域, 理论轮廓, 采集轮廓, 清晰直观地判断出换挡毂工件轮廓加工的合格性, 并得出评价结果, 如图14所示. 目前, 线轮廓度评价软件已在项目示范应用现场投入应用, 软件运行良好.
5 结论
本文采用联合编程技术方式完成了换挡毂换挡沟槽轮廓的线轮廓度评价软件的开发工作. 其核心部分就是通过LabView搭建主体软件, 并利用Matlab编写线轮廓度评价算法由LabView进行调用, 完成线轮廓度评价. 同时, 通过软件验证, 证明了该联合编程方式的有效性和实际应用的可行性. Matlab和LabView都是主流的工程应用软件, 两者结合将会突破软件自身的局限性, 加速系统的开发进程, 更加高效快速的解决工程应用难题.
[1] |
戴能云, 廖平, 王建录, 等. 基于MATLAB的平面线轮廓度误差评定. 计算机测量与控制, 2010, 18(7): 1590-1592. |
[2] |
郭慧, 马永有, 潘家祯. 基于遗传算法的复杂平面曲线轮廓度误差评定. 华东理工大学学报(自然科学版), 2007, 33(6): 888-892. DOI:10.3969/j.issn.1006-3080.2007.06.032 |
[3] |
王俊亭, 刘国平, 金伟, 等. 基于遗传算法圆渐开线涡旋齿位置度、线轮廓度的测量. 机械设计与研究, 2013, 29(1): 29-30, 34. DOI:10.3969/j.issn.1006-2343.2013.01.008 |
[4] |
郎爱蕾, 何改云, 宋占杰. 基于STL模型的自由曲面轮廓度误差评定. 机械设计与制造, 2015(6): 13-16, 20. |
[5] |
何帅, 陈富民, 杨雅棠, 等. 基于点云数据的自由曲面加工误差评定. 西安交通大学学报, 2019, 53(10): 135-142. |
[6] |
Wang ZC, Fang L, Ti D. Evaluation method of line profile of shift hub based on discrete Fréchet distance. 2020 Chinese Automation Congress (CAC). Shanghai: IEEE, 2020. 4148–4152.
|
[7] |
龙华伟, 伍俊, 顾永刚, 等. LabVIEW数据采集与仪器控制. 北京: 清华大学出版社, 2016.
|
[8] |
袁培铎. 基于Labview与Matlab混合编程的应用研究. 机械制造与自动化, 2007, 36(6): 129-131, 153. DOI:10.3969/j.issn.1671-5276.2007.06.050 |
[9] |
魏维, 祁超, 朱文亮, 等. 光电伺服系统控制程序快速开发方法研究. 兵工自动化, 2016, 35(3): 48-53. DOI:10.7690/bgzdh.2016.03.012 |
[10] |
张陈力子, 祝雯生, 余雄庆. 民机概念设计阶段性能分析程序快速开发方法. 民用飞机设计与研究, 2016(1): 28-32. DOI:10.3969/j.issn.1674-9804.2016.01.008 |
[11] |
黄雨可, 徐军, 虞江航. 基于RCP的嵌入式快速开发及半实物仿真技术. 电子技术应用, 2019, 45(6): 120-124, 129. |
[12] |
陈柳松, 杨利, 张宇, 等. 基于. NET程序集的C#与Matlab混合编程技术及应用. 控制与信息技术, 2018(2): 44-46, 64. |
[13] |
Ren ZX, Han H, Cui XY, et al. Application of PSO-LSSVM and hybrid programming to fault diagnosis of refrigeration systems. Science and Technology for the Built Environment, 2020, 27(5): 592-607. |
[14] |
Buts K, Dewan L, Prasad MPR. Modeling and implementation of wind-battery storage hybrid power system in LabVIEW environment. 2020 First IEEE International Conference on Measurement, Instrumentation, Control and Automation (ICMICA). Kurukshetra: IEEE, 2020. 1–6.
|
[15] |
Tukino, Masruroh S, Herdiana D. Applying the prototype model into the electronic reporting system for the elementary school student base on android. Buana Information Technology and Computer Sciences (BIT and CS), 2021, 2(1): 17-21. DOI:10.36805/bit-cs.v2i1.1241 |
[16] |
Xie D, Li FF, Phillips JM. Distributed trajectory similarity search. Proceedings of the VLDB Endowment, 2017, 10(11): 1478-1489. DOI:10.14778/3137628.3137655 |
[17] |
Wylie T, Zhu BH. Protein chain pair simplification under the discrete fréchet distance. IEEE/ACM Transactions on Computational Biology and Bioinformatics, 2013, 10(6): 1372-1383. DOI:10.1109/TCBB.2013.17 |
[18] |
Alt H. The computational geometry of comparing shapes. In: Albers S, Alt H, Näher S, eds. Efficient Algorithms. Berlin: Springer, 2009. 235–248.
|