自定义_自定义探针

àì夳堔傛蜴生んèń 2023-01-06 12:57 274阅读 0赞
  • LabVIEW:2015

想必探针这个调试工具大家都是用过的,用来监测系统当前状态下某条连线(数据流)的值,不仅简单而且实用。不过你未必知道还有自定义探针或者说你还不曾用过自定义探针,也就是说除了LabVIEW提供的系统自带探针之外,还可以创建属于自己的探针,自定义探针的功能更加强大,不仅可以监控连线的值,还可以添加逻辑条件代码,当条件满足时暂停代码的执行,类似断点的功能,同时还可以对原始数据进行处理和提取,以便更高效地进行系统的调试。

下面通过一个简单的例子,看看如何自定义探针?

界面上有一个LED和一个按钮,按钮用来控制LED的亮灭,这里用JKI状态机来实现,如下图所示:

3873e2dfcc95a3f6a6690d8db808c195.png

01a4c57741f7f50a9e0ee9c57601eb50.png

d361c8e896bacaac27986185b887a7f5.png

如果想监控系统运行中JKI状态机的所有状态怎么办?可以通过高亮显示来观看系统的运行过程(效率太低),也可以通过断点和探针配合使用(效率较高但是默认的系统探针只能显示当前值),需要自己在脑子里或其它地方记录所有的状态和执行顺序。

如果想让系统只在某个条件下才暂停运行(如当LED被点亮时暂停程序执行),显然通过打断点是不太合适的(程序每次运行到断点处时,都会暂停运行),该怎么办?

上述说的问题可以通过自定义探针一次性解决,灵活使用自定义探针,将会帮助我们更高效地调试一些更为复杂的系统,下面看一下自定义探针的实现过程。

在想监控的连线上,单击鼠标右键,在弹出的菜单中选择“Custom Probe >> New…”,如下图所示:

cf97f65c07dfc7d3ccd384fc00e6cbae.png

此时会弹出创建探针的一个对话框,可以选择在已有的探针基础上进行创建,也可以选择创建一个新的探针,这里选择第二个,然后单击下一步,如下图所示:

44ab5ddda291ff7ed381677e74642b38.png

紧接着是设置探针的文件名、探针在快捷菜单中的名称(默认与文件名相同)、以及探针的保存位置,默认为\LabVIEW Data\Probes,还可以将探针文件保存在\user.lib\_probes\default路径下,当探针文件被保存在第二种路径下时,LabVIEW将会把这个自定义探针用作这种数据类型的默认探针,这里演示保存在第一种路径下,如下图所示:

49b780aff1085d07fcd7bc290c2ca938.png

单击“Save”按钮进行保存后,桌面会弹出一个创建好的探针VI,如下图所示:

6556054cc57d7c08ececfd21e5b7f275.png

其中有三个控件(Current State、Boolean、Value String),其中Boolean和Value String默认在前面板中被隐藏了,如果你需要也可以将它们显示出来,这三个控件不要删除,否则LabVIEW将不会将它识别为探针,它们的功能分别是:

Current State:连线的原始输入数据,即监控的数据;

Boolean:当Boolean输出为真时,将会暂停程序执行如同断点的效果;

Value String:将原始数据进行处理后输出;

在这个演示的例子中,为了记录监控的所有历史状态,在前面板中放置一个列表,同时为了在满足条件时暂停运行,再放置一个字符串输入控件用来输入条件,并隐藏Current State控件,如下图所示:

55179b032ce0ce8c3a0448cd01e32d21.png

4b1a654c5be0bd2f68496e6d51ce7e92.png

通过FGV记录所有历史数据,并添加条件成立的逻辑代码,程序框图实现如下图所示:

6dd0598465ccc34727399e0ad08bc04b.png

保存并关闭JKI State.vi,再次右击连线位置会发现,Custom Probe中多出了一个JKI State.vi,如下图所示:

344a50be049dad708126ece399addefa.png

下面看看运行效果,如下视频所示:

欢迎扫码关注,在看、转发并分享朋友圈,您的支持是我不断更新的动力!

664bb6ae838680517284f9a46a640092.png

发表评论

表情:
评论列表 (有 0 条评论,274人围观)

还没有评论,来说两句吧...

相关阅读

    相关 定义函数

    1.1 使用函数 在Python中,函数必须先声明,然后才能调用它,使用函数时,只要按照函数定义的形式,向函数传递必需的参数,就可以调用函数完成相应的功能或者获得函数返回