每周一个编程小例子:使用 PLC 程序让灯光呼吸

引言

在现代工业自动化和智能家居中,灯光不仅仅是照明的工具,它还可以用来传递信息和增加视觉效果。呼吸灯效果,即通过逐渐增强和减弱亮度来模拟呼吸的光效,近年来广泛应用于设备状态指示和装饰性照明。本文将介绍一个实现呼吸灯效果的 PLC 程序,通过简单易懂的代码,使您能够快速了解其原理与应用。

程序代码及介绍

下面是完整的 PLC 程序代码(代码基于 CodeSys 平台的 ST 语言): 

  • FUNCTION_BLOCK FB_BreathingLight
  • VAR_INPUT   
  •         Enable : BOOL;         // 使能   
  •         CycleTime : UDINT := 4000; // 呼吸周期   
  •         MinBrightness : INT := 10; // 最小亮度   
  •         MaxBrightness : INT := 90; // 最大亮度
  • END_VAR
  • VAR_OUTPUT   
  •         PWM_Output : INT;      // PWM输出值(0-100)   
  •         LightOn : BOOL;        // 灯亮状态
  • END_VAR
  • VAR   
  •         Timer : TON;           // 定时器   
  •         Direction : BOOL;      // 方向 TRUE=渐亮 FALSE=渐暗   
  •         CurrentBrightness : INT := MinBrightness;
  • END_VAR
  • // 应用:设备状态指示、呼吸灯效果
  • IF Enable THEN   
  •         Timer(IN := TRUE, PT := UDINT_TO_TIME(CycleTime));   
  •         IF Timer.Q THEN        
  •              // 更新亮度       
  •              IF Direction THEN           
  •                    CurrentBrightness := CurrentBrightness + 1;           
  •                    IF CurrentBrightness >= MaxBrightness THEN               
  •                          Direction := FALSE;           
  •                    END_IF       
  •              ELSE           
  •                    CurrentBrightness := CurrentBrightness - 1;           
  •                    IF CurrentBrightness <= MinBrightness THEN               
  •                          Direction := TRUE;           
  •                    END_IF       
  •              END_IF       
  •              Timer(IN := FALSE);   
  •         END_IF   
  •         PWM_Output := CurrentBrightness;   
  •         LightOn := (CurrentBrightness > 0);
  • ELSE   
  •         PWM_Output := 0;   
  •         LightOn := FALSE;   
  •         CurrentBrightness := MinBrightness;   
  •         Direction := TRUE;
  • END_IF

程序功能分析

2.1 变量介绍

这个功能块 FB_BreathingLight 实现了一个简单的呼吸灯效果。它包括以下几个输入和输出变量:

输入变量

  • Enable: 用于启动或停止呼吸灯效果的使能开关。

  • CycleTime: 控制灯光呼吸的周期时间(单位为毫秒)。

  • MinBrightness 和 MaxBrightness: 分别定义了灯光的最小和最大亮度。

输出变量

  • PWM_Output: PWM 输出值,用于控制灯光亮度(范围从 0 到 100)。

  • LightOn: 指示灯是否亮起的状态。

2.2 工作原理

程序利用定时器 Timer 来控制亮度的变化。每当定时器超时后,程序将根据当前的亮度变化方向(Direction)调整亮度值 CurrentBrightness。当亮度达到最大或最小值时,程序会反转变化方向,从而产生呼吸效果。

应用场景

该程序可以广泛应用于多个场景,如:

设备状态指示:通过呼吸灯效果来表示设备的工作状态,例如正常工作、故障或待机状态。

装饰性照明:在家居或商业环境中,使用呼吸灯效果增加视觉吸引力。

警示灯:在需要引起注意的情况下,通过渐变亮度的灯光吸引用户关注。

拓展思考

随着智能家居和物联网的发展,灯光控制的智能化程度越来越高。未来的呼吸灯效果可以结合环境传感器,实现根据周围环境变化自动调节亮度的智能灯光。此外,利用蓝牙或 Wi-Fi 技术,可以实现远程控制和定时设置,让灯光效果更加个性化和人性化。

总结

通过本文的介绍,我们了解到如何使用 PLC 编写一个简单的呼吸灯效果程序。该程序不仅具有实用价值,还能为我们的产品增添视觉美感。希望这篇文章能够帮助您更好地理解并应用呼吸灯效果,为您的项目增添亮点。

你来出题 我来答图片图片图片

欢迎大家在评论区提一些标准功能块的需求,如果合适,我们会在以后的文章中与大家分享。

图片

往期回顾

每周一个编程小例子 :Bit 到 Word 转换的两种实现方案对比

每周一个编程小例子:记录设备运行时间

每周一个编程小例子:基于长按检测的启动控制系统

每周一个编程小例子:探秘 PLC 数据记录功能块

每周一个编程小例子:心跳检测与 PLC 应用

每周一个编程小例子:斜坡发生器

每周一个编程小例子:旋转速度计算

每周一个编程小例子:计算 PLC 循环周期|例程需求征集!

每周一个编程小例子:如何优雅的分割字符串

每周一个编程小例子:带反馈的阀门控制程序

每周一个编程小例子:西门子 LGF 库中的脉冲继电器功能块

每周一个编程小例子:曲线加减速的控制应用

每周一个编程小例子:轻松去除字符串前导字符

每周一个编程小例子:根据阈值更新输入

每周一个编程小例子:官方模拟量输入处理模块

每周一个编程小例子:主从电机的时序控制

每周一个编程小例子:基于一阶滞后滤波的优化方案

每周一个编程小例子:16 进制到浮点数的神奇转换

每周一个编程小例子:PLC 长按控制程序

每周一个编程小例子:PLC 程序实现多位整数拆分

每周一个编程小例子:流量累积计算器

每周一个编程小例子:用于连锁的电机标准控制模块

每周一个编程小例子:PID 控制算法在 PLC 系统中的实现与应用

每周一个编程小例子:自定义种子生成随机数

每周一个编程小例子:可调时间的脉冲生成器

每周一个编程小例子:带滤波的标准模拟量输入功能块

每周一个编程小例子:使用 PLC 将字符串转换为日期格式

每周一个编程小例子:PLC 配方管理

每周一个编程小例子:比较两个 DB 块(STL)

每周一个编程小例子:如何使用 PLC 实现数组逆序

每周一个编程小例子:流量累计与批次控制

每周一个编程小例子:自定义循环执行控制程序

每周一个编程小例子:步进控制功能块

每周一个编程小例子:PLC 权重比例分配器

每周一个编程小例子:数字量输入组监控

每周一个编程小例子:实时数据分析

每周一个编程小例子:PLC 多轴同步控制的理解与应用

每周一个编程小例子:PLC 波形生成器 (正弦 方波 三角波)

每周一个编程小例子:模拟量信号报警

每周一个编程小例子:监控模拟信号的健康状态

每周一个编程小例子:PLC 程序实现模拟信号的线性校准

图片

2026年4月

Tags: