TIA Portal 指令

位逻辑运算
接点、线圈和边沿检测

PLC 编程的核心。位逻辑指令处理每一个布尔运算 —— 从简单的接点和线圈到触发器和边沿检测。掌握这些,您就可以构建任何自动化逻辑。

什么是位逻辑运算?

位逻辑运算是 PLC 编程中最基本的指令。它们处理布尔信号(TRUE/FALSE,1/0) —— 读取输入状态,使用 AND/OR 逻辑组合条件并控制输出。在 LAD 中,它们表现为梯级上的接点和线圈。在 FBD 中,它们表现为 AND/OR/NOT 逻辑门方框。

每个 PLC 程序都广泛使用位逻辑指令。电机启动/停止电路、报警条件、阀门联锁 —— 它们都始于读取传感器状态的接点,终于驱动执行器的线圈。

接点 —— 读取输入状态

接点读取变量的布尔状态并将其传递给逻辑链

常开接点 (Normally Open)

—| |—
F9

功能描述

读取布尔变量 (BOOL)。如果变量为 TRUE (1),接点闭合并将能流 (RLO = TRUE) 传递到下一个元素。如果变量为 FALSE (0),接点断开并阻断能流。这是 LAD 编程中最常用的指令。

何时使用

每当您需要检查条件是否为 TRUE 时:按钮是否按下?传感器是否激活?标志位是否设置?放置一个常开接点并为其分配您的变量。

专业提示

“常开”一词源自继电器逻辑 —— 接点在其正常/静止状态下是断开的(不通电)。通电时闭合。

多个常开接点串联创建 AND (与) 逻辑。并行分支中的多个常开接点创建 OR (或) 逻辑。

在 FBD 中,等效操作只需将 BOOL 变量连接到 AND/OR 方框输入端即可 —— 无需显式的接点符号。

常闭接点 (Normally Closed)

—|/|—
F10

功能描述

常开接点的反操作。如果变量为 FALSE (0),接点闭合并通过能流。如果变量为 TRUE (1),接点断开并阻断能流。它对接点值执行 NOT (非) 运算。

何时使用

当您需要检查条件是否不成立时:急停未按下、无激活故障、未达到限位开关。常用于安全联锁和报警条件。

专业提示

对于急停按钮和安全电路,请使用常闭接点 —— 它们具有故障安全特性。如果导线断开,常闭接点将打开并停止机器。

在 FBD 中,等效操作是取反输入(AND/OR 方框输入引脚上的小圆圈)。

不要将常闭接点指令与物理常闭按钮混淆。它们是独立的概念。

RLO 取反 (NOT)

—|NOT|—

功能描述

取反(否定)当前的逻辑运算结果 (RLO)。如果到此点为止的逻辑链评估为 TRUE,NOT 将其变为 FALSE,反之亦然。它作用于累积的逻辑结果,而不是特定的变量。

何时使用

当您需要取反复杂的逻辑表达式而不是单个变量时。无需使用取反接点重写整个条件,只需在末尾放置 NOT 即可翻转结果。

专业提示

NOT 取反链中该点的整个 RLO —— 它与仅取反一个变量的常闭接点不同。

在 FBD 中,使用 NOT 方框或取反逻辑门的输出。

谨慎使用 —— 过多使用 NOT 会使逻辑难以阅读。通常,重新组织逻辑会更清晰。

线圈 —— 控制输出

线圈将逻辑链的结果写入输出变量

赋值 (Assignment)

—( )—
Shift + F7

功能描述

将当前的 RLO(逻辑运算结果)写入布尔变量。如果逻辑链为 TRUE,则变量变为 TRUE。如果为 FALSE,则变量变为 FALSE。这是标准的输出线圈 —— 它在每个扫描周期直接反映输入逻辑。

何时使用

适用于任何应直接遵循其输入条件的输出。当电机运行时开启指示灯,或者当满足条件时开启阀门。输出跟踪输入 —— 当条件变为 FALSE 时,输出也变为 FALSE。

专业提示

赋值线圈是“非保持性”的 —— 它在每次扫描时写入。如果逻辑变为 FALSE,输出立即变为 FALSE。

一个变量应仅在一个网络中赋值。对同一变量进行多次赋值会导致最后一个胜出,从而引发不可预测的行为。

在 FBD 中,赋值只是将逻辑门的输出连接到 BOOL 变量。

取反赋值 (Negate Assignment)

—(/)—

功能描述

将取反后的 RLO 写入布尔变量。如果逻辑链为 TRUE,变量变为 FALSE。如果逻辑链为 FALSE,变量变为 TRUE。它在一个指令中结合了赋值 + NOT 运算。

何时使用

当输出应在相反条件下激活时。例如,当检测到故障时关闭“系统正常”指示灯。无需取反整个逻辑链,使用取反线圈即可。

专业提示

相当于在普通赋值线圈前放置一个 NOT,但更紧凑。

谨慎使用 —— 取反线圈可能读起来很困惑。有时重新组织逻辑更清晰。

在 FBD 中,这是一个取反的输出连接。

复位输出 (Reset)

—(R)—

功能描述

当 RLO 为 TRUE 时,变量被设置为 FALSE (0)。当 RLO 为 FALSE 时,变量保持不变(保留当前值)。这是一个单向操作 —— 只能关闭,不能开启。

何时使用

在置位/复位电路中:一个网络置位输出(开启),另一个复位它(关闭)。将复位用于停止条件、故障清除和报警确认。在安全逻辑中,复位通常具有优先级。

专业提示

复位仅在其 RLO 为 TRUE 时起作用。当 RLO 为 FALSE 时,输出保持不变 —— 它不会将其设置为 TRUE。

在 S/R 对中,如果两个条件同时为 TRUE,则程序中最后出现的指令具有优先级。

复位是保持性的 —— 复位后,输出保持 FALSE,直到再次被显式置位。

置位输出 (Set)

—(S)—

功能描述

当 RLO 为 TRUE 时,变量被设置为 TRUE (1)。当 RLO 为 FALSE 时,变量保持不变(保留当前值)。这是一个单向操作 —— 只能开启,不能关闭。

何时使用

在置位/复位电路中:将置位用于启动条件、锁存信号和首次运行标志。一旦置位,输出将保持 TRUE,直到被显式复位 —— 这使其具有“自锁”功能,无需密封接点。

专业提示

置位仅在其 RLO 为 TRUE 时起作用。当 RLO 为 FALSE 时,输出保持不变 —— 它不会复位它。

经典电机控制:网络 1 = 启动按钮 → 置位电机。网络 2 = 停止按钮或故障 → 复位电机。

在安全电路中注意保持性变量 —— 电力循环后,置位输出可能会保留其最后状态,具体取决于数据块 (DB) 的设置。

位字段操作

在单个操作中置位或复位一系列位

SET_BF — 置位位字段

功能描述

从指定地址开始,将一组连续的位设置为 TRUE。您可以定义起始位和要置位的位数。当 RLO 为 TRUE 时,所有指定的位都设置为 1。

何时使用

当您需要同时激活多个相关输出时 —— 例如,设置状态字的所有位、初始化一组标志或一次激活一组输出。

专业提示

适用于批量操作,而不是为每个位编写单独的置位指令。

位数参数决定了受影响的连续位数。

与置位一样,这仅在 RLO 为 TRUE 时起作用 —— 当 RLO 为 FALSE 时,位保持不变。

RESET_BF — 复位位字段

功能描述

从指定地址开始,将一组连续的位重置为 FALSE。您可以定义起始位和要复位的位数。当 RLO 为 TRUE 时,所有指定的位都清除为 0。

何时使用

当您需要一次清除多个标志或输出时 —— 例如,清除状态字中的所有报警位、在停机期间复位一组输出或初始化数据区域。

专业提示

SET_BF 的对应指令 —— 将它们一起用于组级置位/复位操作。

特别适用于在单个操作中清除报警字或状态寄存器。

与复位一样,这仅在 RLO 为 TRUE 时起作用 —— 当 RLO 为 FALSE 时,位保持不变。

触发器 —— 锁存电路

记忆其状态直到显式更改的双稳态元件

SR — 置位/复位触发器

功能描述

具有置位优先级的双稳态触发器。它有两个输入:S (置位) 和 R (复位),以及一个输出 Q。当 S=TRUE 时,Q 变为 TRUE。当 R=TRUE 时,Q 变为 FALSE。当 S 和 R 同时为 TRUE 时,Q 为 TRUE(置位优先)。

何时使用

适用于应具有置位优先级的锁存电路。在 SR 触发器中,如果同时按下启动和停止,输出将保持开启。当“启动优先”可接受时使用此项。

专业提示

SR = 置位优先。如果 S=1 且 R=1 → Q=1。当启动比停止更重要时使用。

在安全要求较高的应用中,优先选择 RS(复位优先) —— 如果两个条件同时触发,它更安全。

触发器在 LAD 和 FBD 中都是具有 S、R 输入和 Q 输出的单个方框。

RS — 复位/置位触发器

功能描述

具有复位优先级的双稳态触发器。它有两个输入:R (复位) 和 S (置位),以及一个输出 Q。当 S=TRUE 时,Q 变为 TRUE。当 R=TRUE 时,Q 变为 FALSE。当 R 和 S 同时为 TRUE 时,Q 为 FALSE(复位优先)。

何时使用

适用于安全至上的锁存电路。复位(停止)条件具有优先级 —— 如果启动和停止同时激活,输出为 OFF。这是电机控制和安全联锁的标准选择。

专业提示

RS = 复位优先。如果 S=1 且 R=1 → Q=0。对于大多数工业应用来说是更安全的选择。

经典电机控制模式:S = 启动按钮 AND 无故障,R = 停止按钮 OR 急停 OR 故障。

输出 Q 在扫描周期内是保持性的 —— 它保留其值直到触发器被再次评估。

边沿检测 —— 检测信号变化

检测信号何时从 FALSE→TRUE 或 TRUE→FALSE 转换

扫描操作数的上升沿

—|P|—

功能描述

检测特定操作数上的上升沿(FALSE→TRUE 转换)。指令将当前值与上一次扫描的值进行比较。如果值从 0 变为 1,RLO 在正好一个扫描周期内为 TRUE。需要一个边沿存储位 (M 位) 来存储上一个状态。

何时使用

当您需要从持续信号中获得单次脉冲时:计算按钮按下次数、在电平变化时触发单个动作、每次激活时递增计数器。如果没有边沿检测,按住的按钮将在每个扫描周期触发动作。

专业提示

您必须分配一个唯一的边沿存储位 (M 位) —— 不要为多个边沿检测重用同一个 M 位,否则它们会相互干扰。

输出在正好一个 PLC 扫描周期内为 TRUE(通常为 1-50ms)。如果您需要更长的脉冲,请使用定时器。

在 LAD 中,这表现为带有 'P' 标记的接点。M 位变量显示在接点的上方/下方。

扫描操作数的下降沿

—|N|—

功能描述

检测特定操作数上的下降沿(TRUE→FALSE 转换)。指令将当前值与上一次扫描的值进行比较。如果值从 1 变为 0,RLO 在正好一个扫描周期内为 TRUE。需要一个边沿存储位。

何时使用

当您需要对信号关闭做出反应时:检测按钮何时松开、在传感器断开时触发、或捕获工艺步骤完成的时刻。

专业提示

与上升沿相同的规则 —— 每个下降沿检测都需要自己唯一的 M 位。

适用于“按钮松开”动作:在按钮松开而非按下时启动定时器。

在停机序列中,使用下降沿检测每个步骤何时完成(输出从 ON 变为 OFF)。

在上升沿置位操作数

—(P)—

功能描述

当在 RLO 上检测到上升沿(FALSE→TRUE)时,将指定操作数置位(写入 TRUE)一个扫描周期。在单个指令中结合了边沿检测和输出赋值。

何时使用

当您想在上升沿将标志位或输出设置为正好一个扫描周期,而无需单独的边沿检测接点和线圈时。

专业提示

这是一种线圈型指令 —— 它位于梯级的末尾,而不是中间。

与接点版本一样需要边沿存储位。

操作数仅在一个扫描周期内为 TRUE,然后自动返回 FALSE。

在下降沿置位操作数

—(N)—

功能描述

当在 RLO 上检测到下降沿(TRUE→FALSE)时,将指定操作数置位(写入 TRUE)一个扫描周期。在单个指令中结合了下降沿检测和输出赋值。

何时使用

当您想在下降沿将标志位或输出设置为正好一个扫描周期。适用于触发停用后的动作。

专业提示

线圈型指令 —— 放置在梯级的末尾。

需要自己唯一的边沿存储位。

常用于工艺停止时应发生一次的“清理”动作。

P_TRIG — 扫描 RLO 的上升沿

功能描述

检测 RLO(逻辑运算结果)而非特定操作数上的上升沿。当组合逻辑结果从 FALSE 转换为 TRUE 时,输出在一个扫描周期内为 TRUE。边沿存储在指令实例内。

何时使用

当您想检测复杂逻辑组合而非单个变量的上升沿时。例如:检测 (传感器1 AND 传感器2 AND 无故障) 何时首次变为 TRUE。

专业提示

P_TRIG 作用于累积的 RLO —— 它检测其之前整个逻辑链的边沿。

边沿存储内置于指令中 —— 无需单独的 M 位。

在 FBD 中,P_TRIG 是一个具有 CLK 输入和 Q 输出的方框。

N_TRIG — 扫描 RLO 的下降沿

功能描述

检测 RLO 上的下降沿。当组合逻辑结果从 TRUE 转换为 FALSE 时,输出在一个扫描周期内为 TRUE。边沿存储在指令实例内。

何时使用

当您想检测复杂条件何时不再为真时。例如:检测 (自动模式 AND 全部就绪) 何时从 TRUE 变为 FALSE。

专业提示

N_TRIG 是 P_TRIG 的下降沿对应指令。

无需单独的 M 位 —— 边沿存储是内部的。

适用于检测组合条件而非单个信号的结束。

R_TRIG — 检测信号上升沿

功能描述

符合 IEC 61131-3 标准的上升沿检测功能块。它具有一个 CLK 输入和一个 Q 输出。当 CLK 从 FALSE 转换为 TRUE 时,Q 在一个扫描周期内为 TRUE。边沿存储在 FB 的实例数据中。

何时使用

当您想要具有自己实例数据的 IEC 标准边沿检测时。R_TRIG 是一个功能块 —— 每个实例自动维护自己的边沿存储。在结构化、可重用的代码中优先使用。

专业提示

R_TRIG 是一个 FB —— 它需要实例数据(可以是自己的 DB,也可以作为父 FB 中的多重实例)。这使其具有自包含和可重用性。

自 V1.0 起在 S7-1200/1500 上可用。这是边沿检测的 IEC 61131-3 标准方式。

在 SCL 中:myRTRIG(CLK := mySignal); IF myRTRIG.Q THEN ... END_IF;

F_TRIG — 检测信号下降沿

功能描述

符合 IEC 61131-3 标准的下降沿检测功能块。它具有一个 CLK 输入和一个 Q 输出。当 CLK 从 TRUE 转换为 FALSE 时,Q 在一个扫描周期内为 TRUE。边沿存储在 FB 的实例数据中。

何时使用

当您想要具有自己实例数据的 IEC 标准下降沿检测时。F_TRIG 是 R_TRIG 的下降沿对应指令。

专业提示

F_TRIG 是具有自己实例的 FB —— 与 R_TRIG 一样,它自包含且符合 IEC 61131-3 标准。

在 SCL 中:myFTRIG(CLK := mySignal); IF myFTRIG.Q THEN ... END_IF;

在编写可重用的库代码时,优先选择 R_TRIG/F_TRIG 而非 |P|/|N| 接点,因为它们不需要外部 M 位。

快速参考 —— 全部 20 个位逻辑指令

#指令LAD 符号快捷键描述
1常开接点 (Normally Open)—| |—F9当变量为 TRUE 时通过能流
2常闭接点 (Normally Closed)—|/|—F10当变量为 FALSE 时通过能流
3RLO 取反 (NOT)—|NOT|—取反逻辑运算结果
4赋值 (Assignment)—( )—Shift + F7将 RLO 写入输出变量
5取反赋值 (Negate Assignment)—(/)—将取反的 RLO 写入输出变量
6复位输出 (Reset)—(R)—当 RLO 为 TRUE 时将变量设置为 FALSE
7置位输出 (Set)—(S)—当 RLO 为 TRUE 时将变量设置为 TRUE
8SET_BF — 置位位字段将一系列位设置为 TRUE
9RESET_BF — 复位位字段将一系列位重置为 FALSE
10SR — 置位/复位触发器置位优先触发器 (S=1,R=1 → Q=1)
11RS — 复位/置位触发器复位优先触发器 (S=1,R=1 → Q=0)
12扫描操作数的上升沿—|P|—检测操作数上的上升沿
13扫描操作数的下降沿—|N|—检测操作数上的下降沿
14在上升沿置位操作数—(P)—在上升沿置位操作数 1 个扫描周期
15在下降沿置位操作数—(N)—在下降沿置位操作数 1 个扫描周期
16P_TRIG — 扫描 RLO 的上升沿检测 RLO 上的上升沿
17N_TRIG — 扫描 RLO 的下降沿检测 RLO 上的下降沿
18R_TRIG — 检测信号上升沿IEC 上升沿检测器 (FB)
19F_TRIG — 检测信号下降沿IEC 下降沿检测器 (FB)

常见问题解答

置位/复位线圈与 SR/RS 触发器有什么区别?

置位 (S) 和复位 (R) 线圈是放置在不同网络中的单个指令 —— 您通过哪个网络排在最后来控制优先级。SR/RS 触发器是具有两个输入的单个方框 —— 优先级是内置的(SR = 置位优先,RS = 复位优先)。触发器更紧凑且优先级明确。

我应该使用哪种边沿检测:|P|/|N|、(P)/(N)、P_TRIG/N_TRIG 还是 R_TRIG/F_TRIG?

|P|/|N| 接点检测特定变量的边沿并需要外部 M 位。(P)/(N) 线圈结合了边沿检测与输出赋值。P_TRIG/N_TRIG 检测 RLO(组合逻辑)的边沿。R_TRIG/F_TRIG 是具有内置存储的 IEC 标准 FB。对于可重用的库代码,优先选择 R_TRIG/F_TRIG。对于简单的内联逻辑,|P|/|N| 接点即可。

为什么我的置位/复位电路表现异常?

最常见的原因是置位和复位条件同时为 TRUE。在这种情况下,程序中最后一条指令胜出。如果您的复位网络在置位网络之前,输出将被置位。解决方案:对于安全关键电路使用 RS 触发器(复位优先),或确保您的条件是互斥的。

边沿检测可以作用于模拟值还是仅限 BOOL?

边沿检测指令(|P|、|N|、R_TRIG、F_TRIG)仅作用于布尔信号。对于模拟值,您需要先创建一个比较(例如:值 > 阈值)以产生 BOOL 结果,然后对该 BOOL 应用边沿检测。

使用 AI 生成位逻辑

用纯文本描述您的控制逻辑,T-IA Connect 即可生成 PLC 代码 —— 包括接点、线圈、触发器和边沿检测。