【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. 运行结果:
相关推荐
2303_Alpha2 天前
SpringBoot
笔记·学习
萘柰奈2 天前
Unity学习----【进阶】TextMeshPro学习(三)--进阶知识点(TMP基础设置,材质球相关,两个辅助工具类)
学习·unity
沐矢羽2 天前
Tomcat PUT方法任意写文件漏洞学习
学习·tomcat
好奇龙猫2 天前
日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(10):91-100语法+考え方13
学习
向阳花开_miemie2 天前
Android音频学习(十八)——混音流程
学习·音视频
工大一只猿2 天前
51单片机学习
嵌入式硬件·学习·51单片机
c0d1ng2 天前
量子计算学习(第十四周周报)
学习·量子计算
Hello_Embed2 天前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
LabVIEW开发2 天前
LabVIEW气体污染无线监测
网络·labview·labview知识·labview功能·labview程序
咸甜适中2 天前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust