【LabVIEW学习篇 - 14】:信号量、集合点、事件发生

信号量

信号量技术是用来限制同时访问共享资源的数量。当访问量达到信号量设定的数量之后,其它任务只能等待,直到有任务释放访问权限。

比如打印机打印任务、银行办理业务时的叫号排队等等。

案例:使用信号量,实现两个波形图表轮流显示数据。例如:当CH1获取该信号量时,CH2处于等待状态,当CH1释放信号量时,CH2获取信号量,CH1处于等待状态。

  1. 在前面板中,放置两个波形图表,分别命名为CH1、CH2,放置两个圆形指示灯,分别命名为访问循环1、访问循环2,再放置一个停止按钮。最后在程序框图中,都取消控件的显示为图标,再放置两个while循环和条件结构。
  2. 在程序框图中,鼠标右键-同步-信号量-获取信号量引用鼠标右键-同步-信号量-获取信号量 ,将其连接起来,最后将获取信号量的"信号量输出"和"错误输出"分别连接到条件结构上,"错误输出"连接到选择器端时会自动生成"无错误"和"错误"两个分支。
  3. 在该条件结构中放置平铺式顺序结构,添加在其后添加一帧,第一帧给访问循环1赋值为"T",访问循环2赋值为"F",即表示当前信号量被CH1使用,第二帧则放置一个for循环,给CH1传入数据,最后释放信号量
  1. 第2个while循环的设置与第一个while循环相同,不同的是赋值的对象为CH2。

  2. 最后创建事件结构,设置 "停止":值改变 事件,即点击停止按钮时,释放信号量引用,以上两个循环的获取信号量的"错误输出"端就会输出"T",停止while循环。最终的程序如下:

  3. 运行结果:

集合点

集合点技术可以使多个并行的任务同步执行。在到达集合点的任务数量与预先规定的数量不一致时,每个到达了集合点的任务都将等待,直到任务数量达到时,所有的任务才开始同步执行。

案例:使用集合点,在波形图表中绘制曲线,当第一个波形图表已经绘制完成时,第二个波形图表还未绘制完成,则第一个波形图表等待第二个波形图表,当第二个波形图标绘制完成后,两个波形图表同一时刻开始绘制曲线,循环以上操作。

  1. 基本设置如下,"等待循环1"或"等待循环2"亮起时,表示当前循环已结束,处于等待状态,等待循环1或2结束时,再一起开始执行;"绘制点数1"和"绘制点数2"即表示循环的次数。

  2. 在程序框图中放置两个while循环和条件结构,鼠标右键-同步-集合点-创建集合点 ,并在其"大小"端创建常量为2,表示等待的数量为2,接着放置等待集合点 ,将其连接起来。

  3. 完善第一个while循环,开始时两个圆形指示灯灭,然后给波形图标传入数据,最后结束时点亮"等待循环1?"或"等待循环2?",若第一个while循环结束,则点亮"等待循环2?",表示第一个循环结束,正在等待第二个while循环。

  4. 第二个while循环与第一个while循环中的设置相似。

  5. 添加事件结构,添加事件分支为 "停止":值改变 事件,在其中放置销毁集合点 。最终程序如下:

  6. 运行结果:

    因为第一个while循环中的for循环次数为1,小于第二个while循环中for循环的次数,所以第一个while循环停止,亮起圆形指示灯,处于等待状态,这个时候第二个波形图标还在绘制曲线。

事件发生

顾名思义就是产生事件,它和用户事件很像,但不能像用户事件一样传递数据,它可以用来在While循环和VI之间传递触发事件。

案例:使用事件发生,实现温度计的监控,当温度计超过80℃时,报警指示灯亮,进行报警计数。

  1. 在前面板中,鼠标右键-数值-温度计 ,再鼠标右键-数值-垂直指针滑动杆 ,选中垂直指针滑动杆,鼠标右键-属性 ,在属性界面的标尺 部分设置刻度范围的最大值为100,将其值拉到80,作为报警上限,最后放置圆形指示灯、数值显示控件、停止按钮。

  2. 在程序框图中,放置获取通知器引用while循环事件结构 。while循环设置超时时间为300ms,主要是为了在300ms后给温度计赋值。
  3. 如下图所示。在超时时间段内没有时间发生就为传T,否则穿F。



  4. 总程序如下:

  5. 运行结果:
相关推荐
知识分享小能手4 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
茯苓gao7 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾7 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT7 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
aaaweiaaaaaa7 小时前
HTML和CSS学习
前端·css·学习·html
看海天一色听风起雨落8 小时前
Python学习之装饰器
开发语言·python·学习
speop10 小时前
llm的一点学习笔记
笔记·学习
非凡ghost10 小时前
FxSound:提升音频体验,让音乐更动听
前端·学习·音视频·生活·软件需求
ue星空10 小时前
月2期学习笔记
学习·游戏·ue5
萧邀人10 小时前
第二课、熟悉Cocos Creator 编辑器界面
学习