CoDeSys入门实战一起学习(二十九):(ST)置位复位(Set/Reset)功能块:从基础到实战应用-CODESYS资源下载区-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

HSC6490-cn中国制造,中国芯~
查看: 349|回复: 0

CoDeSys入门实战一起学习(二十九):(ST)置位复位(Set/Reset)功能块:从基础到实战应用

[复制链接]
  • TA的每日心情
    慵懒
    2017-11-9 20:49
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2026-3-18 11:01:25 | 显示全部楼层 |阅读模式
    深入浅出CODESYS置位复位(Set/Reset)功能块:从基础到实战应用
    在PLC编程领域,置位复位(Set/Reset)功能块是实现逻辑控制的核心元件。尤其在CODESYS环境中,除了RS/SR触发器、边缘检测等功能块外,单一的置位(SET)和复位(RESET)指令也是高频使用的基础指令,二者灵活搭配运用,直接决定了控制程序的稳定性和可读性。本文将从功能块/指令原理入手,结合电机控制、模式选择、故障检测等工业现场实际场景,详解置位复位功能块与指令的应用技巧,帮助工控工程师构建规范、可靠的PLC控制程序。

    一、置位复位核心元件:功能块 vs 单一指令

    CODESYS中实现置位复位逻辑主要有两类核心元件:RS/SR触发器功能块和单一置位/复位指令,二者原理相通但适用场景不同,先明确核心概念才能精准选型。

    1. 核心触发器类型(功能块形式)

    两类触发器的核心差异在于“优先级”,这直接决定了置位(S)和复位(R)信号同时触发时的输出结果,也是选型的关键依据:

    触发器类型

    优先级

    核心逻辑

    典型应用场景

    RS触发器(复位优先)

    复位优先

    置位(S)和复位(R)同时为TRUE时,输出为FALSE

    急停优先的设备控制(如电机启停、安全回路)

    SR触发器(置位优先)

    置位优先

    置位(S)和复位(R)同时为TRUE时,输出为TRUE

    模式选择、流程激活、优先级控制等场景

    2. 单一置位/复位指令(指令形式)

    除了功能块,CODESYS还提供独立的置位(SET)和复位(RESET)指令,直接对BOOL变量进行状态锁定,语法更简洁,适合简单的单条件置复位场景:

    指令类型

    语法格式

    核心逻辑

    典型应用场景

    置位指令(SET)

    SET <变量名>;

    执行指令时,将变量强制设为TRUE并保持,直到被复位指令触发

    单次触发的状态锁定(如报警触发、模式激活)

    复位指令(RESET)

    RESET <变量名>;

    执行指令时,将变量强制设为FALSE并保持,直到被置位指令触发

    状态清除(如报警复位、手动停止)

    3. 边缘检测辅助元件

    边缘检测元件用于捕捉信号的“瞬间变化”,是连接“瞬动按钮”和“持续状态”的桥梁,无论使用功能块还是单一指令,都常搭配边缘检测使用:


    • R_TRIG(上升沿检测):仅在信号从FALSE变为TRUE的瞬间输出一个扫描周期的TRUE,用于捕捉按钮按下、状态切换等瞬动信号。


    • F_TRIG(下降沿检测):仅在信号从TRUE变为FALSE的瞬间输出一个扫描周期的TRUE,用于捕捉按钮松开、状态退出等动作。
    二、基础应用案例:功能块 vs 单一指令对比

    案例1:电机启停控制(RS触发器 vs 单一置复位指令)

    电机控制核心需求是「启动按钮瞬动触发运行,停止/急停按钮优先复位」,我们分别用RS触发器和单一置复位指令实现,对比差异。

    方式1:RS触发器实现(复位优先,安全合规)

    CoDeSys入门实战一起学习(二十九):(ST)置位复位(Set/Reset)功能块:从基础到实战应用-1.png

                            // 核心逻辑:急停信号优先复位
                            MotorRS(SET:=StartButton AND NOT EmergencyStop,  // 启动条件:按下启动且无急停
                                    RESET1:=StopButton OR EmergencyStop);    // 复位条件:停止按钮或急停触发

                            // 输出映射:触发器输出赋值给电机运行信号
                            MotorRun := MotorRS.Q1;  

                            // 故障指示:急停触发时点亮故障灯
                            MotorFault := EmergencyStop;

    CoDeSys入门实战一起学习(二十九):(ST)置位复位(Set/Reset)功能块:从基础到实战应用-2.png


    方式2:单一置复位指令实现(语法简洁,适合简单场景)

    CoDeSys入门实战一起学习(二十九):(ST)置位复位(Set/Reset)功能块:从基础到实战应用-3.png

                            // 边缘检测:捕捉按钮瞬动信号
                            StartTrig(CLK:=StartButton);
                            StopTrig(CLK:=StopButton);

                            // 核心逻辑:置复位指令实现状态锁定
                            // 急停优先:急停触发时直接复位
                            IF EmergencyStop THEN
                                RESET MotorRun;        // 急停强制复位
                                MotorFault := TRUE;
                            ELSE
                                MotorFault := FALSE;
                                // 启动按钮上升沿:置位电机运行
                                IF StartTrig.Q THEN
                                    SET MotorRun;
                                END_IF
                                // 停止按钮上升沿:复位电机运行
                                IF StopTrig.Q THEN
                                    RESET MotorRun;
                                END_IF
                            END_IF

    CoDeSys入门实战一起学习(二十九):(ST)置位复位(Set/Reset)功能块:从基础到实战应用-4.png


    关键对比说明:


    • RS触发器:适合安全优先场景,内置“复位优先”逻辑,无需额外判断,符合工业安全规范,代码可读性更高;


    • 单一置复位指令:语法更简洁,适合简单的单条件置复位场景,但需手动处理优先级(如急停优先),代码量略多;


    • 核心共性:都需要搭配边缘检测(R_TRIG)捕捉瞬动按钮,避免按钮持续按下导致逻辑异常。
    案例2:设备运行模式选择(SR触发器 + 单一置复位指令)

    设备模式选择(自动/手动)需要「模式切换后保持状态,且自动模式优先」,结合SR触发器的优先级特性和单一置复位指令的简洁性实现:

    CoDeSys入门实战一起学习(二十九):(ST)置位复位(Set/Reset)功能块:从基础到实战应用-5.png

                            // 模式选择核心逻辑:自动模式优先(SR触发器)
                            ModeSR(S1:=AutoModeBtn, R:=ManualModeBtn, Q1=>AutoMode);
                            ManualMode := NOT AutoMode;  // 自动/手动互斥

                            // 系统就绪判断:自动模式且无复位
                            SystemReady := AutoMode AND NOT ResetBtn;

                            // 上升沿检测:自动模式切换时执行初始化
                            AutoTrig(CLK:=AutoModeBtn);
                            IF AutoTrig.Q THEN
                                // 单一置位指令:标记初始化完成(避免重复执行)
                                SET AutoInitDone;
                            END_IF
                            // 复位按钮触发:复位初始化标记
                            IF ResetBtn THEN
                                RESET AutoInitDone;
                            END_IF

    CoDeSys入门实战一起学习(二十九):(ST)置位复位(Set/Reset)功能块:从基础到实战应用-6.png


    关键说明:


    • SR触发器负责模式状态的“优先锁定”,单一置复位指令负责初始化标记的“单次锁定”,分工明确;


    • AutoInitDone通过置位指令标记初始化完成,复位指令清除标记,避免模式切换后重复执行初始化逻辑。
    +10
    不赞一个?
    打赏鼓励一下!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|Archiver|手机版|小黑屋|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

    GMT+8, 2026-10-9 17:43 , Processed in 0.137139 second(s), 49 queries .

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

    快速回复 返回顶部 返回列表