使用优先级不同的VI创建确定性应用程序
- 更新时间2025-05-20
- 阅读时长4分钟
将确定性任务与非确定性任务分开,并把确定性任务放在不同优先级的VI中,确保足够的处理器资源。可对VI设置不同的优先级,然后将其归入一个可用的执行系统,控制分配给各个VI的处理器资源。
根据指定的VI优先级和执行系统,LabVIEW为每个VI分配一个执行系统线程。线程在处理器上执行。
分配VI优先级
在项目浏览器窗口右键单击VI,从快捷菜单中选择属性,打开VI属性对话框,可修改VI的优先级。在VI属性对话框中,从类别下拉列表中选择执行,打开执行页设置VI的优先级。可从下列VI属性中选择,优先级从低到高排列:
- 后台优先级(最低)
- 标准优先级(默认)
- 高于标准优先级
- 高优先级
- 实时优先级(最高)
标准优先级是VI的默认优先级。子VI继承调用方VI的优先级。例如,确定性VI调用的子VI为实时优先级。VI的实时优先级高于所有其他优先级。实时优先级的VI直到完成所有任务后才释放处理器资源。确定性VI可显式地让渡处理器资源,确保不独占处理器资源。
除了上述五个优先级之外,还可将VI设置为子程序优先级。设置成子程序级别的VI不与其他VI共享执行时间。当VI处于子程序优先级时,它有效地控制正在执行的线程,并与其调用者运行在同样的线程上。在子程序VI完成运行之前,其他VI不能在这个线程上运行,即使这些VI也是子程序级的。
为VI分配执行系统
在项目浏览器窗口右键单击VI,从快捷菜单中选择属性,打开VI属性对话框,可修改VI的执行系统。在VI属性对话框中,从类别下拉列表中选择执行,打开执行页设置VI的执行系统。LabVIEW有六个执行系统:
- 用户界面
- 标准
- 仪器I/O
- 数据采集
- 其他1
- 其他2
默认情况下,所有VI都在标准执行系统中运行。用户可根据实际需要,将VI分配至其他执行系统。除了上述六个执行系统之外,也可将子VI的执行系统设置为与调用方相同。设置为与调用方相同表示子VI的执行系统与调用该子VI的顶层VI相同。
除了用户界面之外,每个执行系统都有一个按指定优先级执行VI的线程队列。例如,将三个VI分配至某执行系统,无论何时,该执行系统中都是一个VI运行,其他两个等待。假设所有VI有同等的优先级,线程先运行一段时间。然后,线程移至队列末尾,下一个线程开始运行。线程结束后,执行系统将线程从队列中移出。
用户界面执行系统处理所有用户界面任务。其他执行系统不负责用户界面。如VI需更新用户界面,执行系统将任务传递给用户界面执行系统,请求更新用户界面。
确定性VI执行
确定性VI具有抢占性,可独占处理器资源。确定性VI可能会占用所有处理器资源,不允许其他低优先级任务(例如,低优先级VI、RT终端的FTP服务器)执行。
确定性VI可在不影响代码确定性的前提下允许其他低优先级任务执行。通过设置定时VI的时间,可保证VI在合适的时候释放处理器资源。