1. 初识Set/Reset功能块:工业控制中的记忆单元
在工业自动化编程中,Set/Reset功能块就像电路中的自锁继电器,它能记住某个事件是否发生过。想象一下工厂里的紧急停止按钮——按下后即使手指松开,系统仍需保持停机状态,这就是典型的置位/复位应用场景。
CoDeSys平台下的FBD(功能块图)编程中,Set/Reset功能块通常表现为两个基本形态:
- SR(Set Dominant):置位优先型
- RS(Reset Dominant):复位优先型
这两种类型的本质区别在于当S和R端同时收到TRUE信号时的输出行为。去年我在给某包装产线做程序升级时,就曾因为选错类型导致整线急停后无法正常恢复,这个教训让我深刻理解了它们的差异。
2. 功能块内部机制深度解析
2.1 信号处理时序模型
Set/Reset功能块的核心是双稳态触发器,其内部状态转换遵循以下规则:
| 输入组合 | SR型输出 | RS型输出 |
|---|---|---|
| S=1 R=0 | Q=1 | Q=1 |
| S=0 R=1 | Q=0 | Q=0 |
| S=1 R=1 | Q=1 | Q=0 |
| S=0 R=0 | 保持前一状态 | 保持前一状态 |
关键经验:在PLC扫描周期中,功能块对输入信号的响应发生在IO刷新阶段之后、程序执行阶段之前。这意味着实际应用中需要考虑信号毛刺的影响。
2.2 典型应用电路对比
通过一个电机启保停电路的两种实现方式,可以直观理解功能块选择:
传统继电器逻辑:
code复制START按钮 → [常开触点]--[线圈M]--[自锁触点]
STOP按钮 → [常闭触点]--/
FBD实现方案:
code复制START → S
STOP → R
[SR]
Q → 电机控制
实测发现,使用功能块实现时程序扫描时间平均减少15%,特别是在复杂逻辑中优势更明显。
3. 工程实践中的高级应用技巧
3.1 脉冲信号处理方案
在传感器信号采集时,常遇到需要捕捉短脉冲的情况。这时可以构建如下电路:
code复制脉冲信号 → [上升沿检测] → S
定时器 → [
