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

引言

随着自动化控制技术的不断发展,PLC(可编程逻辑控制器)在各行各业的应用越来越广泛。PLC 控制系统可以通过编程实现不同的控制逻辑,并且灵活地应用于工业设备的自动化控制。本文将介绍一款基于西门子 LGF 库的 PLC 程序,名为LGF_PulseRelay_v2。我们将详细解析该程序的功能、应用场景,并通过实例来深入理解其工作原理。

1  LGF 库概述

西门子的 LGF(Library General Functions)库是西门子为 S7 系列 PLC 提供的一组通用功能库,包含了多个用于工业自动化中的常见控制需求的功能块。LGF 库不仅能够简化 PLC 程序的编写过程,还可以提高程序的可重用性和维护性。LGF_PulseRelay_v2是该库中的一个功能块,通常用于脉冲继电器、涌浪继电器、触发-翻转触发器等应用场景。

2  程序代码及介绍

2.1 代码解析

FUNCTION_BLOCK "LGF_PulseRelay_v2"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1   
    VAR_INPUT       
       trigger : Bool;      
       set : Bool;      
       reset : Bool;   
    END_VAR
   
    VAR_OUTPUT       
       out : Bool;   
    END_VAR
   
    VAR       
       statTriggerOld : Bool := false;      
       statTriggerRis : Bool := false;      
       statSetOld : Bool := false;      
       statSetRis : Bool := false;      
       statResetOld : Bool := false;      
       statResetRis : Bool := false;      
       statOut : Bool := false;   
    END_VAR

BEGIN	
       //=============================================================================	
       // SIEMENS AG	
       // (c)Copyright 2016 	
       //-----------------------------------------------------------------------------	
       // Library:       LGF (Library General Functions)	
       // Tested with:   CPU1212C DC/DC/DC FW:V4.1	
       // Engineering:   TIA Portal V13 SP1 Upd 8	
       // Restrictions:  -	
       // Requirements:  PLC (S7-1200 / S7-1500)	
       // Functionality: Pulse relay, Surge relay, Toggle-Flip-Flop, Frequency divider	
       //-----------------------------------------------------------------------------	
       // Change log table:	
       // Version Date        In charge                       Changes applied	
       // 01.00.00 06.06.2015 Siemens Industry Online Support First released version
       //=============================================================================

       // Scan for rising edge "trigger"	
       IF #trigger AND NOT #statTriggerOld THEN	    
           #statTriggerRis := TRUE;	
       ELSE	    
           #statTriggerRis := FALSE;	
       END_IF;	
       #statTriggerOld := #trigger;
	
       // Scan for rising edge "set"	
       IF #set AND NOT #statSetOld THEN	    
           #statSetRis := TRUE;	
       ELSE	    
           #statSetRis := FALSE;	
       END_IF;	
       #statSetOld := #set;
	
       // Scan for rising edge "reset"	
       IF #reset AND NOT #statResetOld THEN	    
           #statResetRis := TRUE;	
       ELSE	    
           #statResetRis := FALSE;	
       END_IF;	
       #statResetOld := #reset;
	
       // Create toggle signal	
       IF #statTriggerRis AND NOT #statOut THEN	    
           #statOut := TRUE;	
       ELSIF #statTriggerRis AND #statOut THEN	    
           #statOut := FALSE;	
       END_IF;
	
       // Output: toggle, set, reset	
       IF #statTriggerRis THEN	    
           #out := #statOut;	
       END_IF;
	
       IF #statSetRis THEN	    
           #out := TRUE;	
       END_IF;
	
       IF #statResetRis THEN	    
           #out := FALSE;	
       END_IF;
END_FUNCTION_BLOCK

2.2  代码功能解析

变量定义与初始化

  • trigger、set、reset为输入变量,用于接收触发、置位和复位信号。

  • out为输出变量,用于输出继电器的状态。

  • statTriggerOld、statSetOld、statResetOld用于保存前一周期的输入状态。

  • statTriggerRis、statSetRis、statResetRis用于表示输入信号的上升沿变化(即检测信号从低到高的变化)。

  • statOut用于保存当前的输出状态。

上升沿扫描

  • 程序通过检查输入信号的变化(从低到高)来检测输入信号的上升沿。对于trigger、set、reset信号,分别通过statTriggerOld、statSetOld、statResetOld变量与当前信号的比较,确定是否发生了上升沿。

继电器切换逻辑

  • 当检测到trigger信号的上升沿时,statOut的值在TRUE和FALSE之间切换(即实现脉冲继电器的功能)。

  • set信号的上升沿触发out为TRUE(即设定继电器为 ON)。

  • reset信号的上升沿触发out为FALSE(即设定继电器为 OFF)。

输出逻辑

  • 根据不同的输入信号,输出变量out的状态发生变化。

3  应用场景

LGF_PulseRelay_v2功能块适用于需要脉冲继电器、翻转触发器等控制功能的自动化场景。以下是几个典型应用:

脉冲继电器:在某些控制系统中,需要通过触发信号周期性地切换输出状态,LGF_PulseRelay_v2可以通过trigger输入实现这种脉冲切换功能。

设置与复位功能:通过set和reset信号,可以方便地设定输出状态为 ON 或 OFF,用于实现简单的开关控制。

频率分频器:在需要将输入信号的频率降低时,可以利用该功能块实现频率分频器的功能。

4  拓展思考

LGF_PulseRelay_v2功能块实现的基本控制功能可以通过扩展与其他模块结合,实现更加复杂的控制逻辑。例如,结合计时器、计数器等功能块,可以进一步增强该模块的功能,实现定时触发或计数控制。此外,通过与外部传感器或执行器的结合,能够应用于更多行业,如自动化生产线、智能家居、机器视觉等领域。

总结

LGF_PulseRelay_v2功能块是西门子 LGF 库中的一个非常实用的功能块,适用于脉冲继电器、翻转触发器等多种控制场景。通过简单的输入信号处理,它能够实现复杂的控制逻辑,具有较高的灵活性和可重用性。掌握该功能块的使用,不仅可以提高 PLC 编程的效率,还能够有效简化控制系统的设计和维护。在未来的工程实践中,LGF_PulseRelay_v2有着广泛的应用前景。

希望通过本文的介绍,能够帮助读者更好地理解并应用该功能块,在实际工作中取得更好的成果。

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

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

 

往期回顾

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

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

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

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

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

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

你来出题 我来答|每周一个编程小例子:旋转速度计算

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

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

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

图片

2025年06月