labview项目实例_labview操作者框架

本文介绍了一个使用LabVIEW操作者框架的项目,旨在实现多并行任务的控制,例如水位和温度控制。通过创建Timed Loop Controller和Level Controller类,实现了模块化的轮询和限位控制。此外,创建了UI界面类和具体的操作者类如Cooler, Water Level和Dual Fan,确保了系统在界面和脱离界面时都能正常运行。项目展示了操作者框架的代码复用性和系统灵活性。" 116867985,10543103,Linux环境下eMMC读写性能深度测试,"['Linux', '硬件测试', '存储设备', '嵌入式开发', '性能基准']
摘要由CSDN通过智能技术生成

0.引言

操作者框架适合于多并行任务的项目。在这样的项目中,多个并行任务之间往往需要相互通信,传统的解决办法是,每个任务一个队列,一个while循环,多任务项目需要在一个程序框图使用多个while,不好看。NI说使用Actor Framework能够避免锁死,竞争,增大代码重用度。NI官方论坛上有一个例子,写的很好。

80993595bacf8e7334a8757799dc2e81.png

如上图,这是一个反馈式蒸发器,通过不断向室内吹送水蒸气以达到降温目的。它主要由水位传感器,温度传感器,水箱,水阀,水泵,风扇,海绵组成。原理如下:读取水位,水位过低时,打开水阀向水箱中放水;水位过高时关闭水阀。同时,读取室内温度,温度过高时,打开水泵向海绵上抽水,等海绵吸满水后,打开风扇,向室内鼓风,干燥的风经过湿透的海绵,成为温度较低的湿润的风,以此来降低室内温度;温度过低时,关闭水泵。

项目需求:

  1. 控制水位。过低打开水阀,过高时关闭水阀。
  2. 控制温度。过高时,打开水泵,等一会,再打开风扇。过低时,关闭水泵。
  3. 在界面上显示温度,水泵,风扇状态。
  4. 允许在界面上改动温度限制。
  5. 系统中总共使用两个风扇,一个坏时另一个自动启用。
  6. 系统可以脱离界面运行。

有点小复杂。

解决方案:

系统需要4个模块:

UI(Cooler UI with Events.lvclass)

冷却模块(Cooler.lvclass)

水位控制模块(Water Level.lvclass)

风扇控制模块(Dual Fan.lvclass)

其中冷却模块是主模块,与风扇控制模块和水位控制模块组合关系,和UI模块是关联关系。(PS:Cooler需要负责Dual Fan和Water Level的启动和释放,Cool通过动态事件和Cooler Panel交互),每个模块为一个Actor。

c65dfc742b21362d09a83473c6e6d83a.png

冷却模块(Cooler.lvclass)),水位控制模块(Water Level.lvclass),风扇控制模块(Dual Fan.lvclass)都需要轮询,Dual Fan轮询有没有风扇坏掉了,Water Level轮询水位,Cooler轮询温度。所以写个Timed Loop Controller.lvclass,哪个操作者需轮询要直接从它继承就可以了。继承使代码复用度提高了。

同理,水位控制模块(Water Level.lvclass),风扇控制模块(Dual Fan.lvclass)还有相似的逻辑——超过限位就打开或关闭。写个Level Controller.lvclass作为这两个操作者的父类,因为labview中一个孩子只能有一个父亲,所以Level Controller.lvclass需要继承自Timed Loop Controller.lvclass。

2d453be0c2303127daedd001f92d556e.png

1.创建Timed Loop Controller.class

这个类只需要一个属性:轮询频率。使此类继承Actor.class。

4a8f31dbe3359147cbdbbc28421fc633.png

1.1 Actor Core.vi

4532dc679bff49dfea619ac1eaf36535.png

父类actor.class中的Actor Co

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值