完整教程:Labview项目01:标准可配置序列测试框架

news/2025/11/7 21:29:43/文章来源:https://www.cnblogs.com/yangykaifa/p/19200926

项目目标:

1)使用Labview基础开发环境构建一个标准可配置测试框架;

2)可以根据自己的需求编写测试序列;

3)单步测试功能可自主添加编写;

4)界面可以实现基本配置,修改测试序列功能;

5)有权限管理机制;

根据上面的需求,编写了下面的测试框架,测试序列较为简单,有延时、预定值输出、生成随机值输出等功能,并能对最终的结果有整体判断和结果输出,执行结果如下:

运行环境:

Labview 2020(32位)

1.1 界面设计

界面设计的思维导图如下:

1.1.1 主界面

1个表格控件——显示每个测试序列结果;

1个布尔控件——显示OK和NG;

1个字符串显示控件——呈现运行状态;

1个资料簇——用于计数;

1个清除按钮——用于清除计数;

1.1.2 调试界面

2个多列列表框——1个显示加载的序列、1个显示调试的序列;

10个按钮——用于加载序列、选择单个序列、选择全部序列、添加序列、删除选定序列等作用;

1.1.3 设置界面

1个路径控件——加载测试序列路径;

1.1.4 登录界面

1个下拉列表——显示账户信息;

1个字符串输入框——用于输入密码;

2个按钮——登录和登出;

1个字符串显示控制——显示登录状态;

1.2 程序设计

程序设计流程图:

1.2.1 整体程序

用于PLC或者其他IO模块输入触发信号用。中间的子VI用于整个测试程序的功能实现方法。就是如下图所示,这是Main程序的程序框图,右边是将所有的控件引用集合到一个簇中,用于代码的控件的执行。右上是事件结构,用于控件的触发事件。右下

1.2.2 初始化应用

1)QueueInit.vi

创建队列,以及控件初始化

2)MainEvent.vi

MainEvent中有两个队列:Main和Steps,Main队列关键用于处理控件的事件触发。Steps队列用于处理测试执行流程。

3)MenuButtonChange.vi

改vi用于处理主界面切换特性,初始化的时候切换到首页。

4)Read ini.vi

该子vi用于读取密码和测试序列文件路径。

5)MainInit.vi

该子vi用于控件的初始化。

6)InitSteps.vi

用于测试结果控件初始化。

1.2.3 调试测试序列工具

1)LoadSteps

从序列文件中读取到ListSteps控件中。

2)Select

将ListSteps中的选中行添加到DebugSeps列表框中。

3)SelectAll

将ListSteps列表框中所有行添加到DebugSeps列表框中。

4)AddLine

添加一行测试序列。

5)RemoveLine

移除掉选定的那一行。

6)UpSteps

引用DebugStepsUp.vi。

DebugStepsUp.vi内容,能力是向上移动一行。

7)DownSteps

引用DebugStepsDown.vi。

DebugStepsDown.vi内容,效果是向下移动一行。

8)Delete

删除一行。

9)Empty

清空DebugSteps列表框中数据。

10)Debug

DebugStart.vi中内容,触发自动测试特性。具体自动测试流程允许参考后续的1.2.4节

1.2.4 自动测试程序

自动测试流程图如下:

1)ReadInput

有一个上上升沿就会触发Start事件。就是在下面GetSts分支中添加读外部IO的程序,若

2)Start分支

在Steps队列中的Start分支调用StepsStart.vi

StepsStart.vi中如果停止的话,恢复状态。

StepsStart.vi中读取测试序列,如果是非0行,赋测试状态,执行Auto分支。

3)Auto分支

在Steps队列中的Auto分支调用AutoSteps.vi

调用CallVI.vi就是AutoSteps.vi判断是否是最后一步,若是不

CallVI.vi用于解析指令,若是指令是A_**.vi就执行A分支中的程序。

如果指令是N_**.vi就执行N分支中的程序。

1.3 使用流程

启用流程图如下,分为四步:

1.3.1 编写测试vi

在项目文件中的StepVI文件夹下新建测试vi,格式为A_**.vi和N_**.vi。

没有输出和判断的序列,N_**.vi有测试结果和判断的序列。就是其中,A_**.vi

1)范例A_Delay.vi

根据输入第一个参数分解出延时时间,进行延时。

2)范例N_Random.vi

根据输入第一参数,产生0~参数的随机数,然后根据上下限进行判断。

1.3.2 编写测试序列

1)在界面上设置测试序列记录路径

2)打开CSV文件

添加测试序列,其中

StepName:根据自己需求编写,对程序执行没有影响;

CallVI:这个是调用的子vi,需要和自己编写的子vi名称相同;

NotShowOnUI:是否在主界面上表明结果,1为不表现;

LowerLimit:N_**.vi的判断下限;

UpperLimit:N_**.vi的判断上限;

UNITS:单位;

Param1~10:输入参数,在测试子vi中使用,预设最多10个参数;

设置达成后,保存。

1.3.3 调试测试序列

在Debug界面可以调试测试序列,添加、删除、修改等功能。修改完成后可以使用Debug按钮测试修改结果。

双击想要修改的序列,即可弹出修改框,然后进行修改。

1.4 运行

调试做完后,点击Start按钮,即可在主界面看到按照测试序列一步一向下执行,最终会出现测试结果。

通过该计划是一个用于测试的通用项目,可以作为参考学习项目也能够作为正真的实用项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/959192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20251107

每次写类的时候都会觉得发明面向对象的人真是个天才。 今天晚上又稍微写了点,增加了碰撞伤害,现在玩家碰到怪物会回扣怪物.at血量并进入一秒的无敌状态,并且自身颜色变为白色,也是第一次体会到异步的方便之处吧。更…

从零开始实现简易版Netty(十) MyNetty 通用编解码器解决TCP黏包/拆包问题

从零开始实现简易版Netty(十) MyNetty 通用编解码器解决TCP黏包/拆包问题从零开始实现简易版Netty(十) MyNetty 通用编解码器解决TCP黏包/拆包问题 1. TCP黏包拆包问题介绍 在上一篇博客中,lab9版本的MyNetty已经实现…

[Python刷题记录]-除自身以外数组的乘积-普通数组-中等

[Python刷题记录]-除自身以外数组的乘积-普通数组-中等链接:238. 除自身以外数组的乘积 - 力扣(LeetCode) 题目限制不能使用除法,所以开了两个数组listl和listr,listl用来存储i之前的所有数字之乘积,listr用来存…

Transformer Decoder 中序列掩码(Sequence Mask / Look-ahead Mask) - 详解

Transformer Decoder 中序列掩码(Sequence Mask / Look-ahead Mask) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fam…

P9785 [ROIR 2020] 对常规的斗争 (Day1) 题解

题目传送门 思路 我们不难发现,当区间中没有重复的点很好求,但如果中间部分产生重复的点,他们所产生的贡献会减少。 正着推不好推,那就反着来。 我们可以考虑计算当区间长度确定时,每个区间内每个元素是否出现过。…

实用指南:超越CNN和Transformer!Mamba结合多模态统领图像任务!

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Docker镜像建立【MSSQL2022】

sudo docker stop cont_mssql2022 sudo docker rm cont_mssql2022sudo mkdir -p ~/zapas/dbdata/mssql sudo chmod 777 ~/zapas/dbdata/mssqlcd ~/zapas/dbdata/mssql mkdir testdb sudo chmod 777 ~/zapas/dbdata/mss…

灰度发布

目录背景和价值参考资料 背景和价值 在 Spring Cloud 架构中,灰度发布(又称金丝雀发布)的核心目标是将新版本服务仅对部分用户 / 流量开放,验证稳定性后再全量上线,以降低发布风险。实现需结合服务注册发现、负载…

【刷题笔记】AT 经典 90 题

T2 爆搜 注意,string 只能与 string 运算,无法和 char 运算;访问 string 某一位时则是 char T5 数位 DP。 转化题意:若 \(x\) 是 \(B\) 的倍数,则 \(x\mod B = 0\)。 先设计 DP 状态,设 \(f_{i,j}\) 表示看到第 …

CF1758E Tick, Tock

首先考虑初始状态合法的充要条件,每两行对应位置差相等。 发现每个连通块有一些代表元,用带权并查集做即可。

深入解析:SciPy傅里叶变换与信号处理教程:数学原理与Python实现

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

CentOS Stream 9编译安装Nginx 1.28 - Leone

安装Nginx基本依赖:yum -y install gcc pcre2-devel zlib-devel openssl-devel cd /mnt/wgetwget https://nginx.org/download/nginx-1.28.0.tar.gztar -xvf nginx-1.28.0.tar.gz && cd nginx-1.28.0./config…

SQL核心语言详解:DQL、DML、DDL、DCL从入门到实践! - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Ubuntu安装JDK与Maven和IntelliJ IDEA - 详解

Ubuntu安装JDK与Maven和IntelliJ IDEA - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

JavaWeb03-Vue

JavaWeb03-VueVue 什么是VueVue是一款用于构建用户界面的渐进式的JavaScript框架。(http://cn.vuejs.org/)构建用户界面渐进式框架:就是一套完整的项目解决方案,用于快速构建项目优点:大大提升前端项目的开发效率…

【完结】Weblogic中间件应用服务器

【完结】Weblogic中间件应用服务器 学习地址:……/s/1FP9WOZ9FXcNRJTkaEApaVA 提取码:o2rh 在当今瞬息万变的数字商业世界中,企业应用的稳定性、安全性与高可用性已成为支撑业务运转的生命线。在这条无形的战线上,…

调整包含特定文本的单元格所在的行高

Sub 调整包含特定文本的单元格所在的行高()For i = 1 To Range("a" & 1048576).End(xlUp).RowIf Range("a" & i).Value Like "健康管理意见建议*" ThenRange("a" &am…

javabean和pojo的区别

JavaBean 是一种JAVA语言写成的可重用组件。 它的方法命名,构造及行为必须符合特定的约定:这个类必须有一个公共的缺省构造函数。 这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。 这个类应是可序…

一次十分折腾的系统迁移:BCD损坏(0xc000000f), 0xc0000255, 0xc000000e以及解决办法

起因:原装盘内存不够(matebook13原装256G,我用了五六年了,80G传奇c盘使我的所有朋友难绷),想着自己换一块512G的 两块都是WD的盘,兼容没问题 盲目信任自己的技术力和Qwen3的能力,于是开始快乐的装盘过程~ 期间…