电动工具数据采集测试Labview软件设计

电动工具数据采集测试程序界面

User stories:

1.用户需要数据采集(AI),实时区分并显示3次自动工位测试电流波形和3次手动工位测试电流波形。
2.用户需3次人工操作工具完成打钉动作。
3.用户需要点击界面开始测试按钮后,人工启动桌面按钮(DI)开始测试。
4.用户需要参数设置按钮,用于设置电流值报警上下限并及时更新至UI。
5.用户需要2种测试顺序,第一种产线测试,循环并依次完成6次自动和手动测试;第二种为实验测试,由用户切换自动或手动工位进行测试。
6.用户需要单独控制气缸动作(DO)界面。
7.用户需要在测试Fail后,界面报警并定位到某个Fail参数。
8.用户需要数据分析,显示并记录每个波形中正转和反转的最大值,平均值,运行时间及断钉时间。
9.用户需要数据记录每个波形中正转和反转的最大值,平均值,运行时间及断钉时间。

Requirement Analysis:

1.Test Channel:

此测试机需要分别控制3个DO(夹紧气缸,推机气缸及卸料气缸)动作,从而完成3次自动工位的测试;
需要1路AI采集电流值。
需要1路DI监控用户按钮是否按下。

2.Operate Sequence:

  • 理想中循环6次的顺序是这样子的:
电动工具数据采集测试程序控制流程设计图
电动工具数据采集测试程序控制流程设计图

用户按下按钮后将开始三次Auto Test循环,接着检测是否通过,通过时则继续开始Manual Test,未通过将进行Fail操作流程。用户在点击Exit后需响应退出操作。
在需求中有谈到切换产线测试和实验测试模式,我所采取的方法是在Start之后判断用户设置的参数从而选择相应的测试模式。

  • 用户按下界面开始测试时,初始化界面值–监控物理按钮有无按下–开始自动循环–将数据更新至界面:
电动工具数据采集测试程序控制流程设计图
电动工具数据采集测试程序控制流程设计图
  • 进入手动模式,与自动不同的地方就是每个case只循环一次,而自动需等待三次循环执行完毕后才等待controller下一条命令,这将导致一个结果,在手动模式下,当用户按下停止按钮时,需等待本次步骤完成,而自动模式下,需等待三次自动测试完成。
电动工具数据采集测试程序控制流程设计图
电动工具数据采集测试程序控制流程设计图
  • 检测Pass 或 Fail,根据在客户使用要求,自动模式下三次测试完成后判断是否pass,而手动模式下每完成一次测试即判断是否pass:
电动工具数据采集测试程序控制流程设计图
电动工具数据采集测试程序控制流程设计图

3.Data analysis:

自动模式下,三次空转测试,而每次空转测试又分为前进和后退2个波形,需要分析出每个波形的0.5-0.9s的最大值,0.5-0.9s的RMS,以及消耗时间共6个参数。我用一个data簇来临时存储每次分析后的参数,在每次停止采集时,将其送至Controller Loop并更新至UI。
由于这2个波形是在一个波形图中,我需要将其分出来,分别进行分析,当启动工具时,捕捉到第一个电流上升沿(取0.3A)后,将采集的数据放至临时数组,当下一个捕捉到上升沿时,将方向+1。

电动工具数据采集测试程序波形图
电动工具数据采集测试程序波形图
电动工具数据采集测试程序框图
电动工具数据采集测试程序框图

同样,手动模式下,三次加载测试,也分为前进和后退2个波形,正转时需要分析出波形最大值,平均值,消耗时间,断钉时间,反转时与自动测试反转波形一样,共7个参数。
正转拉钉时,波形会保持持续上升(大于启动电流),断钉时间可以定位到数组中最大电流值的索引位置。

电动工具数据采集测试程序波形图
电动工具数据采集测试程序波形图

与自动模式不同的是,手动模式需要靠检测电流来判断是否跳转波形,所以每次需要有个通知传至controller告知本次拉钉完成,进入下一个拉钉界面。而这个通知是靠方向是否等于2来判断的。

电动工具数据采集测试程序框图
电动工具数据采集测试程序框图

Application Design:

这次的需求相对来言比较简单,想到后续需求改动应该不会太多,我打算用QMH来实现此款应用:

电动工具数据采集测试程序控制流程设计图
电动工具数据采集测试程序控制流程设计图

为了更好的模块化代码,Sequence Loop, Aquisition Loop和Log Loop将做成底层vi,而Handshake Notifier用于响应Controller Loop中发过来的指令。

电动工具数据采集测试程序框图
电动工具数据采集测试程序框图

User Interface:

电动工具数据采集测试程序界面
电动工具数据采集测试程序界面

Error Test:

不管我对我写的VI多么有信心,还是无法预测软件下一步将会发生的问题,我需要一个Error Checking 告诉我发生了什么,每次发生错误时传至MHL并记录错误。

电动工具数据采集测试程序框图
电动工具数据采集测试程序框图
电动工具数据采集测试程序框图
电动工具数据采集测试程序框图

Troubleshooting

1.理解Notifier与Queue的区别:

如果有10个Dequeue Element连接同一队列引用,当有一个消息传入时,只能有一个执行。
如果有10个Wait in Notification连接同一通知器引用,当有通知传入时,将会同时执行。

电动工具数据采集测试程序控制图
电动工具数据采集测试程序控制图

2.Handshake:

发送消息至相应队列;
等待相应通知器返回完成执行任务。
由于Controller Loop发完信息之后立即等待通知,所以将不会造成通知丢失的情况。
我将其用来实现Loop中数据传递。

电动工具数据采集测试程序框图
电动工具数据采集测试程序框图

 

3. 采集数据分析:

由于手动模式拉钉时,断钉电流大于启动电流,所以很容易判断出断钉时间,如果后续换不同材料的钉,断钉电流有可能小于启动电流,所以,最好的办法是过滤掉启动电流值或者捕捉第二个波峰。

在捕捉电流上升沿的时候,由于供应商提供的直流电源和电脑电源会产生很大的杂波,当接的0v,看到采集卡传过来的波形是这个样子的时候,心都乱了:

电动工具数据采集测试程序波形图
电动工具数据采集测试程序波形图

不管改差分接法都没用。后来在硬件方面加了滤波器,在软件方面用了贝塞尔过滤的算法。

电动工具数据采集测试程序波形图
电动工具数据采集测试程序波形图

发表评论