LabVIEW状态机迭代时间调试工具
这是一个调试工具,用于快速发现基于循环迭代的状态机中的慢速函数,此工具将在运行时通过计算执行时间的统计信息(平均值、最大值、最小值)来告诉哪些迭代步骤相对较慢。
功能:
当使用运行速度低于预期的状态机时,有时很难发现哪些状态实际上是慢速状态。使用此工具,可以针对慢速状态调试两种常见的状态机体系结构:基于迭代的状态机和基于枚举的状态机:
从这两个示例中可以看出,在第三种状态下,两者都有30毫秒的(不需要的)暂停。对于简单的状态机,不难发现这样的错误。但是,如果状态机被多次调用,或者暂停仅在极少数情况下发生,则情况可能会很复杂。
该工具提供了一个VI,在使用时连接到迭代计数器或枚举,它将跟踪每个状态/迭代的执行时间。
它返回有关每个状态的以下详细信息:
上次执行持续时间
执行总数(运行次数较多的spot状态)
总执行时间
最短执行时间
最大执行时间(发现异常值)
或者,它可以显示一个弹出窗口,该弹出窗口计算每个状态的平均时间,并允许基于任何列进行排序或将数据导出到剪贴板。
使用的技术
该工具有几个VI,展示了各种技术,我将总结并指出特定的代码部分。
Full-sizetable
VI:DebugStateTimes2010.vi包含一个设置为“使用面板缩放对象”的表。
优点:前面板由单个元素组成,该元素与前面板一起调整大小以隐藏其他前面板元素。
反馈节点以跟踪统计信息
VI:DebugStateTimes2010.vi包含三个反馈节点(迭代、时间和统计)来跟踪数据。
无需带有移位寄存器的while循环,更少的节点代码更简洁。
(可选)显示对话框
通过为调用VI提供显示带有时序统计信息的对话框的选项,可以将此代码保留在可执行文件中,并决定何时显示实际统计信息以进行调试
可重入VI
通过使用可重入VI,调试工具可以放置在多个位置,而不会相互干扰
可排序表XControl
GUI中使用的表是XControl。为了封装用于表处理的所有代码,它允许调试工具忽略与表的任何用户交互,这些在XControl中处理。XControl位于“data\CM_SortableTable.xctl”,可以查看以下技术:
LimitTable to be an indicator
由于该表不是控件(用户无法在表中输入数据),因此强制将XControl作为指标:
XControl中的消息传递
很难知道XControl需要采取哪些操作,通过使用XControl状态能力(Action)中的特定字段,属性和方法可以向XControl外观VI发出命令:
处理子VI中的复杂代码
一些更复杂的代码部分存储在子VI中。例如,快捷菜单内容的计算是在专门的VI中完成的。这使得外观显示VI保持简单。
使用开源代码
这个XControl的核心是可以对特定列进行排序,这种排序是通过称为SortArray的OpenG函数完成的,该工具允许根据特定列和方向(升序/降序)进行排序。通过使用开源代码,可以在代码中利用已知和经过测试的库的强大功能。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。
LabVIEW程序,如下附件所示。