首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机械寿命试验控制系统设计教程

作者:张博迪

低压电器的机械寿命,遵循国标GB14048.1中关于机械寿命的定义。援引如下:机械寿命为电器的抗机械磨损能力,可用有关产品标准规定的空载循环(即主触头不通电流)次数来表征。该次数是电器需要修理或者更换任何机械部件前能达到的机械寿命次数,如果电器设计成维修,则按照制造商的说明书进行正常维护是允许的。 每次操作循环包括一次闭合操作伴随着一次断开操作。试验电器应按照制造商的说明书安装,有关产品标准应该对电器无载操作循环次数的优先值。

总体设计

机械寿命通用模板是基于labview程序基于消息队列结构设计出来的专用于接触器,继电器,脱扣器等线圈控制类电气元件进行机械寿命极限测试的软件,运行在Windows系统下,能够兼容win xp,win7,win8等操作环境。该软件可以兼容PCI板卡与arduino两种控制器件,软件包含“参数设置”,“数据查询”,“试品批次管理”等基础功能,并且包含了“权限管理”,“故障管理”,“系统测试”等功能,方便用户进行一系列维护与操作,本软件能够设置测试工位数,检测模式,通电时间,循环时间,判断阀值等参数,并且能够根据试品类型选择相应的采集模式,软件灵活性好,运行稳定,能够满足现代工业需求。

程序结构

本软件主要包含两种程序结构:消息队列与事件结构状态机。消息队列用在主程序上各个VI间相互数据传递与次序控制,事件结构状态机主要用在子界面,供主程序调用。

01

消息队列

消息队列操作函数用于创建在同一程序框图的不同部分或者不同VI之间的数据传递。和通知器一样,但是它区别于通知器是可以缓存数据。一般的编程步骤是:1、获取队列引用2、元素入队3、元素出队4、释放队列引用。

效果:如果入队速度和出队速度(这里速度通过延时控制)相同,则队列中的元素数量为零或者一个常数,两个波形基本一致。如果入队速度大于出队速度,则队列的元素在增长,增长到设定的值,这个时候可以看到两个波形出现差别。最后,如果入队慢出队快,则先把队列中已有的数据先出队,完后这样就数据持平,一进一出。其实我们可以把队列看成个蓄水池(可以自己设定最大值),有进有出,要控制入队和出队的速度。这个是比较方便的。

本软件的基础程序框架运用的就是消息队列模式,主程序执行两个队列:操作队列与试验队列,操作队列用来执行用户界面的一系列操作,试验队列执行试验过程,两个队列在执行上互不影响但是却相互配合。

02

事件结构状态机

状态机模式的基本构成元素是while循环和case结构,而事件结构模式的基本构成元素是while循环和event结构,因此新的模式应该由while循环、case结构和event结构组成。而while循环的目的是为了保证程序的持续运行,因此必须在最外层,这样就只剩下了图20所示的两种组合方式。在第一种方式中,每次循环的运行需要经过一个事件结构才能够实现case中各个分支的运行,那么到底需要多少个分支呢?一般而言不同的事件都会有不同的事件处理函数(这些函数可以在case结构中共用),显示这是无法满足要求的,它从本质上而言仍然是一种事件结构。 在第二种方式中,程序的主体是一个状态机结构,不同的是

在某一个状态分子中有一个事件结构。我们可以回忆状态机模式中的“空闲Idle”状态,这正是长时间占用CPU资源的源头,如果在Idle中加入一个事件结构后就有效地规避了这个题。

本程序运用了第二种事件结构状态机的模式,while循环保证了程序的运行不中断,条件结构支持了程序大流程,本程序中用到了初始化,执行,退出3个条件分支,事件结构用来执行用户的一系列操作。

子程序

本软件主要包含两种程序结构:消息队列与事件结构状态机。消息队列用在主程序上各个VI间相互数据传递与次序控制,事件结构状态机主要用在子界面,供主程序调用。

01

库文件

labview库是一堆子VI的集合,用户可以将一些写好的具有通用或特殊功能的VI整合到库中,并加以设置,预留给用户使用,本软件用到了自己编写的一些库文件。

02

多态VI

多态VI是将多个VI整合成一个VI,根据多态选择器选择不同的VI来使用,在选择相应的VI时,VI的接口和功能将随已选择VI的属性改变。本软件建立了3个多态VI,主要用在切换控制器上。

03

运行菜单与弹窗界面

运行菜单是指在运行时在用户界面左上角才出现的菜单,单击菜单中某项时,系统能够侦听到用户的操作,联系侦听该操作就可以执行所对应的动作。本软件将弹窗界面与运行菜单相结合,弹出各个操作所对应的窗口界面,供用户进行一系列操作。

参数设置

单击运行菜单“参数设置”弹出参数设置对话框,可以设置,线圈上电时间,单次动作时间,触点类型,数字量采集公共端,判断标准参数,并且可以修改模拟量检测的判断阀值,点击设置后系统将这些参数写入全局变量供程序使用。

数据查询

单击运行菜单“数据查询”弹出数据查询对话框,可以用来查询批次列表中已存入数据库中的数据信息,并形成曲线,点击对话框上面的导出报表,能够导出该批次的实验信息与波形。

批次管理

单击运行菜单“批次管理”,弹出批次管理对话框,该页面包含选择试验批次与创建试验批次两个功能,创建试验批次:用户输入要进行试验的试品编号,试验次数,试品类型,预设失效次数等功能,系统将该批次记录在案,其中的参数作为试验运行的标准。选择试验批次:用户可以根据该功能将想要的试品放置在相应的工位上,系统根据该工位的批次信息完成该工位的试验。

权限管理

权限管理弹窗是进行权限管理的,用户进入该页面可以设置软件登录权限。不再列表

中的用户将无法通过软件打开时的权限验证,无法进入实验主界面进行试验。

系统测试

用户在未启动实验时可以在该界面进行硬件测试,核对IO口与采集口是否对应,输出与采集是否正常。该功能在实验运行中禁止开启。

故障信息

单击运行菜单“故障信息”,弹出故障信息对话框,该页面可以显示系统在运行时出现的各种故障及其发生时间,故障原因等。

退出系统

单击运行菜单“退出系统”,弹出退出系统对话框,点击确定后退出软件,点击取消

忽略操作

程序思路

01

全局变量

全局变量是能够在软件项目里任何程序处都可以使用的变量且具有数据缓存功能,这是其最大的好处,但是全局变量的使用具有一定的风险性,因为其破坏了labview数据流的传输方式,尤其是在使用全局变量时不能在同一时间既读又写,这样就会使得全局变量的值出现“跳动”现象,脱离原来的值,使其值变得无意义。但是使用得当,全局变量又会是减

少程序复杂度的利器。本软件使用的全局变量有以下几个:

操作队列状态(字符串)

检测当前操作队列停留在那个分支,当处于空闲分支时才可进行下个操作。所以在主程序中,当进行完某一操作时,将其停留在“空闲‘分支上。

系统停止(布尔)

用来停止时间显示与公司名显示循环,该循环为while循环,当该值为真时,循环停止。在退出软件时,现将该值置为真,再停止显示循环,在再置为假。

队列(簇(队列句柄))

相当于两个队列的指针,能够减少主程序中不同队列间复杂烦琐的连线,简化程序。

触点类型(布尔)

在参数设置中可以对其设置,真为常闭,假为常开,程序运行时根据该值作为被测触点的类型依据。

采集引脚公共端(布尔)

在参数设置中可以对其设置,真为共阴,假为共阳,程序运行时根据该值作为被测触点采集判断的依据。

参考错误数(I32)

以该值为依据,当数据库中的故障数量大于该值时说明发生故障,故障灯亮,复位后该值为当前错误数。

合格判断标准(I32枚举)

在参数设置中可以对其设置,选择项有:仅触点,仅模拟量,触点加模拟量,根据该参数,软件指向相应的合格判断。

线圈上电时间与单次动作时间(I32)

在参数设置中可以对其设置,线圈上电时间是指在一次试验中线圈通电的时间,单次动作时间是指一次完整的实验,包括线圈上电,上电检测,线圈断电,断电检测,更新数据库,更新界面等时间总和。

判断阀值(2D数组(I32))

当判断类型有模拟量时,根据采集的模拟量与阀值进行比较,判断其合格,列数分别为上电上限,上电下限,断电上限,断电下限,行为工位号。

02

子程序

批次管理(事件结构状态机)

批次管理试对实验的批次进行管理,批次中包含了被测试品的信息,包括试品编号,试品类型,预设试验次数,已做试验次数,预设失效次数,合格次数,不合格次数等信息,实验根据批次中的信息对实验进行判断。用户可以创建,修改,删除批次,当建立好一个批次后,软件会相应的在数据库中建立一个与该批次对应表用来存取该批次的试验数据。已选择实验的批次会显示在主界面的试验列表中。

报警(事件结构状态机)

在报警功能中用到了数据库中的两个表,分别是错误表,错误代码表,错误代码表用来存放各种错误与说明及其对应的错误代码,错误表用来存放出现的错误,当出现故障时,软件根据错误代码检索错误代码表,并取出来存放在错误表中,此时核对错误数并发出故障指示。

数据查询

数据查询与数据库息息相关,在检索数据时,根据试品编号为索引,查找试品编号所对应的数据表中的数据,并将波形绘制在波形表上,在出报表时,软件会将批次中的信息与波形同时导入到报表中供用户查看。

03

主程序

界面

主程序的界面如下图所示,左侧为操作区,右侧为显示区。主程序将更多功能界面分散到各个子窗口中,保证了主界面的简洁,将实验中的参数显示仅仅留下了。保证了界面的美观,实用。

程序

主程序用到了两个消息队列与一个while循环,两个消息队列分别命名为操作队列与试验队列,操作队列进行一系列用户操作,试验队列用来进行实验过程。

程序阶段:

1.登录权限:

建立单独登录权限程序,当权限通过时加载主程序,反之退出软件。

2.初始化

通过权限后,进入主程序,主程序先进行初始化,初始化包括初始化板卡,加载配置文件。配置文件包括了定义各个IO通道,数据库连接字符串,串口号,板卡类型,采集类型,工位数等参数。配置文件在操作队列读取后分别进入两个队列的移位寄存器中供各分支使用。

3.操作队列状态

操作队列在初始化后进入空闲分支等待用户操作,每个操作进行完成后操作队列均会进入空闲分支等待,切当该队列在空闲分支时,下一用户操作才能生效。

4.试验队列状态

试验队列共有3中状态:1,试验循环,2停止循环,3故障停止。

当实验启动时,试验队列会进行试验循环,执行相应的分支,在非试验状态下,队列会进入试验停止循环状态,在该状态时,软件只会采集,不会有任何输出动作,当出现板卡采集故障时,软件会进入故障停止状态,此时试验队列会停下来,不做任何动作。等待复位,当点击复位按钮时,试验队列会进入试验停止循环。当复位不成功,板卡依然采集故障,软件会依然进入故障停止状态。所以试验队列的顺序为下:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180131G0YU4400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券