2024年3月15日发(作者:笪鸾)
浮点算术运算指令
参数
数据类型
内存区域
描述
EN BOOL I
、
Q
、
M
、
D
、
L
、使能输入
T
、
C
IN REAL I
、
Q
、
M
、
D
、
L
或编号
常数
OUT REAL I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
该数的反余弦
使能输出
符号
TAN
EN
OUT
INENO
参数
数据类型
内存区域
描述
EN BOOL I
、
Q
、
M
、
D
、
L
、使能输入
T
、
C
IN REAL I
、
Q
、
M
、
D
、
L
或编号
常数
OUT REAL I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
该数的正切
使能输出
符号
ATAN
ENOUT
IN
ENO
参数
数据类型
内存区域
描述
EN BOOL I
、
Q
、
M
、
D
、
L
、使能输入
T
、
C
IN REAL I
、
Q
、
M
、
D
、
L
或编号
常数
OUT REAL I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
该数的反正切
使能输出
8-14
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
9 传送指令
9.1 MOVE:赋值
符号
MOVE
EN
IN
OUT
ENO
参数
数据类型
内存区域
描述
EN BOOL I
、
Q
、
M
、
D
、
L
、使能输入
T
、
C
IN
长度为
8
、
16
或
32
位的所有基本
数据类型
长度为
8
、
16
或
32
位的所有基本
数据类型
I
、
Q
、
M
、
D
、
L
或来源值
常数
I
、
Q
、
M
、
D
、
L OUT
目标地址
ENO BOOL I
、
Q
、
M
、
D
、
L
使能输出
描述
使用赋值指令,可将特定的值赋给变量。
在
IN
输入端指定的值将复制到在
OUT
输出端指定的地址。
ENO
具有与
EN
相
同的信号状态。
使用
MOVE
框,赋值指令可复制长度为
8
、
16
或
32
位的所有基本数据类型。用
户自定义的数据类型
(
例如数组或结构
)
则必须使用系统功能
SFC 20
“
BLKMOV
”复制。
赋值指令受主控继电器
(MCR)
的影响。关于
MCR
如何起作用的更详细信息,请
参考主控继电器开
/
关。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 - - - - 0 1 1 1
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
9-1
传送指令
注意
将某个值传送给另一长度的数据类型时,将根据需要截断或以零填充高位字节:
举例:双字
传送
到双字:
到字节:
到字:
1111 1111 0000 1111
0000 1111
1111 0000
1111 0000
1111 0000
0101 0101
0101 0101
0101 0101
结果
1111 1111
0101 0101
举例:字节
传送
到字节:
到字:
到双字:
1111 0000
结果
1111 0000
0000 0000
0000 0000
0000 0000
0000 0000
1111 0000
1111 0000
举例
MOVE
I 0.0
MW10
EN
IN
OUT
ENO
DBW12
Q 4.0
=
在输入
I0.0
为
1
时执行该指令。结果将
MW10
的内容复制到打开的
DB
的数据
字
12
中。
执行该指令后,会将
Q4.0
置
1
。
9-2
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
10 程序控制指令
10.1 程序控制指令概述
描述
下列指令可用于执行程序控制操作:
•
CALL
:
调用无参数的
FC/SFC
•
CALL_FB
:
以框方式调用
FB
•
CALL_FC
:
以框方式调用
FC
•
CALL_SFB
:
以框方式调用系统
FB
•
CALL_SFC
:
以框方式调用系统
FC
• 调用多重背景
• 从库中调用块
• 主控继电器指令
• 使用
MCR
函数的重要注意事项
•
MCR<
主控继电器打开
•
MCR>
主控继电器关闭
•
MCRA
主控继电器激活
•
MCRD
主控继电器去活
•
RET
返回
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
10-1
程序控制指令
10.2 CALL:调用无参数的FC/SFC
符号
编号 > CALL 参数 数据类型 内存区域 描述 FC 或 SFC 的编号 ( 例如, FC10 或 SFC59) 。可 用的 SFC 取决于 CPU 。 编号 BLOCK_FC - 只能在 FB 而不能在 FC 中进行数据类型为 BLOCK_FC 的参数作为地址的条件调用。 描述 通过调用不带参数的FC/SFC指令,可以调用没有参数的功能 (FC) 或系统功能 (SFC) 。这种调用是条件调用还是无条件调用取决于调用前面的逻辑运算 ( 参见举 例 ) 。 在功能 (FC) 的代码段,不能为条件调用将类型为 BLOCK_FC 的任何参数指定为 地址。然而,可以在功能块 (FB) 中将 BLOCK_FC 类型的参数指定为地址。 只有当 RLO 为 1 时,才执行条件调用。当没有执行条件调用时,调用指令后的 RLO 为 0 。当执行了该指令后,执行下列功能: • 保存要求返回调用块的地址。 • 保存数据块寄存器 ( 数据块和背景数据块 ) 。 • 将 MA 位 ( 有效 MCR 位 ) 写入到块堆栈 (BSTACK) 中。 • 为被调用的 FC 或 SFC 创建新的本地数据范围。 然后在被调用块中继续执行程序。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 条件调用 无条件调用 写 - - - - 0 0 1 1 0 写 - - - - 0 0 1 - 0 10-2 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 举例 DB 10 OPN MCRA FC 10 CALL Q 4.0 I 0.0 = MCRD FC 11 I 0.1 CALL 当对 FC10 执行无条件调用时, CALL 指令执行下列功能: • 保存要求返回当前 FB 的地址。 • 为 DB10 和 FB 的背景数据块保存选择器。 • 将在 MCRA 指令中设置成 1 的 MA 位压入块堆栈 (BSTACK) ,然后为被调用 的 FC10 将该位复位成 0 继续在 FC10 中执行程序。如果要在 FC10 中使用 MCR 函数,那么必须在此重 新激活该功能。当完成 FC10 时,程序执行返回到调用 FB 。恢复 MA 位。 DB10 和用户自定义的 FB 的背景数据块重新成为当前 DB ,而与 FC10 使用了哪个 DB 无关。 从 FC10 返回跳转后,将输入 I0.0 的信号状态分配给输出 Q4.0 。 FC11 的调用为 条件调用。只有在输入 I0.1 的信号状态为 1 时才执行调用。如果执行该调用,那 么该功能与调用 FC10 相同。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-3 程序控制指令 10.3 CALL_FB:以框方式调用FB 符号 FB no. ENENO 该符号取决于功能块 ( 是否存在参数以及存在多少个参数 ) 。必须存在 EN 、 ENO 和 FB 的名称或编号。 参数 数据类型 内存区域 描述 使能输入 使能输出 FB/DB 编号,范围取决于 CPU EN BOOL I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D FB 编号 DB 编号 BLOCK_FB BLOCK_DB - - 描述 当 EN 的信号状态为 1 时,执行CALL_FB ( 以框方式调用 FB) 。当执行 CALL_FB 指令调用时: • 保存调用块的返回地址, • 保存当前打开的两个数据块 (DB 和背景 DB) 的选择数据, • 为被调用的功能块创建一个新的本地数据范围。 • 将 MA 位 ( 有效 MCR 位 ) 压入到 BSTACK 中。 状态字 BRCC 1 CC 0 OV OS OR STA RLO FC 条件调用 无条件调用 写 X - - - 0 0 X X X 写 - - - - 0 0 X X X 10-4 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 举例 程序段 1 DB 10 OPN 程序段 2 MCRA 程序段 3 DB 11 FB11 ENENO Q 4.0 = 程序段 4 DB 10 OPN 上面所示的程序段为由用户创建的功能块中的程序段。在该块中打开 DB10 ,并 激活 MCR 。当执行无条件 FB11 调用时,发生下面情况: 保存调用块的返回地址和 DB10 以及调用功能块的背景数据块的选择数据。由 MCRA 指令设置成 1 的 MA 位被压入到 BSTACK 中,然后为被调用的功能块 FB11 将其设置成 0 。继续在 FB11 中执行程序。当 FB11 需要 MCR 时,必须在 功能块中重新激活 MCR 。必须由 [SAVE] 指令在 BR 位中保存 RLO 的信号状态, 以便评估调用 FB 中的错误。当已经执行了 FB11 时,程序返回调用功能块。恢 复 MA 位,且由用户编写的功能块的背景数据块重新成为打开的数据块。当正确 执行 FB11 时, ENO 的信号状态为 1 ,因此, Q4.0 的状态也为 1 。 注意 通过 FB/SFB 调用,丢失上一个打开数据块的编号。必须重新打开所要求的 DB 。 10.4 CALL_FC (以框方式调用FC) 符号 FC no. ENENO 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-5 程序控制指令 该符号取决于功能 ( 是否存在参数以及存在多少个参数 ) 。必须存在 EN 、 ENO 和 FC 的名称或编号。 参数 数据类型 内存区域 描述 使能输入 使能输出 FC 编号,范围取决于 CPU EN BOOL I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D FC 编号 BLOCK_FC - 描述 CALL_FC ( 以框方式调用 FC) 调用一个功能 (FC) 。当 EN 的信号状态为 1 时,执 行该调用。当执行 CALL_FC 指令时: • 保存调用块的返回地址, • 为被调用的功能创建一个新的本地数据范围。 • 将 MA 位 ( 有效 MCR 位 ) 压入到 BSTACK 中。 最后,在被调用功能中继续执行程序。 检查 BR 位,以确定 ENO 。用户必须在被调用块 [SAVE] 中将所要求的信号状态 ( 错误评估 ) 赋值给 BR 位。 当调用一个功能,而被调用块的变量声明表中含有 IN 、 OUT 和 IN_OUT 声明时 ,这些变量以形式参数列表添加到调用块的程序中。 当调用功能时,必须在调用位置处将实际参数赋值给形式参数。功能声明中的任 何初始值都没有意义。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 条件调用 无条件调用 写 X - - - 0 0 X X X 写 - - - - 0 0 X X X 10-6 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 举例 程序段 1 DB 10 OPN 程序段 2 MCRA 程序段 3 FC 10 ENENO FC 11 ENENO Q 4.0 = 上面所示的程序段为由用户创建的功能块中的程序段。在该块中打开 DB10 ,并 激活 MCR 。当执行无条件 FC1 调用时,发生下面情况: 保存调用功能块的返回地址和 DB10 以及调用功能块的背景数据块的选择数据。 由 MCRA 指令设置成 1 的 MA 位被压入到 BSTACK 中,然后为被调用块 FC10 将其设置成 0 。继续在 FC10 中执行程序。当 FC10 要求 MCR 时,必须在 FC10 中重新激活 MCR 。必须由 [SAVE] 指令在 BR 位中保存 RLO 的信号状态,以便评 估调用 FB 中的错误。当已经执行了 FC10 时,程序返回调用功能块。恢复 MA 位。已经执行 FC10 后,根据 ENO 的信号状态,在调用 FB 中继续执行程序, 执行情况如下: ENO = 1 执行 FC11 ENO = 0 在下一个程序段中启动程序 正确执行了 FC11 时,将 ENO 设置成 1 ,因此也将 Q4. 0设置成。 注意 程序返回调用块后,不能始终确保重新打开上一次打开的 DB 。请参见自述文件中的 注意事项。 10.5 CALL_SFB:以框方式调用系统FB 符号 SFB no. ENENO 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-7 程序控制指令 该符号取决于系统功能块 ( 是否存在参数以及存在多少个参数 ) 。必须存在 EN 、 ENO 和 SFB 的名称或编号。 参数 数据类型 内存区域 描述 EN BOOL I 、 Q 、 M 、 L 、使能输入 D ENO BOOL I 、 Q 、 M 、 L 、使能输出 D SFB 编号 DB 编号 BLOCK_SFB - BLOCK_DB - SFB/DB 编号,范围取决于 CPU 描述 当 EN 的信号状态为 1 时,执行CALL_SFB ( 以框方式调用 SFB) 。当执行 CALL_SFB 指令调用时: • 保存调用块的返回地址, • 保存当前打开的两个数据块 (DB 和背景 DB) 的选择数据, • 为被调用的系统功能块创建一个新的本地数据范围。 • 将 MA 位 ( 有效 MCR 位 ) 压入到 BSTACK 中。 最后,在被调用的系统功能块中继续执行程序。当调用该功能且没有发生错误时 , ENO 为 1 。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 条件调用 无条件调用 写 X - - - 0 0 X X X 写 - - - - 0 0 X X X 10-8 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 举例 程序段 1 DB 10 OPN 程序段 2 MCRA 程序段 3 DB 8 SFB 8 EN . . . . . . . . . . ENO Q 4.0 = 程序段 4 DB 10 OPN 上面所示的程序段为由用户创建的功能块中的程序段。在该块中打开 DB10 ,并 激活 MCR 。当执行无条件 SFB8 调用时,发生下面情况: 保存调用块的返回地址和 DB10 以及调用功能块的背景数据块的选择数据。由 MCRA 指令设置成 1 的 MA 位被压入到 BSTACK 中,然后为被调用的系统功能 块 SFB8 将其设置成 0 。继续在 SFB8 中执行程序。当已经执行了 SFB8 时,程 序返回调用功能块。恢复 MA 位,且由用户编写的功能块的背景数据块重新成为 当前数据块。当正确执行 SFB8 时, ENO 的信号状态为 1 ,因此, Q4.0 的状态 也为 1 。 注意 通过 FB/SFB 调用,丢失了上一个打开数据块的编号。必须重新打开所要求的 DB 。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-9 程序控制指令 10.6 CALL_SFC (以框方式调用系统FC) 符号 SFC no. ENENO 该符号取决于是否存在参数以及存在多少个参数。必须存在 EN 、 ENO 和 SFC 的名称或编号。 参数 数据类型 内存区域 描述 使能输入 使能输出 I 、 Q 、 M 、 L 、 D EN BOOL I 、 Q 、 M 、 L 、 D ENO BOOL - SFC 编号,范围取决于 CPU SFC 编号 BLOCK_SFC 描述 CALL_SFC ( 以框方式调用系统 FC) 调用一个系统功能。当 EN 的信号状态为 1 时,执行该调用。当执行 CALL_SFC 指令时: • 保存调用块的返回地址, • 为被调用的系统功能创建一个新的本地数据范围。 • 将 MA 位 ( 有效 MCR 位 ) 压入到 BSTACK 中。 最后,在被调用的系统功能中继续执行程序。当调用该功能且没有发生错误时, ENO 为 1 。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 条件调用 无条件调用 写 X - - - 0 0 X X X 写 - - - - 0 0 X X X 10-10 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 举例 程序段 1 DB 10 OPN 程序段 2 MCRA 程序段 3 SFC 20 EN DBDW12SCRBLK RET_VAL DSTBLK ENO MW10 Q 4.0 = 上面所示的程序段为由用户创建的功能块中的程序段。在该块中打开 DB10 ,并 激活 MCR 。当执行无条件 SFC20 调用时,发生下面情况: 保存调用块的返回地址和 DB10 以及调用功能块的背景数据块的选择数据。由 MCRA 指令设置成 1 的 MA 位被压入到 BSTACK 中,然后为被调用块 SFC20 将其设置成 0 。继续在 SFC20 中执行程序。当已经执行了 SFC20 时,程序返回 调用功能块。恢复 MA 位。 已经执行 SFC20 后,根据 ENO 的信号状态,在调用 FB 中继续执行程序,执行 情况如下: ENO = 1 Q4.0 = 1 ENO = 0 Q4.0 = 0 注意 程序返回调用块后,不能始终确保重新打开上一次打开的 DB 。请参见自述文件中的 注意事项。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-11 编程实例 A-8 S7-300和S7-400的功能块图(FBD)编程 5E01112994-01 程序控制指令 主控继电器的定义 主控继电器 (MCR ,参见主控继电器开 / 关 ) 用于激活和去活信号流。 . 去活的信号 流相当于一个写入零数值而不是已计算数值的指令序列,或相当于一个保持现有 存储值不变的指令序列。由下面所示的指令触发的操作取决于 MCR 。 赋值和中间输出指令在 MCR 为 0 时,将 0 写入到存储器中。置位输出和复位输 出指令保持现有数值不变。 受 MCR 区域影响的指令如下: • # : • = : • R : • S : • SR : • RS : 中间输出 赋值 复位输出 设置输出 置位复位触发器 复位置位触发器 • MOVE : 赋值 程序按MCR的指令执行及其如何对MCR信号状态作出反应 MCR 的信号状态 0 ( “关闭” ) 赋值、 中间输出 写入 0 。 置位或 复位输出 不写入。 移动 写入 0 。 ( 掉电时,模仿继电器的 ( 掉电时,模仿仍然保持 ( 掉电时,模仿生成数值 静止状态。 ) 其当前状态的继电器。 ) “ 0 ”的元件。 ) 1 ( “打开” ) 正常执行 正常执行 正常执行 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-13 程序控制指令 10.10 使用MCR函数的重要注意事项 ! 在使用主控继电器以MCRA方式激活块时应注意 • • 去活 MCR 时,为主控继电器打开和主控继电器关闭之间的程序段中的所有赋值写入数值 0 。这对包含一个赋值的所有框都有效,包括传送到块的参数在内。 当 RLO = 0 时 ( 位于主控继电器打开指令前 ) ,去活 MCR 。 ! 危险:PLC处于STOP状态,或未定义的运行时间特性! 编译器还对在 VAR_TEMP 中定义的临时变量后的本地数据进行写访问,以便计算地址。这 表示下列命令序列将把 PLC 设置成 STOP 状态,或导致未定义的运行时间特性: 形式参数存取 • • • • 存取 STRUCT 、 UDT 、 ARRAY 、 STRING 类型的复杂 FC 参数的组件 存取来自具有多重背景能力的块 (V2 版本的块 ) 的 IN_OUT 区域的 STRUCT 、 UDT 、 ARRAY 、 STRING 类型的复杂 FB 参数的组件。 当地址高于 8180.0 时,访问具有多重背景能力 (V2 版本的块 ) 的功能块的参数。 在具有多重背景能力 (V2 版本的块 ) 的功能块访问类型为 BLOCK_DB 的参数,打开 DB0 。任何后继数据存取都会将 CPU 设置成 STOP 状态。 T 0 、 C 0 、 FC0 或 FB0 也经常用 于 TIMER 、 COUNTER 、 BLOCK_FC 和 LOCK_FB 。 通过调用可传递参数。 梯形图或 FBD 中的 T 分支和中间输出从 RLO = 0 开始。 参数传递 • • LAD/FBD 纠正方法 从上述命令对 MCR 的依赖性,来解题: 1. 在语句或程序段出现问题之前利用主控继电器去激活指令,可以去活主控继电器。 2. 在语句或程序段出现问题之后,利用主控继电器激活指令,可以再次激活主控继电器。 10-14 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 10.11 MCR:主控继电器开/关 使用 MCR 函数的重要注意事项 符号 MCR< MCR打开 主控继电器打开 (MCR<) 指令将触发一个在 MCR 堆栈中保存 RLO 并打开一个 MCR 区域的操作。打开 MCR 区域时,保存在 MCR 堆栈中的 RLO 将会对 MCR 指令中所示的指令产生影响。 MCR 堆栈的工作形式如同 LIFO ( 后入先出 ) 缓冲区。只能使用 8 个输入项。当堆 栈已满时,主控继电器打开指令产生一个 MCR 堆栈故障 (MCRF) 。 符号 MCR> MCR关闭 主控继电器关闭 (MCR>) 指令关闭最后打开的 MCR 区域。该指令通过从 MCR 堆 栈中移除 RLO 条目完成该操作。 RLO 由主控继电器打开指令保存在栈内。在 LIFO( 后入先出 )MCR 堆栈的另一端释放的输入项被设置成 1 。 当堆栈已空时,主控继电器关闭指令产生一个 MCR 堆栈故障 (MCRF) 。 MCR堆栈 MCR 由 1 位宽和 8 位深的堆栈控制。只要堆栈中的所有 8 个输入项都等于 1 , MCR 就被激活。 MCR< 指令将 RLO 位复制到 MCR 堆栈中。 MCR> 指令从堆栈 中删除最后一个输入项,然后将已释放的堆栈地址设置成 1 。 如果发生错误,例如,当连续出现多于 8 个 MCR> 指令,或在堆栈为空时尝试执 行 MCR> 指令时,将触发 MCRF 出错消息。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-15 程序控制指令 MCR 堆栈的监视基于堆栈指针 (MSP : 0 = 空; 1 = 1 个输入项; 2 = 2 个输入项 ; ... 、 8 = 8 个输入项 ) 。 RLOShifted Bit 1 2 3 4 5 6 7 8 MSP RLO RLO RLO Shifted Bit 1 MA MCRA 10 MCRD MSP = MCR stack pointer MA = Bit controlling MCR dependency MCR<指令采用 RLO 的信号状态,并将它复制到 MCR 位中。 MCR>指令无条件将 MCR 位设置成 1 。由于该特性, MCRA 和 MCRD 指令之间 的每个其它指令都独立于 MCR 位操作。 嵌套指令MCR<和MCR> 可以嵌套MCR<和MCR>指令。最大嵌套深度为 8 个,也就是说,在插入一个 MCR> 指令之前,最多可以连续写入 8 个 MCR< 指令。必须编写相同数目的 MCR< 和 MCR> 指令。 当嵌套了 MCR< 指令时,形成较低嵌套级别的 MCR 位。然后, MCR< 指令根据 与运算真值表组合当前 RLO 与当前的 MCR 位。 当 MCR> 指令完成一个嵌套级别时,它从一个较高的级别读取 MCR 位。 10-16 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - 0 1 - 0 举例 MCRA I 0.0 I 0.1 MCR< MCR< Q 4.0 I 0.3 S MCR> Q 4.1 I 0.4 = MCR> MCRD 当MCRA指令激活 MCR 函数时,可以最多创建 8 个嵌套的 MCR 区域。在该例 中,有两个 MCR 区域。第一个 MCR> 指令与第二个 MCR< 指令一起使用。第二 组 MCR 括号 (MCR 之间的所有指令都属于第二个 MCR 区域。按如下执 行操作 • 当 I0.0 = 1 时:将输入 I0.4 的信号状态赋值给输出 Q4.1 。 • 当 I0.0 = 0 时:输出 Q4.1 的信号状态为 0 ,与输入 I0.4 的信号状态无关。输 出 Q4.0 保持不变,与输入 I0.3 的信号状态无关。 • 当 I0.0 = 1 且 I0.1 = 1 时:当 I0.3 = 1 且 Q4.1 =I0.4 时,将输出 Q4.0 设置成 1 。 • 当 I0.1 = 0 时:输出 Q4.0 保持不变,与输入 I0.3 和输入 I0.0 的信号状态无关 。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-17 程序控制指令 10.12 MCRA/MCRD:主控继电器激活/去活 使用 MCR 函数的重要注意事项 符号 MCRA 激活MCR 通过激活主控继电器指令,可以生成依赖于 MCR 的后继命令。输入该命令后, 可以使用这些指令对 MCR 区域进行编程 ( 参见主控继电器开 / 关 ) 。当程序激活一 个 MCR 区域时,所有 MCR 操作都取决于 MCR 堆栈的内容。 符号 MCRD 去活MCR 通过去活主控继电器指令,后继命令不再与 MCR 有关。执行该指令后,不能再 对任何 MCR 区域进行编程。当程序去活一个 MCR 区域时, MCR 始终处于通电 状态,这与 MCR 堆栈中的条目无关。 MCR 堆栈和控制其依赖性的位 (MA 位 ) 与单个级别有关,必须在每次改变顺序级 别时保存并读取它们。在每个顺序级别开始处预置它们 ( 将 MCR 输入位 1 - 8 设 置成 1 ,将 MCR 堆栈指针设置成 0 ,将 MA 位设置成 0) 。 在块与块之间传送 MCR 堆栈,且在每次调用块时,保存 MA 位并将其设置成 0 。在块结束处重新读取 MA 位。 MCR 可以按优化生成代码的 CPU 的运行时间的方式执行。这是因为,块不传递 MCR 的依赖性;必须由一个 MCR 指令显式激活。生成代码的 CPU 识别该指令 ,并生成估算 MCR 堆栈所需的附加代码,直到它识别 MCR 指令或到达块结束 处。当指令超出 MCRA/MCRD 范围时,不会增加运行时间。 MCRA和MCRD指令必须始终在程序内成对使用。 10-18 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 激活和去活MCR区域 在 MCRA 和 MCRD 之间编程的操作取决于 MCR 位的信号状态。在 MCRA- MCRD 序列外进行编程的操作不依赖于 MCR 位的信号状态。如果丢失 MCRD 指令,那么在 MCRA 和 BEU 指令之间编程的操作取决于 MCR 位。 OB1 FBx FCy MCRA MCRA MCRA MCRD Call FCy Call FBx MCRD MCRA BEU BEU Instructions not dependent on the MCR bit Instructions dependent on the MCR bit BEU is an STL statement 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-19 程序控制指令 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - - - - - 举例 MCRA I 0.0 MCR< Q 4.0 I 0.3 S Q 4.1 I 0.4 = MCR> MCRD MCRA 指令激活 MCR 函数,直到下一个 MCRD 指令执行。根据 MA 位 ( 在此为 I0.0) 处理 MCR< 和 MCR> 之间的指令: • 当输入 I0.0 的信号状态为 1 时: - 当输入 I0.3 的信号状态为 1 时,将输出 Q4.0 设置成 1 。 - 当输入 I0.3 的信号状态为 0 时,输出 Q4.0 保持不变。 - 将输入 I0.4 的信号状态赋值给输出 Q4.1 。 • 当输入 I0.0 的信号状态为 0 时: - 输出 Q4.0 保持不变,与输入 I0.3 的信号状态无关。 - 输出 Q4.1 为 0 ,与输入 I0.4 的信号状态无关。 必须在块中自行编写功能 (FC) 和功能块 (FB) 的依赖性。当从一个 MCRA/MCR 序 列调用该功能或功能块时,不是该序列内的所有指令都自动与 MCR 位相关。为 此,使用被调用块的 MCRA 指令。 10-20 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 10.13 RET:返回 符号 RET 描述 可使用返回指令来退出块。可以有条件地退出块。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 * - - - 0 0 1 1 0 * 在“ SAVE ; BEC ,”序列中内部显示RET操作。这还将影响到 BR 位 举例 E 0.0RET 当输入 I0.0 的信号状态为 1 时,会退出块。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-21 程序控制指令 10-22 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11 移位和循环移位指令 11.1 移位指令 11.1.1 移位指令概述 描述 可使用移位指令逐位向左或向右移动输入端 IN 的内容 ( 另请参见 CPU 寄存器 ) 。 向左移动 n 位相当于将输入端 IN 的内容乘以 2 的 n 次幂 (2 n ) ;向右移动 n 位则 相当于将输入端 IN 的内容除以 2 的 n 次幂 (2 n ) 。例如,如果将等价于十进制值 3 的二进制数左移 3 位,将得到等价于十进制值 24 的二进制数。如果将等价于 十进制值 16 的二进制数右移 2 位,则会得到等价于十进制值 4 的二进制数。 您提供给输入参数 N 的数值决定了移动相应值的位数。移位指令产生的空位将 用零或符号位的信号状态 (0 表示正, 1 表示负 ) 来填补。最后移动的位的信号状 态将装入状态字的 CC 1 位中 ( 请参见“ CPU 寄存器” ) 。状态字的 CC 0 和 OV 位会被复位为 0 。可以使用跳转指令估算 CC 1 位。 以下是可用的移位指令: • SHR_I : 右移整数 • SHR_DI : 右移双精度整型 • SHL_W : 左移字 • SHR_W : 右移字 • SHL_DW : 双字左移 • SHR_DW : 右移双字 11.1.2 SHR_I:右移整数 符号 SHR_I EN IN N OUT ENO 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-1 移位和循环移位指令 参数 数据类型 内存区域 描述 EN BOOL I 、 Q 、 M 、 L 、 D 、使能输入 T 、 C IN INT I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT INT I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 要移位的值 值将移位的位数 移位指令的结果 使能输出 描述 在使能输入 (EN) 端的信号状态为 1 时会激活整数右移指令。此指令将输入端 IN 的 0 到 15 位逐位右移。输入 N 指定值将移位的位数。如果 N 大于 16 ,则该命 令将 N 视为 16 进行处理。左侧的空位将用第 15 位的信号状态 ( 整数的符号 ) 填补 。正数填补 0 ,负数则填补 1 。移位操作的结果可在 OUT 输出端扫描。 如果 N 不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位为 0 。 ENO 具有与 EN 相同的信号状态。 15... 1010 Sign bit ...87... 11110000 4 places ...0 1010 IN N OUT 11111010 These four bits are lost. The vacated places are filled with the signal state of the sign bit. 11-2 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 移位和循环移位指令 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 SHR_I I 0.0 MW0 MW2 EN IN N OUT ENO MW4 Q 4.0 S 在 I0.0 的信号状态为 1 时激活此指令。存储器字 MW0 将按在存储器字 MW2 中 指定的位数右移。 结果将存入存储器字 MW4 中。输出 Q4.0 置 1 。 11.1.3 SHR_DI:右移双精度整型 符号 SHR_DI EN IN N OUT ENO 参数 数据类型 内存区域 描述 EN BOOL I 、 Q 、 M 、 L 、 D 、使能输入 T 、 C IN DINT I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT DINT I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 要移位的值 值将移位的位数 移位指令的结果 使能输出 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-3 移位和循环移位指令 描述 在使能输入 (EN) 端的信号状态为 1 时会激活整数右移指令。此指令将输入端 IN 的全部内容逐位右移。输入 N 指定值将移位的位数。如果 N 大于 32 ,则该命令 将 N 视为 32 进行处理。左侧的位将用第 31 位的信号状态 ( 双精度整数的符号 ) 填 补。正数填补 0 ,负数则填补 1 。移位操作的结果可在 OUT 输出端扫描。 如果 N 不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位为 0 。 ENO 具有与 EN 相同的信号状态。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 SHR_DI I 0.0 MD0 MW4 EN IN N OUT ENO MD10 Q 4.0 S 在 I0.0 的信号状态为 1 时会激活此指令。存储器双字 MD0 将按在存储器字 MW4 中指定的位数右移。 结果将存入存储器双字 MD10 中。输出 Q4.0 置 1 。 11-4 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 移位和循环移位指令 11.1.4 SHL_W:左移字 符号 SHL_W EN IN N OUT ENO 参数 数据类型 内存区域 描述 使能输入 要移位的值 值将移位的位数 移位指令的结果 使能输出 EN BOOL I 、 Q 、 M 、 L 、 D 、 T 、 C IN WORD I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT WORD I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 描述 在使能输入 (EN) 的信号状态为 1 时会激活字左移指令。此指令将输入端 IN 的 0 到 15 位逐位左移。 输入 N 指定要使值移位的位数。如果 N 大于 16 ,则此命令在 OUT 输出端写入 0 并将状态字的 CC 0 和 OV 位置 0 。将右侧的各位补零。移位操作的结果可在 OUT 输出端扫描。 如果 N 的值不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位 为 0 。 ENO 具有与 EN 相同的信号状态。 15... 0000 ...87... 11110101 6 places ...0 0101 IN N OUT These six bits are lost. The vacated places are filled with zeros. 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-5 移位和循环移位指令 举例 SHL_W I 0.0 MW0 MW2 EN IN N OUT ENO MW4 Q 4.0 S 在 I0.0 的信号状态为 1 时会激活该指令。 存储器字 MW0 将按在存储器字 MW2 中指定的位数左移。 结果将存入存储器字 MW4 中。输出 Q4.0 置 1 。 11.1.5 SHR_W:右移字 符号 SHR_W EN IN N OUT ENO 参数 数据类型 内存区域 描述 EN BOOL I 、 Q 、 M 、 L 、 D 、使能输入 T 、 C IN WORD I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT WORD I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 要移位的值 值将移位的位数 移位指令的结果 使能输出 11-6 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 移位和循环移位指令 描述 在使能输入 (EN) 端的信号状态为 1 时会激活字右移指令。此指令将输入端 IN 的 0 到 15 位逐位右移。 16 到 31 位不受影响。输入 N 指定值将移位的位数。如果 N 大于 16 ,则此命令在 OUT 输出端写入 0 并将状态字的 CC 0 和 OV 位置 0 。 将左侧移空的位补零。移位操作的结果可在 OUT 输出端扫描。 如果 N 不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位为 0 。 ENO 具有与 EN 相同的信号状态。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 SHR_W I 0.0 MW0 MW2 EN IN N OUT ENO MW4 Q 4.0 S 在 I0.0 的信号状态为 1 时激活此指令。存储器字 MW0 将按在存储器字 MW2 中 指定的位数右移。 结果将存入存储器字 MW4 中。输出 Q4.0 置 1 。 11.1.6 SHL_DW:双字左移 符号 SHL_DW EN IN N OUT ENO 数据类型 内存区域 描述 使能输入 要移位的值 值将移位的位数 移位指令的结果 使能输出 参数 EN BOOL I 、 Q 、 M 、 L 、 D 、 T 、 C IN DWORD I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT DWORD I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-7 移位和循环移位指令 描述 在使能输入 (EN) 端的信号状态为 1 时会激活双字左移指令。此指令将输入端 IN 的 0 到 31 位逐位左移。输入 N 指定值将移位的位数。如果 N 大于 32 ,则此命 令在 OUT 输出端写入 0 并将状态字的 CC 0 和 OV 位置 0 。将右侧移空的各位补 零。移位操作的结果可在 OUT 输出端扫描。 如果 N 的值不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位 为 0 。 ENO 具有与 EN 相同的信号状态。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 SHL_DW I 0.0 MD0 MW4 EN IN N OUT ENO MD10 Q 4.0 S 在 I0.0 的信号状态为 1 时会激活该指令。 存储器双字 MD0 将按在存储器字 MW4 中指定的位数左移。 结果将存入存储器双字 MD10 中。输出 Q4.0 置 1 。 11.1.7 SHR_DW:右移双字 符号 SHR_DW EN IN N OUT ENO 数据类型 内存区域 描述 使能输入 要移位的值 值将移位的位数 移位指令的结果 使能输出 参数 EN BOOL I 、 Q 、 M 、 L 、 D 、 T 、 C IN DWORD I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT DWORD I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 11-8 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 移位和循环移位指令 描述 在使能输入 (EN) 端的信号状态为 1 时会激活双字右移指令。此指令将输入端 IN 的 0 到 31 位逐位右移。输入 N 指定值将移位的位数。如果 N 大于 32 ,则此命 令在 OUT 输出端写入 0 并将状态字的 CC 0 和 OV 位置 0 。将左侧移空的位补零 。移位操作的结果可在 OUT 输出端扫描。 如果 N 不等于,则此指令触发的操作总是将状态字的 CC 1 和 OV 位复位为 0 。 ENO 具有与 EN 相同的信号状态。 31......0 111111111 3 places IN N OUT 11011111 The vacated places are filled with zeros. 111 These three bits are lost. 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 SHR_DW I 0.0 MD0 MW4 EN IN N OUT ENO MD10 Q 4.0 S 在 I0.0 的信号状态为 1 时会激活此指令。存储器双字 MD0 将按在存储器字 MW4 中指定的位数右移。 结果将存入 MD10 中。输出 Q4.0 置 1 。 11.2 循环移位指令 11.2.1 循环移位指令概述 描述 可使用循环移位指令将输入端 IN 的全部内容逐位向左或向右循环移动 ( 请参见 CPU 寄存器 ) 。移空的位将用从输入端 IN 移出的位的信号状态填补。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-9 移位和循环移位指令 为输入参数 N 指定的值即是要循环移位的位数。 根据指令不同,循环移位将使用状态字的 CC 1 位。状态字的 CC 0 位被复位为 0 。 以下是可用的循环移位指令: • ROL_DW : 循环左移双字 • ROR_DW : 循环右移双字 11.2.2 ROL_DW:循环左移双字 符号 ROL_DW EN IN N OUT ENO 数据类型 内存区域 描述 参数 EN BOOL I 、 Q 、 M 、 L 、 D 、使能输入 T 、 C IN DWORD I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT DWORD I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 要循环移位的值 值将循环移动的位数 循环移位指令的结果 使能输出 11-10 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 移位和循环移位指令 描述 在使能输入 (EN) 端的信号状态为 1 时激活双字循环左移指令。此指令将输入端 IN 的全部内容逐位循环左移。输入 N 指定要循环移动的位数。如果 N 大于 32 , 则双字循环移动 ((N-1) 以 32 为模 ) +1) 位。右侧的位用循环位的信号状态填补。 循环运算的结果可在 OUT 输出端扫描。 如果 N 不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位为 0 。 ENO 具有与 EN 相同的信号状态。 31......0 11111111 3 places IN N OUT These three bits are lost. The signal states of the three bits that are shifted out are inserted in the vacated places. 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 ROL_DW I 0.0 MD0 MW4 EN IN N OUT ENO MD10 Q 4.0 S 在 I0.0 的信号状态为 1 时激活此指令。存储器双字 MD0 将按在存储器字 MW4 中指定的位数循环右移。 结果将存入存储器双字 MD10 中。输出 Q4.0 置 1 。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-11 移位和循环移位指令 11.2.3 ROR_DW:循环右移双字 符号 ROR_DW EN IN N OUT ENO 参数 数据类型 内存区域 描述 EN BOOL I 、 Q 、 M 、 L 、 D 、 T 、使能输入 C IN DWORD I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT DWORD I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 要循环移位的值 值将循环移动的位数 循环移位指令的结果 使能输出 描述 在使能输入 (EN) 端的信号状态为 1 时激活双字循环右移指令。此指令将输入端 IN 的全部内容逐位循环右移。输入 N 指定值将循环移动的位数。如果 N 大于 32 ,则双字循环移动 ((N-1) 以 32 为模 ) +1) 位。 N 值可介于 0 和 31 之间。左侧的位 将用循环位的信号状态填补。循环运算的结果可在 OUT 输出端扫描。 如果 N 不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位为 0 。 ENO 具有与 EN 相同的信号状态。 31... 1010 ... 11110000 3 places ...0 0101 IN N 1101 OUT The signal states of the three bits that are shifted out are inserted in the vacated places. 11-12 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 移位和循环移位指令 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 ROR_DW I 0.0 EN MD0 INOUT MD10 Q 4.0 MW4 N ENO S 在 I0.0 的信号状态为 1 时会激活此指令。存储器双字 MD0 将按在存储器字 MW4 中指定的位数循环右移。 结果将存入存储器双字 MD10 中。输出 Q4.0 置 1 。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-13 移位和循环移位指令 11-14 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 12 状态位指令 12.1 状态位指令概述 描述 状态位指令是对状态字的位进行操作的逻辑指令 ( 请参见 CPU 寄存器 ) 。其中的 各条指令分别对下列条件之一做出反应,每条指令以状态字的一个或多个位来表 示: • 二进制结果位 (BR) 被置位 ( 信号状态为 1) 。 • 运算的结果通过下列方式之一与 0 相关: == 0 、 <> 0 、 > 0 、 < 0 、 >= 0 、 <= 0 。 • 运算发生溢出 (UO) 。 • 运算发生溢出 (OV) 或存储溢出 (OS) 。 当状态位指令以串联方式连接时,该指令将根据 And 真值表将其信号状态校验 的结果与前一逻辑运算结果合并。当状态位指令以并联方式连接时,该指令将根 据 Or 真值表将其结果与前一 RLO 合并。 状态字 状态字是 CPU 存储器中的一个寄存器,它所包含的位可通过位地址和字逻辑指 令来参照。状态字的结构: 2... 15 ...2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 BRCC1CC0OVOSORSTARLO/FC 可以通过下列函数求状态字位的值 • 通过整数算术运算 • 通过浮点数算术运算 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 12-1 状态位指令 12.2 OV:溢出异常位 符号 OV 描述 可使用溢出异常位指令来检测最后一个算术运算是否有溢出 (OV) 。如果在系统执 行算术运算后,结果超出了许可的负数范围或许可的正数范围,则会设置状态字 ( 参见 CPU 寄存器 ) 的 OV 位。指令将检查此位的信号状态。如果算术运算未出错 ,则复位该位。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 程序段 1 SUB_I I 0.0 IW0 IW2 EN IN1 IN2 OUT ENO MW10 程序段 2 I 0.1 I 0.2 I 0.3 & >=1 M 3.3 程序段 3 OV Q 4.0 S 在输入 I0.0 的信号状态为 1 时会激活 SUB_I 框。如果算术运算 ( 输入字 IW0 减输 入字 IW2) 的结果超出了整数值的许可范围,则会置位状态字的 OV 位。 OV 位的 信号检查结果为 1 。如果 OV 位的检查结果为 1 且程序段 2 的 RLO 为 1 ( 如果输 出 Q4.0 之前的 RLO 为 1) ,则会置位输出 Q4.0 。 12-2 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 状态位指令 如果输入 I0.0 的信号状态为 0 ( 未激活 ) ,则 EN 和 ENO 的信号状态均为 0 。如 果 EN 的信号状态为 1 ( 已激活 ) 且算术运算的结果超出范围,则 ENO 的信号状 态为 0 。 12.3 OS:存储的溢出异常位 符号 OS 描述 在与运算中,本指令将按照与运算真值表组合自身的检查结果和先前的逻辑运算 结果。在或运算运算中,则将按照或运算真值表组合。 可使用存储溢出异常位指令判断先前算术运算结果是否有溢出 ( 存储溢出, OS) 。 如果在系统执行算术运算后,结果超出了许可的负数范围或许可的负数值范围或 者正数值范围,则会设置状态字 ( 参见 CPU 寄存器 ) 的 OS 位。指令将检查此位的 信号状态。与 OV( 溢出 ) 位不同,即使在执行随后的算术运算时未出现错误, OS 位仍将保留设置 ( 参见溢出异常位 ) 。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 12-3 状态位指令 举例 程序段 1 MUL_I I 0.0 IW0 IW2 EN IN1 IN2 OUT ENO MD8 程序段 2 ADD_I I 0.1 IW0 IW2 EN IN1 IN2 OUT ENO MW12 程序段 3 OSQ 4.0 S 在输入 I0.0 的信号状态为 1 时会激活 MUL_I 框。在输入 I0.1 的信号状态为 1 时 会激活 ADD_I 框。如果其中一个算术运算的结果超出整数的许可范围,则会设 置状态字的 OS 位。 OS 位的信号状态检查的结果为 1 且置位输出 Q4.0 。 程序段 1 :如果输入 I0.0 的信号状态为 0 ( 未激活 ) ,则 EN 和 ENO 的信号状态 均为 0 。如果 EN 的信号状态为 1 ( 已激活 ) 且算术运算的结果超出范围,则 ENO 的信号状态为 0 。 程序段 2 :如果输入 I0.1 的信号状态为 0 ( 未激活 ) ,则 EN 和 ENO 的信号状态 均为 0 。如果 EN 的信号状态为 1 ( 已激活 ) 且算术运算的结果超出范围,则 ENO 的信号状态为 0 。 12-4 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 状态位指令 12.4 UO:例外位无序 符号 UO 描述 可使用无序异常位指令检查浮点数运算的结果是否无序 ( 换言之,该运算中是否 存在一个无效的浮点数 ) 。指令将判断状态字的条件码位 (CC 1 和 CC 0 ,参见 CPU 寄存器 ) 。如果运算的结果是无序 (UO) ,信号状态检查的结果将是 1 。如果 在 CC 1 和 CC 0 中的组合结果表明不是无序的,则信号状态检查的结果将是 0 。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 程序段 1 DIV_R I 0.0 ID0 ID4 EN IN1 IN2 OUT ENO MD10 Q 4.1 S 程序段 2 UO Q 4.0 S 在输入 I0.0 的信号状态为 1 时会激活 DIV_R 框。如果输入的双字 ID0 或 ID4 中 有一个是无效浮点数,则浮点数运算的结果将是无序。 如果 EN 的信号状态为 1 ( 已激活 ) ,但在指令执行期间出错,则 ENO 的信号状 态为 0 。 如果执行了函数 DIV_R ,但该运算有一个值是无效的浮点数,则置位输出 Q4.0 。如果输入 I0.0 的信号状态为 0 ( 未激活 ) ,则 EN 和 ENO 的信号状态均为 0 。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 12-5 状态位指令 12.5 BR:BR存取区异常位 符号 EnglishGerman BRBIE 描述 可以使用BR存取区异常位指令来检查状态字 BR 位 ( 二进制结果 ) 的信号状态 ( 请 参见 CPU 寄存器 ) 。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 I 0.0 I 0.2 BR >=1 & Q 4.0 S 如果输入 I0.0 的信号状态为 1 ,或者输入 I0.2 的信号状态为 0 ,将会置位输出端 Q4.0 ;除了此逻辑运算结果外, BR 位的信号状态为 1 时也会如此。 12-6 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 状态位指令 12.6 <> 0:结果位 符号 == 0 <> 0 > 0 < 0 >= 0 <= 0 结果位指令等于 0 用于确定算术运算指令的结果是否等于 0 。 结果位指令不等于 0 用于确定算术运算指令的结果是否不等于 0 。 结果位指令大于 0 用于确定表明算术运算指令的结果是否大于 0 。 结果位指令小于 0 用于确定算术运算指令的结果是否小于 0 。 结果位指令大于或等于 0 用于确定算术运算指令的结果是否大于或等于 0 。 结果位指令小于或等于 0 用于确定算术运算指令的结果是否小于或等于 0 。 描述 您可以使用结果位指令来确定运算的结果与 0 之间的关系,换言之,确定结果是 否是 ==0 、 <>0 、 >0 、 <0 、 >=0 或 <=0 。 指令将判断状态字的条件码位 (CC 1 和 CC 0 ,请参见 CPU 寄存器 ) 。如果满足地址中指示的比较条件,则信号状态检 查的结果为 1 。 在与运算中,本指令将按照与运算真值表组合自身的检查结果和先前的逻辑运算 结果 (RLO) 。在或运算中,本指令将按照或运算真值表组合自身的检查结果和先 前的 RLO 。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 1) SUB_I I 0.0 IW0 IW2 EN IN1OUT IN2ENO >0 MW10 & Q 4.0 S 2) SUB_I I 0.0 IW0 IW2 EN IN1OUT IN2 ENO <=0 MW10 & Q 4.0 S 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 12-7 状态位指令 在输入 I0.0 的信号状态为 1 时会激活 SUB_I 框。如果输入字 IW0 的值大于输入 字 IW2 的值,则数学运算 IW0 - IW2 的结果大于 0 。如果 EN 的信号状态为 1 ( 已激活 ) ,而在执行指令期间发生错误,则 ENO 的信号状态为 0 。 2. 如果正确执行了该运算且结果小于或等于 0 ,则会将输出端 Q4.0 置位。如果 信号输入 I0.0 的信号状态为 0 ( 未激活 ) ,则 EN 和 ENO 的信号状态为 0 。 3. 如果正确执行了该运算且结果小于或等于 0 ,则会将输出端 Q4.0 置位。如果 信号输入 I0.0 的信号状态为 0 ( 未激活 ) ,则 EN 和 ENO 的信号状态为 0 。 12-8 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13 定时器指令 13.1 定时器指令概述 描述 有关设置和选择正确时间的信息,请参见“定时器在存储器中的位置与定时器组 件”。 下列定时器指令可用: • S_PULSE : 设置脉冲定时器参数并启动 • S_PEXT : • S_ODT : • S_ODTS : 设置延时脉冲定时器参数并启动 设置接通延时定时器参数并启动 设置掉电保护接通延时定时器参数并启动 • S_OFFDT : 设置断开延时定时器参数并启动 • SP : • SE : • SD : • SS : • SF : 启动脉冲定时器 启动延时脉冲定时器 启动接通延时定时器 启动掉电保护接通延时定时器 启动延时断开定时器 13.2 定时器的存储区和组件 内存区域 在 CPU 的存储器中,为定时器保留有存储区。此存储区为每个定时器地址保留 一个 16 位字。在 FBD 中编程时,可支持 256 个定时器。请参考 CPU 的技术信 息来确定可用的定时器字数目。 下列功能访问定时器存储区: • 定时器指令 • 按时钟定时更新定时器字。在 RUN 模式下,此 CPU 功能按时间基准所指定 的间隔将给定的时间值减少一个单位,直到该时间值等于零。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-1 定时器指令 时间值 时间基准 13-2 定时器字的 0 到 9 位包含二进制代码的时间值。时间值指定单位数。更新定时器 时,时间值按时间基准所指定的间隔递减一个单位。时间值递减到等于零为止。 可通过下列任一种格式预加载时间值: • S5T#a H _b M _c S _d MS - 其中 H = 小时、 M = 分钟、 S = 秒、 MS = 毫秒; a 、 b 、 c 、 d 由用户定义。 - 时间基准是自动选择的,值会根据时间基准四舍五入到下一个更低的数值 。 可以输入的最大时间值是 9,990S 或 2H_46M_30S 。 S5TIME#4S = 4 秒 s5t#2h_15m = 2 小时 15 分钟 S5T#1H_12M_18S = 1 小时 12 分钟 18 秒 定时器字的 12 和 13 位包含二进制代码的时间基准。时间基准定义将时间值递减 一个单位所用的时间间隔。最小的时间基准是 10 毫秒;最大的时间基准是 10 秒 。 时间基准 时间基准的二进制代码 10 毫秒 00 100 毫秒 01 1 秒 10 10 秒 11 由于时间值仅按一个时间间隔保存,因此不是时间间隔整倍数的值将被截断。对 于所需范围,分辨率过高的值将舍入到所需的范围,而不是期望的分辨率。下表 显示了可能的分辨率和相应的范围。 分辨率 时间基准 0.01 秒 10MS 到 9S_990MS 0.1 秒 100MS 到 1M_39S_900MS 1 秒 1S 到 16M_39S 10 秒 10S 到 2HR_46M_30S 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 定时器指令 定时器单元格中的位组态 当启动定时器时,定时器单元格的内容将用作时间值。定时器单元格的 0 到 11 位所包含的时间值显示为二进制编码的十进制格式 (BCD 格式:每四位为一组包 含对应一个十进制值的二进制代码 ) 。 12 和 13 位包含二进制代码格式的时间基 准。下图显示了以定时器值 127 ( 时间基准为 1 秒 ) 加载的定时器单元格的内容。 15... xx1000 1 ...87... 0100 2 1001 7 ...0 11 Time base 1 second Time value in BCD (0 to 999) Irrelevant: These bits are ignored when the timer is started. 读取时间和时间基准 每个定时器框都提供了两个输出 (BI 和 BCD) ,用户可为其指定字位置。 BI 输出 提供二进制格式的时间值,但不显示时间基准。 BCD 输出提供二进制编码的十 进制 (BCD) 格式的时间基准和时间值。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-3 定时器指令 选择合适的定时器 此概述旨在帮助用户正确选择定时作业的定时器。 I 0.0 Q 4.0 S_PULSE t Q 4.0 S_PEXT t Q 4.0 S_ODT t Q 4.0 S_ODTS t Q 4.0 S_OFFDT t 定时器 S_PULSE 脉冲定时器 S_PEXT 延时脉冲定时器 S_ODT 接通延时定时器 S_ODTS 保持性接通延时定时器 S_OFFDT 断开延时定时器 描述 输出信号保持为 1 的最大时间与设定的时间值 t 相同。如果输入 信号变为 0 ,则输出信号在较短的时间内保持为 1 。 输出信号在设定的时长内保持为 1 ,无论输入信号保持 1 多长 时间。 只有在设定的时间已过且输入信号仍为 1 时,输出信号才变为 1 。 只有在设定的时间已过时,输出信号才从 0 变为 1 ,无论输入 信号保持 1 多长时间。 输入信号变为 1 或定时器运行时,输出信号变为 1 。输入信号 从 1 变为 0 时,时间启动。 13-4 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 定时器指令 13.3 S_PULSE:设置脉冲定时器参数并启动 符号 English T no. S_PULSE S TV R BI BCD Q German T-Nr. S_IMPULS S R DUAL Q TW DEZ 参数 英语 参数 德语 数据类型 内存区域 描述 定时器标识号。 范围取决于 CPU 。 使能输入 预设时间值 ( 范围 0-9999) 复位输入端 no. Nr. TIMER T S S BOOL I 、 Q 、 M 、 D 、 L 、 T 、 C TV TW S5TIME I 、 Q 、 M 、 D 、 L 或常数 R R BOOL I 、 Q 、 M 、 D 、 L 、 T 、 C BI DUAL WORD I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为整型格式 ) BCD DEZ WORD I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为 BCD 格式 ) Q Q BOOL I 、 Q 、 M 、 D 、 L 定时器的状态 描述 如果“启动 (S) ”输入有上升沿 ( 信号状态从 0 改变为 1) ,设置脉冲定时器参数并 启动指令将启动指定的定时器。要启动定时器,必须有信号改变。只要输入 S 的 信号状态为 1 ,定时器将继续运行“时间值 (TV) ”输入处指定的时间。当定时器 运行时,对输出 Q 的信号状态 1 的检查产生结果 1 。如果在时间用完前, S 输入 存在从 1 到 0 的改变,则定时器停止。随后对输出 Q 的信号状态 1 的检查产生 结果 0 。 定时器正运行时,如果“复位 (R) ”输入从 0 改变为 1 ,则定时器复位。此改变 还会将时间和时间基准复位到零。如果定时器未运行,则定时器 R 输入处的信 号状态 1 将不起作用。 可在输出 BI 和 BCD 处扫描当前时间值。 BI 处的时间值为二进制格式; BCD 处 的时间值为二进制编码的十进制格式。 时序图 脉冲定时器特性: 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-5 定时器指令 t RLO at S input tt RLO at R input Timer running Scan for "1" Scan for "0" t = Programmed time 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 T5 S_PULSE I 0.0 S5T#2s I 0.1 SBI Q 4.0 = TV BCD RQ 如果输入 I0.0 的信号状态从 0 改变为 1 ( 如果 RLO 中有上升沿 ) ,则定时器 T5 启 动。只要输入 I0.0 为 1 ,定时器将继续运行指定的两秒 (2s) 时间。如果在时间用 尽前输入 I0.0 的信号状态从 1 改变为 0 ,则定时器停止。如果定时器运行时,输 入 I0.1 的信号状态从 0 改变为 1 ,则定时器复位。只要定时器运行,输出 Q4.0 的信号状态就为 1 。 13.4 S_PEXT:设置延时脉冲定时器参数并启动 符号 English T no. S_PEXT S TV R BI BCD Q S R German T-Nr. S_VIMP DUAL Q TW DEZ 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-6 定时器指令 参数 英语 参数 德语 数据类型 内存区域 描述 定时器标识号。 范围取决于 CPU 。 no. Nr. TIMER T S S BOOL I 、 Q 、 M 、 D 、 L 、使能输入 T 、 C TV TW S5TIME I 、 Q 、 M 、 D 、 L 或预设时间值 常数 ( 范围 0-9999) R R BOOL I 、 Q 、 M 、 D 、 L 、复位输入端 T 、 C BI DUAL WORD I 、 Q 、 M 、 D 、 L BCD DEZ WORD I 、 Q 、 M 、 D 、 L Q Q BOOL I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为整型格式 ) 剩余时间 ( 值为 BCD 格式 ) 定时器的状态 描述 如果“启动 (S) ”输入处有上升沿 ( 信号状态从 0 改变为 1) ,设置延时脉冲定时器 参数并启动指令将启动指定的定时器。要启动定时器,必须有信号改变。定定时 器继续运行“时间值 (TV) ”输入处指定的时间,即使 S 输入处的信号状态在时间 用尽前改变为 0 。只要定时器运行,对输出 Q 信号状态 1 的检查就产生结果 1 。 定时器运行时,如果输入 S 处的信号状态从 0 改变为 1 ,则定时器以指定的时间 重新启动。 定时器运行时,如果“复位 (R) ”输入从 0 改变为 1 ,则定时器复位。此改变还 会将时间和时间基准复位到零。此改变还会将时间和时间基准复位到零。 可在输出端 BI 和 BCD 扫描当前时间值。 BI 处的时间值为二进制格式; BCD 处 的时间值为二进制编码的十进制格式。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-7 定时器指令 时序图 扩充的脉冲定时器特性: t RLO at S input ttt RLO at R input Timer running Scan for "1" Scan for "0" t = Programmed time 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 T5 S_PEXT I 0.0 S5T#2s I 0.1 SBI Q 4.0 = TV BCD R Q 如果输入 I0.0 的信号状态从 0 改变为 1 (RLO 中有上升沿 ) ,则定时器 T5 启动。 定时器将继续运行指定的两秒 (2s) 时间,而不考虑输入 S 的下降沿。如果在时间 用尽前输入 I0.0 的信号状态从 0 改变为 1 ,则定时器重新启动。如果定时器运行 时,输入 I0.1 的信号状态从 0 改变为 1 ,则定时器复位。只要定时器运行,输出 Q4.0 的信号状态就为 1 。 13-8 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 定时器指令 13.5 S_ODT:设置接通延时定时器参数并启动 符号 English T no. S_ODT S TV R BI BCD Q German T-Nr. S_EVERZ S R DUAL Q TW DEZ 参数 英语 参数 德语 数据类型 内存区域 描述 定时器标识号。 范围取决于 CPU 。 no. Nr. TIMER T S S BOOL I 、 Q 、 M 、 D 、 L 、 T 使能输入 、 C TV TW S5TIME I 、 Q 、 M 、 D 、 L 或 常数 预设时间值 ( 范围 0-9999) R R BOOL I 、 Q 、 M 、 D 、 L 、 T 复位输入端 、 C BI DUAL WORD I 、 Q 、 M 、 D 、 L BCD DEZ WORD I 、 Q 、 M 、 D 、 L Q Q BOOL I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为整型格式 ) 剩余时间 ( 值为 BCD 格式 ) 定时器的状态 描述 如果“启动 (S) ”输入有上升沿 ( 信号状态从 0 改变为 1) ,设置接通延时定时器参 数并启动指令将启动指定的定时器。要启动定时器,必须有信号改变。只要输入 S 的信号状态为 1 ,定时器将继续运行“时间值 (TV) ”输入处指定的时间。当时 间已用尽且未出错,而输入 S 的信号状态仍为 1 时,则对输出 Q 的信号状态 1 的检查将产生结果 1 。定时器运行时,如果输入 S 的信号状态从 1 改变为 0 ,定 时器将停止。这种情况下,对输出 Q 的信号状态 1 的检查将始终产生结果 0 。 定时器正运行时,如果“复位 (R) ”输入从 0 改变为 1 ,则定时器复位。此改变 还会将时间和时间基准复位到零。定时器未运行时,如果 R 输入的信号状态为 1 ,定时器也会复位。 可在输出端 BI 和 BCD 扫描当前时间值。 BI 处的时间值为二进制格式; BCD 处 的时间值为二进制编码的十进制格式。 时序图 接通延时定时器特征: 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-9 定时器指令 t RLO at S input tt RLO at R input Timer running Scan for "1" Scan for "0" t = Programmed time 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 T5 S_ODT I 0.0 S5T#2s I 0.1 SBI Q 4.0 = TV BCD RQ 如果输入 I0.0 的信号状态从 0 改变为 1 (RLO 中有上升沿 ) ,则定时器 T5 启动。 如果指定的时间两秒 (2s) 已过,且输入 I0.0 的信号状态仍为 1 ,则输出 Q4.0 的 信号状态为 1 。如果输入 I0.0 的信号状态从 1 改变为 0 ,则定时器停止并且输出 Q4.0 为 0 。定时器运行时,如果输入 I0.1 的信号状态从 0 改变为 1 ,定时器将重 新启动。 13.6 S_ODTS:设置掉电保护接通延时定时器参数并启动 符号 English T no. S_ODTS S TV R BI BCD Q German T-Nr. S_SEVERZ S R DUAL Q TW DEZ 13-10 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 定时器指令 参数 英语 参数 德语 数据类型 内存区域 描述 定时器标识号。 范围取决于 CPU 。 no. Nr. TIMER T S S BOOL I 、 Q 、 M 、 D 、 L 、使能输入 T 、 C TV TW S5TIME I 、 Q 、 M 、 D 、 L 或预设时间值 常数 ( 范围 0-9999) R R BOOL I 、 Q 、 M 、 D 、 L 、复位输入端 T 、 C BI DUAL WORD I 、 Q 、 M 、 D 、 L BCD DEZ WORD I 、 Q 、 M 、 D 、 L Q Q BOOL I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为整型格式 ) 剩余时间 ( 值为 BCD 格式 ) 定时器的状态 描述 如果“启动 (S) ”输入有上升沿 ( 信号状态从 0 改变为 1) ,设置掉电保护接通延时 定时器参数并启动指令将启动指定的定时器。要启动定时器,必须有信号改变。 定时器继续运行“时间值 (TV) ”输入处指定的时间,即使输入 S 的信号状态在定 时器时间用尽前改变为 0 。定时器时间用尽时,对输出 Q 的信号状态 1 的检查将 产生结果 1 ,而不考虑复位输入端 (R) 保持为 0 时输入 S 的信号状态。定时器运 行时,如果输入 S 的信号状态从 0 改变 1 ,则定时器以指定的时间重新启动。 定时器“复位 (R) ”输入从 0 改变为 1 时,定时器将复位,而不考虑 S 输入的 RLO 。 可在输出端 BI 和 BCD 扫描当前时间值。 BI 处的时间值为二进制格式; BCD 处 的时间值为二进制编码的十进制格式。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-11 定时器指令 时序图 掉电保护的接通延时定时器特性: t RLO at S input ttt RLO at R input Timer running Scan for "1" Scan for "0" t = Programmed time 状态字 BR CC 1 CC 0 OV OS OR STA RLO /FC 写: - - - - - x x x 1 举例 T5 S_ODTS I 0.0 S5T#2s I 0.1 SBI Q 4.0 = TV BCD RQ 如果输入 I0.0 的信号状态从 0 改变为 1 (RLO 中有上升沿 ) ,则定时器 T5 启动。 定时器将继续运行,而不考虑输入 I0.0 处的信号状态从 1 改变到 0 。如果在时间 用尽前输入 I0.0 的信号状态从 0 改变为 1 ,定时器将重新启动。如果定时器运行 时,输入 I0.1 的信号状态从 0 改变为 1 ,定时器将重新启动。如果时间已用尽, 且 I0.1 的信号状态仍为 0 ,则输出 Q4.0 的信号状态为 1 。 13-12 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 定时器指令 13.7 S_OFFDT:设置断开延时定时器参数并启动 符号 English T no. S_OFFDT S TV R BI BCD Q German T-Nr. S_AVERZ S R DUAL Q TW DEZ 参数 英语 参数 德语 数据类型 内存区域 描述 定时器标识号。 范围取决于 CPU 。 使能输入 预设时间值 ( 范围 0-9999) 复位输入端 no. Nr. TIMER T S S BOOL I 、 Q 、 M 、 D 、 L 、 T 、 C TV TW S5TIME I 、 Q 、 M 、 D 、 L 或常数 R R BOOL I 、 Q 、 M 、 D 、 L 、 T 、 C BI DUAL WORD I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为整型格式 ) BCD DEZ WORD I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为 BCD 格式 ) Q Q BOOL I 、 Q 、 M 、 D 、 L 定时器的状态 描述 如果“启动 (S) ”输入有下降沿 ( 信号状态从 1 改变为 0) ,设置断开延时定时器参 数并启动指令将启动指定的定时器。要启动定时器,必须有信号改变。当 S 输入 的信号状态为 1 ,或定时器运行时,对输出 Q 处的信号状态 1 的检查结果为 1 。 定时器运行时,当输入 S 的信号状态从 0 改变为 1 时,定时器复位。直到输入 S 的信号状态再次从 1 改变为 0 时,定时器才重新启动。 定时器运行时,如果“复位 (R) ”输入从 0 改变为 1 ,定时器将复位。 可在输出 BI 和 BCD 处扫描实际时间值。 BI 处的时间值为二进制格式; BCD 处 的时间值为二进制编码的十进制格式。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-13 定时器指令 时序图 断开延时定时器特性: t RLO at S input ttt RLO at R input Timer running Scan for "1" Scan for "0" t = Programmed time 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - x x x 1 举例 T5 S_OFFDT I 0.0 S5T#2s I 0.1 SBI Q 4.0 = TV BCD RQ 如果输入 I0.0 的信号状态从 1 改变为 0 ,则定时器启动。当 I0.0 为 1 或定时器运 行时,输出 Q4.0 为 1 。如果定时器运行时, I0.1 的信号状态从 0 改变为 1 ,定时 器将复位。 13-14 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 定时器指令 13.8 SP:启动脉冲定时器 符号 English
SP
TV
TW
German
SI
参数
英语
Timer no.
参数
德语
Timer no.
数据类型
TIMER
内存区域
T
描述
此地址指定要启动的定时器的编号。
TV TW S5TIME E
、
A
、
M
、定时器值
(S5TIME
格式
)
D
、
L
或常
数
描述
如果
RLO
中有上升沿
(
信号状态从
0
改变为
1)
,启动脉冲定时器指令将启动指定
的定时器。只要
RLO
为高电平,定时器就以指定的值继续运行。定时器运行时
,对信号状态
1
的检查结果为
1
。如果在定时器时间用尽前
RLO
从
1
改变为
0
,定时器将停止。这种情况下,对信号状态
1
的检查结果为
0
。
有关定时器的存储区和组件的详细信息,请参见存储区。
只能将启动脉冲定时器框放在逻辑串的右端。可以使用若干个启动脉冲定时器框
。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
- - - - - 0 - - 0
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
13-15
定时器指令
举例
程序段
1
T5
I 0.0
S5T#2s
TV
SP
程序段
2
Q 4.0
=
T5
如果输入
I0.0
的信号状态从
0
改变为
1 (RLO
中有上升沿
)
,则定时器
T5
启动。
只要信号状态为
1
,定时器就以指定的值
(2
秒
)
继续运行。如果定时器运行时,
I0.0
的信号状态从
1
改变为
0
,定时器将停止。
定时器运行时,输出
Q4.0
为
1
。
13-16
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
定时器指令
13.9 SE:启动延时脉冲定时器
符号
English
SE
TV
German
SV
TW
参数
英语
Timer no.
参数
德语
Timer no.
数据类型
TIMER
内存区域
T
描述
此地址指定要启动的定时器的编号。
E
、
A
、
M
、定时器值
(S5TIME
格式
)
TV TW S5TIME
D
、
L
或常
数
描述
如果
RLO
中有上升沿
(
信号状态从
0
改变为
1)
,启动延时脉冲定时器指令将启动
指定的定时器。如果在定时器时间用尽前
RLO
改变为
0
,定时器将继续以指定
的值运行。定时器运行时,对信号状态
1
的检查结果为
1
。定时器正运行时,如
果
RLO
从
0
改变为
1
,定时器将以指定的时间重新启动。
有关定时器的存储区和组件的详细信息,请参见存储区。
只能将启动延时脉冲定时器框放在逻辑串的右端。可以使用若干个启动延时脉冲
定时器框。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
- - - - - 0 - - 0
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
13-17
定时器指令
举例
程序段
1
T5
I 0.0
S5T#2s
TV
SE
程序段
2
Q 4.0
=
T5
如果输入
I0.0
的信号状态从
0
改变为
1 (RLO
中有上升沿
)
,则定时器
T5
启动。
定时器继续运行而不受
RLO
中下降沿的影响。如果在指定的时间用尽前
I0.0
的
信号状态从
0
改变为
1
,定时器将重新启动。
定时器运行时,输出
Q4.0
为
1
。
13-18
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
定时器指令
13.10 SD:启动接通延时定时器
符号
English
SD
TV
German
SE
TW
参数
英语
Timer no.
参数
德语
Timer no.
数据类型
TIMER
内存区域
T
描述
此地址指定要启动的定时器的编号。
TV TW S5TIME E
、
A
、
M
、定时器值
(S5TIME
格式
)
D
、
L
或常数
描述
如果
RLO
中有上升沿
(
信号状态从
0
改变为
1)
,启动接通延时定时器指令将启动
指定的定时器。如果指定的时间已用尽且未出错,而
RLO
的值仍为
1
,对信号
状态
1
的检查结果为
1
。定时器运行时,如果
RLO
从
1
改变为
0
,定时器将停
止。这种情况下,对信号状态
1
的检查结果始终为
0
。
有关定时器的存储区和组件的详细信息,请参见存储区。
只能将启动接通延时定时器框放在逻辑串的右端。可以使用若干个启动接通延时
定时器框。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
- - - - - 0 - - 0
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
13-19
定时器指令
举例
程序段
1
T5
I 0.0
S5T#2s
TV
SD
程序段
2
Q 4.0
=
T5
如果输入
I0.0
的信号状态从
0
改变为
1 (RLO
中有上升沿
)
,则定时器
T5
启动。
当定时器时间用尽时,如果
I0.0
的信号状态仍为
1
,则输出
Q4.0
为
1
。如果信
号状态从
1
改变为
0
,定时器将停止。
13.11 SS:启动掉电保护接通延时定时器
符号
English
SS
TV
German
SS
TW
参数
英语
Timer no.
参数
德语
Timer no.
数据类型
TIMER
内存区域
T
描述
此地址指定要启动的定时器的编号。
TV TW S5TIME E
、
A
、
M
、
定时器值
(S5TIME
格式
)
D
、
L
或常数
13-20
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
定时器指令
描述
如果
RLO
中有上升沿
(
信号状态从
0
改变为
1)
,启动掉电保护接通延时定时器指
令可启动指定的定时器。如果在定时器时间用尽前
RLO
改变为
0
,定时器将继
续以指定的值运行。如果定时器时间已用尽,则对信号状态
1
的检查结果为
1
,
而与
RLO
无关。定时器正运行时,如果
RLO
从
0
改变为
1
,定时器将以指定的
时间重新启动。
有关定时器的存储区和组件的详细信息,请参见存储区。
只能将启动掉电保护接通延时定时器框放在逻辑串的右端。可以使用若干个启动
掉电保护接通延时定时器框。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
- - - - - 0 - - 0
举例
程序段
1
T5
I 0.0
S5T#2s
TV
SS
程序段
2
Q 4.0
=
T5
如果输入
I0.0
的信号状态从
0
改变为
1 (RLO
中有上升沿
)
,则定时器
T5
启动。
定时器将继续运行,而与输入
I0.0
上信号状态是否从
1
改变为
0
无关。如果在
指定的时间用尽前信号状态从
0
改变为
1
,定时器将重新启动。
定时器时间用尽后,输出
Q4.0
为
1
。
13.12 SF 启动断开延迟定时器
符号
English
SF
TV
German
SA
TW
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
13-21
定时器指令
参数
英语
Timer no.
参数
德语
Timer no.
数据类型
TIMER
内存区域
T
描述
此地址指定要启动的定时器的编号。
E
、
A
、
M
、定时器值
(S5TIME
格式
)
TV TW S5TIME
D
、
L
或常数
描述
如果
RLO
中有下降沿
(
信号状态从
1
改变为
0)
,启动延时断开定时器指令将启动
指定的定时器。如果
RLO
为
1
,或定时器在运行,则对信号状态
1
的检查结果
为
1
。定时器运行时,如果
RLO
从
0
改变为
1
,定时器将复位。当
RLO
从
1
改
变为
0
后,定时器将重新启动。
有关定时器的存储区和组件的详细信息,请参见存储区。
只能将启动延时断开定时器框放在逻辑串的右端。可以使用若干个启动延时断开
定时器框。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
- - - - - 0 - - 0
13-22
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
定时器指令
举例
程序段
1
T5
I 0.0
S5T#2s
TV
SF
程序段
2
Q 4.0
=
T5
如果输入
I0.0
的信号状态从
1
改变为
0
,则定时器启动。
如果信号状态从
0
改变为
1
,定时器将复位。
如果输入
I0.0
的信号状态为
1
,或定时器正运行,则输出
Q4.0
的信号状态为
1
。
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
13-23
定时器指令
13-24
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
14 字逻辑指令
14.1 字逻辑指令概述
描述
字逻辑指令按照布尔逻辑按位比较字
(16
位
)
和双字
(32
位
)
对。
相对于
0
的输出
OUT
的结果值对状态字中的位具有以下影响:
如果输出
OUT
的结果不等于
0
,则状态字中的
CC 1
位会被设置为
1
。
如果输出
OUT
的结果为
0
,则状态字中的
CC 1
位会被设置为
0
。
要执行字逻辑运算,可使用下列指令:
•
WAND_W
:
单字与运算
(
字
)
•
WOR_W
:
单字或运算
(
字
)
•
WXOR_W
:
单字异或运算
(
字
)
•
WAND_DW
:
双字与运算
(
字
)
•
WOR_DW
:
双字或运算
(
字
)
•
WXOR_DW
:
双字异或运算
(
字
)
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
14-1
字逻辑指令
14.2 WAND_W:单字与运算(字)
符号
WAND_W
EN
IN1
IN2
OUT
ENO
数据类型
内存区域
描述
参数
EN BOOL I
、
Q
、
M
、
D
、
L
、使能输入
T
、
C
IN1 WORD I
、
Q
、
M
、
D
、
L
或逻辑运算的第一个值
常数
IN2 WORD I
、
Q
、
M
、
D
、
L
或逻辑运算的第二个值
常数
OUT WORD I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
逻辑运算结果
使能输出
描述
(字)单字与运算指令由位于使能输入
(EN)
的信号状态
1
激活,并根据与运算真值
表逐位组合位于输入
IN1
和
IN2
的两个数值。这些值被解释为纯位模式。结果可
在输出
OUT
处扫描。
ENO
具有与
EN
相同的信号状态。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 X 0 0 - X 1 1 1
举例
WAND_W
I 0.0
MW0
2#1111
EN
IN1
IN2
OUT
ENO
MW2
Q 4.0
=
当
I0.0
的信号状态为
1
时会激活该指令。只有
0
到
3
之间的位是相关的,所有
其它
MW0
位都被屏蔽。
IN1 = 0101
IN2 = 1111
OUT = 0101
如果执行了该指令,则
Q4.0
为
1
。
14-2
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
字逻辑指令
14.3 WOR_W:单字或运算(字)
符号
WOR_W
EN
IN1
IN2
OUT
ENO
数据类型
内存区域
描述
参数
EN BOOL I
、
Q
、
M
、
D
、
L
、
T
、使能输入
C
IN1 WORD I
、
Q
、
M
、
D
、
L
或常
数
IN2 WORD I
、
Q
、
M
、
D
、
L
或常
数
OUT WORD I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
逻辑运算的第一个值
逻辑运算的第二个值
逻辑运算结果
使能输出
描述
(字)单字或运算指令由位于使能输入
(EN)
的信号状态
1
激活,并根据或运算真值
表逐位组合位于输入
IN1
和
IN2
的两个数值。这些值被解释为纯位模式。结果可
在输出
OUT
处扫描。
ENO
具有与
EN
相同的信号状态。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 X 0 0 - X 1 1 1
举例
WOR_W
I 0.0
MW0
2#1111
EN
IN1
IN2
OUT
ENO
MW2
Q 4.0
=
当
I0.0
为
1
时将激活该指令。对
MW0
中的位和常数中的位执行或运算,
0
到
3
之间的位被设置为
1
,
MW0
的所有其它位均以不变形式被输入
MW2
中
IN1 = 0101
IN2 = 1111
OUT = 1111
如果执行了该指令,则
Q4.0
为
1
。
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
14-3
字逻辑指令
14.4 WXOR_W:单字异或运算(字)
符号
WXOR_W
EN
IN1
IN2
OUT
ENO
参数
数据类型
内存区域
描述
使能输入
逻辑运算的第一个值
逻辑运算的第二个值
逻辑运算结果
使能输出
EN BOOL I
、
Q
、
M
、
D
、
L
IN1 WORD I
、
Q
、
M
、
D
、
L
或常数
IN2 WORD I
、
Q
、
M
、
D
、
L
或常数
OUT WORD I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
描述
(字)单字或运算指令由位于使能输入
(EN)
的信号状态
1
激活,并根据或运算真值
表逐位组合位于输入
IN1
和
IN2
的两个数值。这些值被解释为纯位模式。结果可
在输出
OUT
处扫描。
ENO
具有与
EN
相同的信号状态。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 X 0 0 - X 1 1 1
举例
WXOR_W
I 0.0
MW0
2#1111
EN
IN1
IN2
OUT
ENO
MW2
Q 4.0
=
当输入
I0.0
为
1
时,会激活该指令。
IN1 = 0101
IN2 = 1111
OUT = 1010
如果执行了该指令,则
Q4.0
为
1
。
14-4
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
字逻辑指令
14.5 WAND_DW:双字与运算(字)
符号
WAND_DW
EN
IN1
IN2
OUT
ENO
数据类型
内存区域
描述
使能输入
逻辑运算的第一个值
参数
EN BOOL I
、
Q
、
M
、
D
、
L
、
T
、
C
IN1 DWORD I
、
Q
、
M
、
D
或常数
L
IN2 DWORD I
、
Q
、
M
、
D
、
L
或常逻辑运算的第二个值
数
OUT DWORD I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
逻辑运算结果
使能输出
描述
(字)双字与运算指令由位于使能输入
(EN)
的信号状态
1
激活,并根据与运算真值
表逐位组合位于输入
IN1
和
IN2
的两个数值。这些值被解释为纯位模式。结果可
在输出
OUT
处扫描。
ENO
具有与
EN
相同的信号状态。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 X 0 0 - X 1 1 1
举例
WAND_DW
I 0.0
MD0
DW#16#FFF
EN
IN1
IN2
OUT
ENO
MD4
Q 4.0
=
当
I0.0
为
1
时会激活该指令。只有
0
到
11
之间的位是相关的,所有其它
MD4
位都被屏蔽。
IN1 = 0101 0101
IN2 = 0000 1111
OUT = 0000 0101
如果执行了该指令,则
Q4.0
为
1
。
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
14-5
字逻辑指令
14.6 WOR_DW:双字或运算(字)
符号
WOR_DW
EN
IN1
IN2
OUT
ENO
数据类型
内存区域
描述
使能输入
参数
EN BOOL I
、
Q
、
M
、
D
、
L
、
T
、
C
IN1 DWORD I
、
Q
、
M
、
D
、
L
或常逻辑运算的第一个值
数
IN2 DWORD I
、
Q
、
M
、
D
、
L
或常逻辑运算的第二个值
数
OUT DWORD I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
逻辑运算结果
使能输出
描述
(字)双字或运算指令由位于使能输入
(EN)
的信号状态
1
激活,并根据或运算真值
表逐位组合位于输入
IN1
和
IN2
的两个数值。这些值被解释为纯位模式。结果可
在输出
OUT
处扫描。
ENO
具有与
EN
相同的信号状态。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 X 0 0 - X 1 1 1
举例
WOR_DW
I 0.0
MD0
DW#16#FFF
EN
IN1
IN2
OUT
ENO
MD4
Q 4.0
=
当
I0.0
为
1
时将激活该指令。对
MD0
中的位和常数中的位执行或运算,
0
到
11
之间的位被设置为
1
,
MD0
的所有其它位均以不变形式被输入
MD4
中。
IN1 = 0101 0101
IN2 = 0000 1111
OUT = 0101 1111
如果执行了该指令,则
Q4.0
为
1
。
14-6
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
字逻辑指令
14.7 WXOR_DW:双字异或运算(字)
符号
WXOR_DW
EN
IN1
IN2
OUT
ENO
数据类型
内存区域
描述
使能输入
逻辑运算的第一个值
逻辑运算的第二个值
逻辑运算结果
使能输出
参数
EN BOOL I
、
Q
、
M
、
D
、
L
、
T
、
C
IN1 DWORD I
、
Q
、
M
、
D
、
L
或常
数
IN2 DWORD I
、
Q
、
M
、
D
、
L
或常
数
OUT DWORD I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
描述
(字)双字异或运算指令由位于使能输入
(EN)
的信号状态
1
激活,并根据异或运算
真值表逐位组合位于输入
IN1
和
IN2
的两个数值。这些值被解释为纯位模式。结
果可在输出
OUT
处扫描。
ENO
具有与
EN
相同的信号状态。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 X 0 0 - X 1 1 1
举例
WXOR_DW
I 0.0
MD0
DW#16#FFF
EN
IN1
IN2
OUT
ENO
MD4
Q 4.0
=
当输入
I0.0
为
1
时,会激活该指令。
IN1 = 0101 0101
IN2 = 0000 1111
OUT = 0101 1010
如果执行了该指令,则
Q4.0
为
1
。
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
14-7
字逻辑指令
14-8
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
A 全部FBD指令概述
A.1
德语助记符
根据德语助记符(SIMATIC)排序的FBD指令
英语助记符 程序元素分类 描述
“与”逻辑操作
“或”逻辑操作
赋值
中间输出
插入数字输入
数字输入取反
结果位
结果位
结果位
结果位
结果位
结果位
浮点数的绝对值运算
计算以浮点数表示的角的三角函数
加双精度整型
加整型
加实型
计算以浮点数表示的角的三角函数
计算以浮点数表示的角的三角函数
& & 位逻辑指令
=>1 >=1 位逻辑指令
= = 位逻辑指令
# # 位逻辑指令
---| ---| 位逻辑指令
---o| ---o| 位逻辑指令
==0 ==0 状态位
>0 >0 状态位
=>0 >=0 状态位
<0 <0 状态位
=<0 <=0 状态位
<>0 <>0 状态位
ABS ABS 浮点算术运算指令
ACOS ACOS 浮点算术运算指令
ADD_DI ADD_DI 整数算术运算指令
ADD_I ADD_I 整数算术运算指令
ADD_R ADD_R 浮点算术运算指令
ASIN ASIN 浮点算术运算指令
ATAN ATAN 浮点算术运算指令
BCD_DI BCD_DI 转换 BCD码转换为双精度整型
BCD_I BCD_I 转换 BCD码转换为整型
BIE BR 状态位 BR存取区异常位
CALL CALL 程序控制指令 调用无参数的FC/SFC
CALL_FB CALL_FB 程序控制指令 CALL_FB (以框方式调用FB)
CALL_FC CALL_FC 程序控制指令 CALL_FC (以框方式调用FC)
CALL_SFB CALL_SFB 程序控制指令 CALL_SFB (以框方式调用系统FB)
CALL_SFC CALL_SFC 程序控制指令 CALL_SFC (以框方式调用系统FC)
CEIL CEIL 转换指令
CMP ?D CMP ?D 比较指令
上限
比较双精度整数
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
A-1
全部
FBD
指令概述
德语助记符
CMP ?I
CMP ?R
英语助记符
CMP ?I
CMP ?R
程序元素分类
比较指令
比较指令
描述
整数比较
比较实数
计算以浮点数表示的角的三角函数
双精度整型转换为BCD码
双精度整型转换为实型
除双精度整型
除整型
除实型
计算浮点数的指数值
基数
整型转换为BCD码
整型转换为双精度整型
对整型数求反码
二进制反码双精度整型
块中无条件跳转
块中有条件跳转
若非则跳转
跳转标签
计算浮点数的自然对数
主控继电器开/关
主控继电器开/关
主控继电器激活/去活
主控继电器激活/去活
返回分数双精度整型
赋值
乘双精度整型
乘整型
乘实型
地址负跳沿检测
二进制补码双精度整型
二进制补码整型
实数取反
打开数据块
存储的溢出异常位
溢出异常位
地址正跳沿检测
复位输出
返回
循环左移双字
COS COS 浮点算术运算指令
DI_BCD DI_BCD 转换指令
DI_R DI_R 转换指令
DIV_DI DIV_DI 整数算术运算指令
DIV_I DIV_I 整数算术运算指令
DIV_R DIV_R 浮点算术运算指令
EXP EXP 浮点算术运算指令
FLOOR FLOOR 转换指令
I_BCD I_BCD 转换指令
I_DI I_DI 转换指令
INV_I INV_I 转换指令
INV_DI INV_DI 转换指令
JMP JMP 跳转
JMP JMP 跳转
JMPN JMPN 跳转
LABEL LABEL 跳转
LN LN 浮点算术运算指令
MCR> MCR> 程序控制
MCR< MCR< 程序控制
MCRA MCRA 程序控制
MCRD MCRD 程序控制
MOD_DI MOD_DI 整数算术运算指令
MOVE MOVE 传送
MUL_DI MUL_DI 整数算术运算指令
MUL_I MUL_I 整数算术运算指令
MUL_R MUL_R 浮点算术运算指令
NEG NEG 位逻辑指令
NEG_DI NEG_DI 转换指令
NEG_I NEG_I 转换指令
NEG_R NEG_R 转换指令
OPN OPN DB调用指令
OS OS 状态位指令
OV OV 状态位指令
POS POS 位逻辑指令
R R 位逻辑指令
RET RET 程序控制
ROL_DW ROL_DW 移位/循环
N N 位逻辑指令 RLO负跳沿检测
P P 位逻辑指令 RLO正跳沿检测
A-2
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
全部
FBD
指令概述
德语助记符 英语助记符 程序元素分类 描述
取整为双精度整型
循环右移双字
复位置位触发器
置位输出
启动断开延时定时器
将RLO存入BR存储区
设置断开延时定时器参数并启动
设置接通延时定时器参数并启动
设置接通延时定时器参数并启动
双字左移
左移字
右移双精度整型
右移双字
右移整型
右移字
启动脉冲定时器
设置脉冲定时器参数并启动
计算以浮点数表示的角的三角函数
浮点数平方(SQR)运算
计算浮点数的平方根(SQRT)
置位复位触发器
启动掉电保护接通延时定时器
设置掉电保护接通延时定时器参数并启动
减双精度整型
减整型
减实型
启动延时脉冲定时器
设置延时脉冲定时器参数并启动
设置计数器值
计算以浮点数表示的角的三角函数
截尾取整数部分
例外位无序
双字与运算(字)
单字与运算(字)
双字或运算(字)
单字或运算(字)
双字异或运算(字)
单字异或运算(字)
“异或”逻辑操作
ROUND ROUND 转换指令
ROR_DW ROR_DW 移位/循环
RS RS 位逻辑指令
S S 位逻辑指令
SA SF 定时器
SAVE SAVE 位逻辑指令
S_AVERZ S_OFFDT 定时器
SE SD 定时器
S_EVERZ S_ODT 定时器
SHL_DW SHL_DW 移位/循环
SHL_W SHL_W 移位/循环
SHR_DI SHR_DI 移位/循环
SHR_DW SHR_DW 移位/循环
SHR_I SHR_I 移位/循环
SHR_W SHR_W 移位/循环
SI SP 定时器
S_IMPULS S_PULSE 定时器
SIN SIN 浮点算术运算指令
SQR SQR 浮点算术运算指令
SQRT SQRT 浮点算术运算指令
SR SR 位逻辑指令
SS SS 定时器
S_SEVERZ S_ODTS 定时器
SUB_DI SUB_DI 整数算术运算指令
SUB_I SUB_I 整数算术运算指令
SUB_R SUB_R 浮点算术运算指令
SV SE 定时器
S_VIMP S_PEXT 定时器
SZ SC 计数器
TAN TAN 浮点算术运算指令
TRUNC TRUNC 转换指令
UO UO 状态位
WAND_DW WAND_DW 字逻辑指令
WAND_W WAND_W 字逻辑指令
WOR_DW WOR_DW 字逻辑指令
WOR_W WOR_W 字逻辑指令
WXOR_DW WXOR_DW 字逻辑指令
WXOR_W WXOR_W 字逻辑指令
XOR XOR 位逻辑指令
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
A-3
全部
FBD
指令概述
德语助记符 英语助记符 程序元素分类
计数器
计数器
计数器
描述
分配参数和递增/递减计数
值减计数器
分配参数和递减计数
值加计数器
分配参数和递增计数
ZAEHLER S_CUD
Z_RUECK S_CD
Z_VORW S_CU
ZR CD 计数器
ZV CU 计数器
A-4
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
全部
FBD
指令概述
A.2
英语助记符
根据英语助记符(国际)排序的FBD指令
德语助记符 程序元素分类 描述
“与”逻辑操作
“或”逻辑操作
赋值
中间输出
插入数字输入
数字输入取反
结果位
结果位
结果位
结果位
结果位
结果位
浮点数的绝对值运算
计算以浮点数表示的角的三角函数
加双精度整型
加双精度整型
加实型
计算以浮点数表示的角的三角函数
计算以浮点数表示的角的三角函数
& & 位逻辑指令
=>1 >=1 位逻辑指令
= = 位逻辑指令
# # 位逻辑指令
---| ---| 位逻辑指令
---o| ---o| 位逻辑指令
==0 ==0 状态位
>0 >0 状态位
=>0 >=0 状态位
<0 <0 状态位
=<0 <=0 状态位
<>0 <>0 状态位
ABS ABS 浮点算术运算指令
ACOS ACOS 浮点算术运算指令
ADD_DI ADD_DI 整数算术运算指令
ADD_I ADD_I 整数算术运算指令
ADD_R ADD_R 浮点算术运算指令
ASIN ASIN 浮点算术运算指令
ATAN ATAN 浮点算术运算指令
BCD_DI BCD_DI 转换指令 BCD码转换为双精度整型
BCD_I BCD_I 转换指令 BCD码转换为整型
BR BIE 状态位指令 BR存取区异常位
CALL CALL 程序控制指令 调用无参数的FC/SFC
CALL_FB CALL_FB 程序控制指令 CALL_FB (以框方式调用FB)
CALL_FC CALL_FC 程序控制指令 CALL_FC (以框方式调用FC)
CALL_SFB CALL_SFB 程序控制指令 CALL_SFB (以框方式调用系统FB)
CALL_SFC CALL_SFC 程序控制指令 CALL_SFC (以框方式调用系统FC)
CD ZR 计数器指令
CEIL CEIL 转换指令
CMP ?D
CMP ?I
CMP ?R
CMP ?D
CMP ?I
CMP ?R
比较指令
比较指令
比较指令
值减计数器
上限
比较双精度整数
整数比较
比较实数
计算以浮点数表示的角的三角函数
值加计数器
双精度整型转换为BCD码
双精度整型转换为实型
除双精度整型
除整型
除实型
COS COS 浮点算术运算指令
CU ZV 计数器指令
DI_BCD DI_BCD 转换指令
DI_R DI_R 转换指令
DIV_DI DIV_DI 整数算术运算指令
DIV_I DIV_I 整数算术运算指令
DIV_R DIV_R 浮点算术运算指令
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
A-5
全部
FBD
指令概述
英语助记符 德语助记符 程序元素分类 描述
计算浮点数的指数值
基数
整型转换为BCD码
整型转换为双精度整型
对整型数求反码
二进制反码双精度整型
块中无条件跳转
块中有条件跳转
若非则跳转
跳转标签
计算浮点数的自然对数
主控继电器开/关
主控继电器开/关
主控继电器激活/去活
主控继电器激活/去活
返回分数双精度整型
赋值
乘双精度整型
乘整型
乘实型
地址负跳沿检测
二进制补码双精度整型
二进制补码整型
实数取反
打开数据块
存储的溢出异常位
溢出异常位
地址正跳沿检测
复位输出
返回
循环左移双字
取整为双精度整型
循环右移双字
复位置位触发器
置位输出
将RLO存入BR存储区
EXP EXP 浮点算术运算指令
FLOOR FLOOR 转换指令
I_BCD I_BCD 转换指令
I_DI I_DI 转换指令
INV_I INV_I 转换指令
INV_DI INV_DI 转换指令
JMP JMP 跳转
JMP JMP 跳转
JMPN JMPN 跳转
LABEL LABEL
跳转
LN LN 浮点算术运算指令
MCR> MCR> 程序控制
MCR< MCR< 程序控制
MCRA MCRA 程序控制
MCRD MCRD 程序控制
MOD_DI MOD_DI 整数算术运算指令
MOVE MOVE 传送
MUL_DI MUL_DI 整数算术运算指令
MUL_I MUL_I 整数算术运算指令
MUL_R MUL_R 浮点算术运算指令
NEG NEG 位逻辑指令
NEG_DI NEG_DI 转换指令
NEG_I NEG_I 转换指令
NEG_R NEG_R 转换指令
OPN OPN DB调用
OS OS 状态位
OV OV 状态位
POS POS 位逻辑指令
R R 位逻辑指令
RET RET 程序
控制
ROL_DW ROL_DW 移位/循环指令
ROUND ROUND 转换指令
ROR_DW ROR_DW 移位/循环指令
RS RS 位逻辑指令
S S 位逻辑指令
SAVE SAVE 位逻辑指令
N N 位逻辑指令 RLO负跳沿检测
P P 位逻辑指令 RLO正跳沿检测
A-6
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
全部
FBD
指令概述
英语助记符 德语助记符 程序元素分类 描述
设置计数器值
分配参数和递减计数
分配参数和递增计数
分配参数和递增/递减计数
启动接通延时定时器
启动延时脉冲定时器
启动断开延时定时器
双字左移
左移字
右移双精度整型
右移双字
右移整型
右移字
计算以浮点数表示的角的三角函数
设置接通延时定时器参数并启动
设置掉电保护接通延时定时器参数并启动
设置断开延时定时器参数并启动
启动脉冲定时器
设置延时脉冲定时器参数并启动
设置脉冲定时器参数并启动
浮点数平方(SQR)运算
计算浮点数的平方根(SQRT)
置位复位触发器
启动掉电保护接通延时定时器
减双精度整型
减整型
减实型
计算以浮点数表示的角的三角函数
截尾取整数部分
例外位无序
双字与运算(字)
单字与运算(字)
双字或运算(字)
单字或运算(字)
双字异或运算(字)
单字异或运算(字)
“异或”逻辑操作
SC SZ 计数器指令
S_CD Z_RUECK 计数器指令
S_CU Z_VORW 计数器指令
S_CUD ZAEHLER
计数器
SD SE 定时器指令
SE SV 定时器指令
SF SA 定时器指令
SHL_DW SHL_DW 移位/循环指令
SHL_W SHL_W 移位/循环指令
SHR_DI SHR_DI 移位/循环指令
SHR_DW SHR_DW 移位/循环指令
SHR_I SHR_I 移位/循环指令
SHR_W SHR_W 移位/循环指令
SIN SIN 浮点算术运算指令
S_ODT S_EVERZ 定时器指令
S_ODTS S_SEVERZ 定时器指令
S_OFFDT S_AVERZ 定时器指令
SP SI 定时器指令
S_PEXT S_VIMP 定时器指令
S_PULSE S_IMPULS 定时器指令
SQR SQR 浮点算术运算指令
SQRT SQRT 浮点算术运算指令
SR SR 位逻辑指令
SS SS 定时器指令
SUB_DI SUB_DI 整数算术运算指令
SUB_I SUB_I 整数算术运算指令
SUB_R SUB_R 浮点算术运算指令
TAN TAN 浮点算术运算指令
TRUNC TRUNC 转换指令
UO UO 状态位指令
WAND_DW WAND_DW 字逻辑指令
WAND_W WAND_W 字逻辑指令
WOR_DW WOR_DW 字逻辑指令
WOR_W WOR_W 字逻辑指令
WXOR_DW WXOR_DW 字逻辑指令
WXOR_W WXOR_W 字逻辑指令
XOR XOR 位逻辑指令
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
A-7
编程实例
A-8
S7-300和S7-400的功能块图(FBD)编程
5E01112994-01
B 编程实例
B.1
实际应用
编程举例概述
每一个语句表指令都触发一个特定的操作。将这些指令组合到程序中后,可以完
成很多种类的自动化任务。本章提供下列实际应用语句表指令的实例:
• 控制传送带使用位逻辑指令
• 检测传送带的移动方向使用位逻辑指令使用位逻辑指令
• 生成时钟脉冲使用定时器指令
• 监视存储空间使用计数器和比较指令
• 使用整数算术运算指令解题
• 设置加热烘炉的时长
使用的指令
助记符
WAND_W
WOR_W
S_CD
S_CU
R
S
P
ADD_I
DIV_I
MUL_I
CMP >=I、CMP <=I
&
>=1
=
JMPN
RET
MOVE
SE
程序元素分类 描述
字逻辑指令 (字)单字与运算
字逻辑指令 (字)单字或运算
计数器指令 值减计数器
计数器指令 值加计数器
位逻辑指令 复位输出
位逻辑指令 设置输出
位逻辑指令 RLO正跳沿检测
浮点算术运算指令 加整型
浮点指令 除整型
浮点指令 乘整型
比较 整数比较
位逻辑指令 与运算
位逻辑指令 或运算
位逻辑指令 赋值
跳转指令 若非则跳转
程序控制指令 返回
传送指令 赋值
定时器指令 延时脉冲定时器
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
B-1
编程实例
B.2 举例:位逻辑指令
举例1:控制传送带
下图显示可以电气启动的传送带。在传送带的开始位置有两个按钮开关:用于启
动的S1和用于停止的S2。在传送带尾端也有两个按钮开关:用于启动的S3和
用于停止的S4。从任何一端都可以启动或停止传送带。另外,当传送带上的物
品到达末端时传感器S5会使传送带停止。
传感器S5
MOTOR_ON
S1
S2
O启动
O停止
S3
S4
O启动
O停止
绝对编程和符号编程
您可以使用代表传送机系统各种组件的绝对值或符号编写程序,借以激活传送带
系统的方向显示。
您需要制定一个符号表,使您所选择的符号与绝对值建立关联
(
参见
STEP 7
在
线帮助
)
。
系统组件
启动按钮开关
停止按钮开关
启动按钮开关
停止按钮开关
传感器
电机
绝对地址
I 1.1
I 1.2
I 1.3
I 1.4
I 1.5
Q 4.0
符号
S1
S2
S3
S4
S5
MOTOR_ON
符号表
I 1.1 S1
I 1.2 S2
I 1.3 S3
I 1.4 S4
I 1.5 S5
Q 4.0 MOTOR_ON
B-2
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
编程实例
传送带控制功能块图
程序段
1
:按任一个启动开关接通电机。
I 1.1
I 1.3
>=1
Q 4.0
S
程序段
2
:按任一停止开关或打开传送带末端的传感器的常闭触点,可以关闭电
机。
I 1.2
I 1.4
I 1.5
>=1
Q 4.0
R
举例2:检测传送带方向
下图显示配备两个光电屏障
(PEB1
和
PEB2)
的传送带,它们专用于检测包裹在
传送带上移动的方向。每个光电屏障都起到类似常开触点的作用。
Q 4.0
PEB2PEB1
Q 4.1
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
B-3
编程实例
绝对编程和符号编程
可以使用代表传送系统各种组件的绝对值或符号编写激活传送带系统方向显示的
程序。
您需要制定一个符号表,使您所选择的符号与绝对值建立关联
(
参见
STEP 7
在
线帮助
)
。
系统组件
光电屏障
1
光电屏障
2
右向移动显示
左向移动显示
脉冲存储位
1
脉冲存储位
2
绝对
地址
I 0.0
I 0.1
Q 4.0
Q 4.1
M 0.0
M 0.1
符号
PEB1
PEB2
RIGHT
LEFT
PMB1
PMB2
符号表
I 0.0 PEB1
I 0.1 PEB2
Q 4.0 RIGHT
Q 4.1 LEFT
M 0.0 PMB1
M 0.1 PMB2
用于检测传送带方向的功能块图
程序段
1
:如果输入
I 0.0
处信号状态从
0
变到
1 (
上升沿
)
,同时输入
I 0.1
处信
号状态为
0
,则传送带上的包裹会正在向左移动。
M 0.0
I 0.0
P
I 0.1
&
Q 4.1
S
程序段
2
:如果输入
I 0.1
处信号状态从
0
变到
1 (
上升沿
)
,同时输入
I 0.0
处信
号状态为
0
,则传送带上的包裹会正在向右移动。
M 0.1
I 0.1
P
I 0.0
&
Q 4.0
S
程序段
3
:如果光电屏障之一被中断,则表明屏障之间有包裹。方向指针关闭。
&
I 0.0
I 0.1
Q 4.0
R
Q 4.1
R
B-4
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
编程实例
B.3 举例:定时器指令
时钟脉冲发生器
需要产生周期性重复的信号时,可以使用时钟脉冲发生器或闪烁继电器。时钟脉
冲发生器在控制指示灯闪烁的信号系统中是公用的。
使用
S7-300
时,可以通过在专用组织块中使用时间驱动处理来实现时钟脉冲发
生器功能。然而,下列
FBD
程序中显示的实例说明了使用定时器功能生成时钟
脉冲。此示例程序显示如何使用定时器实现自由设定时钟脉冲发生器。
产生时钟脉冲(脉冲占空比1:1)的功能块图
程序段
1
:如果定时器
T1
的信号状态为
0
,将时间值
250
毫秒装入
T1
,并将
T1
作为延时脉冲定时器启动。
T 1
M0.2
&
SE
S5T#250MS
T
程序段
2
:该定时器的状态临时保存在一个辅助的内存标记中。
M0.2
T 1
&
=
程序段
3
:如果定时器
T1
的信号状态为
1
,则跳转至跳转标签
M001
。
M001
M0.2
&
JMP
程序段
4
:定时器
T1
到时后,存储字节
100
增加
1
。
ADD_I
.?EN
MW100IN1OUTMW100
1IN2ENO
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
B-5
编程实例
信号检查
B-6
程序段
5
:MOVE指令允许在输出
Q12.0
到
Q13.7
处输出不同的时钟频率。
M001
MOVE
.?ENOUTQW12
MW100INENO
在以下时钟脉冲实例中,对于与逻辑操作取反的输入参数
(M0.2)
来说,定时器
T1
的信号检查将产生下列逻辑运算结果
(RLO)
:
1
0
250 ms
只要时间一结束,定时器就将重新启动。因此,该信号只是很短暂地产生一个信
号状态
1
。
取反
(
反向
) RLO
:
1
0
250 ms
每隔
250msRLO
位都为
0
一次。跳转被忽略,而存储字节
MW100
的内容增加
1
。
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
编程实例
获得专用频率
通过存储字节
MB101
和
MB100
的每个位可以获得下列频率:
MB101/MB100的位
M 101.0
M 101.1
M 101.2
M 101.3
M 101.4
M 101.5
M 101.6
M 101.7
M 100.0
M 100.1
M 100.2
M 100.3
M 100.4
M 100.5
M 100.6
M 100.7
频率(赫兹)
2.0
1.0
0.5
0.25
0.125
0.0625
0.03125
0.015625
0.0078125
0.0039062
0.0019531
0.0009765
0.0004882
0.0002441
0.000122
0.000061
持续时间
0.5
秒
(250
毫秒开
/250
毫秒关
)
1
秒
(0.5
秒开
/0.5
秒关
)
2
秒
(1
秒开
/1
秒关
)
4
秒
(2
秒开
/2
秒关
)
8
秒
(4
秒开
/4
秒关
)
16
秒
(8
秒开
/8
秒关
)
32
秒
(16
秒开
/16
秒关
)
64
秒
(32
秒开
/32
秒关
)
128
秒
(64
秒开
/64
秒关
)
256
秒
(128
秒开
/128
秒关
)
512
秒
(256
秒开
/256
秒关
)
1024
秒
(512
秒开
/512
秒关
)
2048
秒
(1024
秒开
/1024
秒关
)
4096
秒
(2048
秒开
/2048
秒关
)
8192
秒
(4096
秒开
/4096
秒关
)
16384
秒
(8192
秒开
/8192
秒关
)
存储字节MB 101的各位信号状态
扫描
周期
位7 位6 位5 位4 位3 位2 位1 位0 时间值
(毫秒)
0 0 0 0 0 0 0
0
1 0 0 0 0 0 0
0
0 250
1 250
2 0 0 0 0 0 0 1 0 250
3 0 0 0 0 0 0 1 1 250
4 0 0 0 0 0 1
0
5 0 0 0 0 0 1
0
0 250
1 250
6 0 0 0 0 0 1 1 0 250
7 0 0 0 0 0 1 1 1 250
8 0 0 0 0 1 0
0
9 0 0 0 0 1 0
0
0 250
1 250
10 0 0 0 0 1 0 1 0 250
11 0 0 0 0 1 0 1 1 250
12 0 0 0 0 1 1
0
0 250
MB 101位1(M 101.1)的信号状态
频率
= 1/T = 1/1
秒
= 1
赫兹
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
B-7
编程实例
T
M 101.1
1
0
0
250 ms 0.5 s 0.75 s 1 s 1.25 s
时间
B-8
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
编程实例
B.4 举例:计数器和比较指令
带计数器和比较器的存储区
下图显示带有两个传送带并且两个带之间有一个临时存储区的系统。传送带
1
将
包裹传送到存储区。传送带
1
的末端靠近存储区处有一个光电屏障,它确定已向
存储区传送的包裹的数量。传送带
2
将包裹从临时存储区传输到装载货场,卡车
从此处取走包裹发送给用户。传送带
2
的末端靠近存储区处有一个光电屏障,它
确定离开存储区进入装载码头的包裹的数量。带有
5
个指示灯的显示面板指示临
时存储区的占用程度。
显示面板
存储区域
空
(Q 12.0)
存储区域
非空
(Q 12.1)
存储区域
50%满
(Q 15.2)
存储区域
90%满
(Q 15.3)
填充到一定容量
(Q 15.4)
存储区域
包裹输入
I 12.0100个
包裹的
临时
存储区域
I 12.1
包裹输出
传送带
1
光电屏障
1
传送带
2
传送带
2
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
B-9
编程实例
启动显示面板上的指示灯的功能块图
程序段
1
:计数器
C1
对输入端
CU
处从“
0
”到“
1
”的每次信号切换都进行正
计数,而对输入端
CD
处从“
0
”到“
1
”的每次信号切换都进行倒计数。对于输
入端
S
处从“
0
”到“
1
”的信号切换,计数器值被设置为值
PV
。输入端
R
处从
“
0
”到“
1
”的信号切换将计数器值复位为“
0
”。
MW200
包含
C1
的当前计数
器值。
Q12.1
指示“存储区不空”。
C1
S_CUD
I 12.0
I 12.1
I 12.2
C#10
I 12.3
CU
CD
S
CV
MW210
MW200
Q 12.1
=
PV
CV
_
BCD
R
Q
程序段
2
:
Q12.0
表明“存储区为空”。
Q 12.0
Q 12.1&
=
程序段
3
:如果
50
小于等于计数器值
(
换句话说,如果当前计数器值大于等于
50)
,则表示“存储区
50%
满”的指示灯变亮。
CMP
<= I
50
MW200
IN1
IN2
Q 15.2
=
程序段
4
:如果计数器值大于等于
90
,“存储区满
90%
”指示灯变亮。
CMP
>= I
MW200
90
IN1
IN2
Q 15.3
=
程序段
5
:如果计数器值大于或等于
100
,则表示“存储区满”的指示灯变亮。
CMP
>= I
MW200
100
IN1
IN2
Q 15.4
=
B-10
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
编程实例
B.5 举例:整数算术运算指令
解决数学问题
此示例程序显示如何使用三个整数算术运算指令产生与下列等式相同的结果:
MW4 = ((IW0 + DBW3) x 15) / MW0
功能块图
程序段
1
:打开数据块
DB1
。
DB1
OPN
程序段
2
:输入字
IW0
与共享数据字
DBW3
相加
(
必须定义和打开数据块
)
,然后
总和被载入存储字节
MW100
。然后,
MW100
乘以
15
,结果存储到存储字节
MW102
中。
MW102
除以
MW0
,结果存储到
MW4
中。
.?
IW0
DBW3
ADD_I
EN
IN1
IN2
OUT
ENO
MW100
15
MW100
MUL_I
EN
IN1
IN2
OUT
ENO
MW102
MW0
MW102
DIV_I
EN
IN1
IN2
OUT
ENO
MW4
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
B-11
编程实例
B.6
加热烘炉
举例:字逻辑指令
烘炉操作员按启动按钮开始烘炉加热。操作员可以使用图中所示的拨码开关设置
加热时长。操作员设置的值以二进制编码十进制
(BCD)
格式用秒为单位显示。
用于设置
BCD
位的指轮开关
烘炉
444
...0
加热
Q 4.0
7....
...07...
位
X X X X
IB0
0 0 0 11 0 0 1
IB1
0 0 0 1
IW0
字节
启动按钮
I 0.7
系统组件
绝对
地址
启动按钮 I 0.7
个位拨码开关 I 1.0到I 1.3
十位拨码开关 I 1.4到I 1.7
百位拨码开关 I 0.0到I 0.3
加热开始 Q 4.0
B-12
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
编程实例
功能块图
程序段
1
:如果定时器正在运行,则打开加热装置。
Q 4.0
T 1
&
=
程序段
2
:如果定时器正在计时,返回指令结束此处的处理。
T 1
&
RET
程序段
3
:屏蔽输入位
I 0.4
到
I 0.7 (
即,将它们复位为
0)
。不使用拨码开关输入
的这些位。
16
位拨码开关输入根据(字)单字与运算指令与
W#16#0FFF
组合。结
果载入存储器字
MW1
中。为了设置时间基准的秒数,预设值根据(字)单字或运
算指令与
W#16#2000
组合,将位
13
设置为
1
,并将位
12
复位为
0
。
WAND_W
.?
IW0
W#16#FFF
EN
IN1
IN2
OUT
ENO
MW1
W#16#2000
MW1
WOR_W
EN
IN1
IN2
OUT
ENO
MW2
程序段
4
:如果按下启动按钮,则将定时器
T1
按延时脉冲定时器方式启动,并
作为预设值存储字节
MW2
装载
(
来自上述逻辑
)
。
T 1
I 0.7
&
MW2
SE
TV
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
B-13
2024年3月15日发(作者:笪鸾)
浮点算术运算指令
参数
数据类型
内存区域
描述
EN BOOL I
、
Q
、
M
、
D
、
L
、使能输入
T
、
C
IN REAL I
、
Q
、
M
、
D
、
L
或编号
常数
OUT REAL I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
该数的反余弦
使能输出
符号
TAN
EN
OUT
INENO
参数
数据类型
内存区域
描述
EN BOOL I
、
Q
、
M
、
D
、
L
、使能输入
T
、
C
IN REAL I
、
Q
、
M
、
D
、
L
或编号
常数
OUT REAL I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
该数的正切
使能输出
符号
ATAN
ENOUT
IN
ENO
参数
数据类型
内存区域
描述
EN BOOL I
、
Q
、
M
、
D
、
L
、使能输入
T
、
C
IN REAL I
、
Q
、
M
、
D
、
L
或编号
常数
OUT REAL I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
该数的反正切
使能输出
8-14
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
9 传送指令
9.1 MOVE:赋值
符号
MOVE
EN
IN
OUT
ENO
参数
数据类型
内存区域
描述
EN BOOL I
、
Q
、
M
、
D
、
L
、使能输入
T
、
C
IN
长度为
8
、
16
或
32
位的所有基本
数据类型
长度为
8
、
16
或
32
位的所有基本
数据类型
I
、
Q
、
M
、
D
、
L
或来源值
常数
I
、
Q
、
M
、
D
、
L OUT
目标地址
ENO BOOL I
、
Q
、
M
、
D
、
L
使能输出
描述
使用赋值指令,可将特定的值赋给变量。
在
IN
输入端指定的值将复制到在
OUT
输出端指定的地址。
ENO
具有与
EN
相
同的信号状态。
使用
MOVE
框,赋值指令可复制长度为
8
、
16
或
32
位的所有基本数据类型。用
户自定义的数据类型
(
例如数组或结构
)
则必须使用系统功能
SFC 20
“
BLKMOV
”复制。
赋值指令受主控继电器
(MCR)
的影响。关于
MCR
如何起作用的更详细信息,请
参考主控继电器开
/
关。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 - - - - 0 1 1 1
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
9-1
传送指令
注意
将某个值传送给另一长度的数据类型时,将根据需要截断或以零填充高位字节:
举例:双字
传送
到双字:
到字节:
到字:
1111 1111 0000 1111
0000 1111
1111 0000
1111 0000
1111 0000
0101 0101
0101 0101
0101 0101
结果
1111 1111
0101 0101
举例:字节
传送
到字节:
到字:
到双字:
1111 0000
结果
1111 0000
0000 0000
0000 0000
0000 0000
0000 0000
1111 0000
1111 0000
举例
MOVE
I 0.0
MW10
EN
IN
OUT
ENO
DBW12
Q 4.0
=
在输入
I0.0
为
1
时执行该指令。结果将
MW10
的内容复制到打开的
DB
的数据
字
12
中。
执行该指令后,会将
Q4.0
置
1
。
9-2
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
10 程序控制指令
10.1 程序控制指令概述
描述
下列指令可用于执行程序控制操作:
•
CALL
:
调用无参数的
FC/SFC
•
CALL_FB
:
以框方式调用
FB
•
CALL_FC
:
以框方式调用
FC
•
CALL_SFB
:
以框方式调用系统
FB
•
CALL_SFC
:
以框方式调用系统
FC
• 调用多重背景
• 从库中调用块
• 主控继电器指令
• 使用
MCR
函数的重要注意事项
•
MCR<
主控继电器打开
•
MCR>
主控继电器关闭
•
MCRA
主控继电器激活
•
MCRD
主控继电器去活
•
RET
返回
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
10-1
程序控制指令
10.2 CALL:调用无参数的FC/SFC
符号
编号 > CALL 参数 数据类型 内存区域 描述 FC 或 SFC 的编号 ( 例如, FC10 或 SFC59) 。可 用的 SFC 取决于 CPU 。 编号 BLOCK_FC - 只能在 FB 而不能在 FC 中进行数据类型为 BLOCK_FC 的参数作为地址的条件调用。 描述 通过调用不带参数的FC/SFC指令,可以调用没有参数的功能 (FC) 或系统功能 (SFC) 。这种调用是条件调用还是无条件调用取决于调用前面的逻辑运算 ( 参见举 例 ) 。 在功能 (FC) 的代码段,不能为条件调用将类型为 BLOCK_FC 的任何参数指定为 地址。然而,可以在功能块 (FB) 中将 BLOCK_FC 类型的参数指定为地址。 只有当 RLO 为 1 时,才执行条件调用。当没有执行条件调用时,调用指令后的 RLO 为 0 。当执行了该指令后,执行下列功能: • 保存要求返回调用块的地址。 • 保存数据块寄存器 ( 数据块和背景数据块 ) 。 • 将 MA 位 ( 有效 MCR 位 ) 写入到块堆栈 (BSTACK) 中。 • 为被调用的 FC 或 SFC 创建新的本地数据范围。 然后在被调用块中继续执行程序。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 条件调用 无条件调用 写 - - - - 0 0 1 1 0 写 - - - - 0 0 1 - 0 10-2 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 举例 DB 10 OPN MCRA FC 10 CALL Q 4.0 I 0.0 = MCRD FC 11 I 0.1 CALL 当对 FC10 执行无条件调用时, CALL 指令执行下列功能: • 保存要求返回当前 FB 的地址。 • 为 DB10 和 FB 的背景数据块保存选择器。 • 将在 MCRA 指令中设置成 1 的 MA 位压入块堆栈 (BSTACK) ,然后为被调用 的 FC10 将该位复位成 0 继续在 FC10 中执行程序。如果要在 FC10 中使用 MCR 函数,那么必须在此重 新激活该功能。当完成 FC10 时,程序执行返回到调用 FB 。恢复 MA 位。 DB10 和用户自定义的 FB 的背景数据块重新成为当前 DB ,而与 FC10 使用了哪个 DB 无关。 从 FC10 返回跳转后,将输入 I0.0 的信号状态分配给输出 Q4.0 。 FC11 的调用为 条件调用。只有在输入 I0.1 的信号状态为 1 时才执行调用。如果执行该调用,那 么该功能与调用 FC10 相同。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-3 程序控制指令 10.3 CALL_FB:以框方式调用FB 符号 FB no. ENENO 该符号取决于功能块 ( 是否存在参数以及存在多少个参数 ) 。必须存在 EN 、 ENO 和 FB 的名称或编号。 参数 数据类型 内存区域 描述 使能输入 使能输出 FB/DB 编号,范围取决于 CPU EN BOOL I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D FB 编号 DB 编号 BLOCK_FB BLOCK_DB - - 描述 当 EN 的信号状态为 1 时,执行CALL_FB ( 以框方式调用 FB) 。当执行 CALL_FB 指令调用时: • 保存调用块的返回地址, • 保存当前打开的两个数据块 (DB 和背景 DB) 的选择数据, • 为被调用的功能块创建一个新的本地数据范围。 • 将 MA 位 ( 有效 MCR 位 ) 压入到 BSTACK 中。 状态字 BRCC 1 CC 0 OV OS OR STA RLO FC 条件调用 无条件调用 写 X - - - 0 0 X X X 写 - - - - 0 0 X X X 10-4 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 举例 程序段 1 DB 10 OPN 程序段 2 MCRA 程序段 3 DB 11 FB11 ENENO Q 4.0 = 程序段 4 DB 10 OPN 上面所示的程序段为由用户创建的功能块中的程序段。在该块中打开 DB10 ,并 激活 MCR 。当执行无条件 FB11 调用时,发生下面情况: 保存调用块的返回地址和 DB10 以及调用功能块的背景数据块的选择数据。由 MCRA 指令设置成 1 的 MA 位被压入到 BSTACK 中,然后为被调用的功能块 FB11 将其设置成 0 。继续在 FB11 中执行程序。当 FB11 需要 MCR 时,必须在 功能块中重新激活 MCR 。必须由 [SAVE] 指令在 BR 位中保存 RLO 的信号状态, 以便评估调用 FB 中的错误。当已经执行了 FB11 时,程序返回调用功能块。恢 复 MA 位,且由用户编写的功能块的背景数据块重新成为打开的数据块。当正确 执行 FB11 时, ENO 的信号状态为 1 ,因此, Q4.0 的状态也为 1 。 注意 通过 FB/SFB 调用,丢失上一个打开数据块的编号。必须重新打开所要求的 DB 。 10.4 CALL_FC (以框方式调用FC) 符号 FC no. ENENO 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-5 程序控制指令 该符号取决于功能 ( 是否存在参数以及存在多少个参数 ) 。必须存在 EN 、 ENO 和 FC 的名称或编号。 参数 数据类型 内存区域 描述 使能输入 使能输出 FC 编号,范围取决于 CPU EN BOOL I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D FC 编号 BLOCK_FC - 描述 CALL_FC ( 以框方式调用 FC) 调用一个功能 (FC) 。当 EN 的信号状态为 1 时,执 行该调用。当执行 CALL_FC 指令时: • 保存调用块的返回地址, • 为被调用的功能创建一个新的本地数据范围。 • 将 MA 位 ( 有效 MCR 位 ) 压入到 BSTACK 中。 最后,在被调用功能中继续执行程序。 检查 BR 位,以确定 ENO 。用户必须在被调用块 [SAVE] 中将所要求的信号状态 ( 错误评估 ) 赋值给 BR 位。 当调用一个功能,而被调用块的变量声明表中含有 IN 、 OUT 和 IN_OUT 声明时 ,这些变量以形式参数列表添加到调用块的程序中。 当调用功能时,必须在调用位置处将实际参数赋值给形式参数。功能声明中的任 何初始值都没有意义。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 条件调用 无条件调用 写 X - - - 0 0 X X X 写 - - - - 0 0 X X X 10-6 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 举例 程序段 1 DB 10 OPN 程序段 2 MCRA 程序段 3 FC 10 ENENO FC 11 ENENO Q 4.0 = 上面所示的程序段为由用户创建的功能块中的程序段。在该块中打开 DB10 ,并 激活 MCR 。当执行无条件 FC1 调用时,发生下面情况: 保存调用功能块的返回地址和 DB10 以及调用功能块的背景数据块的选择数据。 由 MCRA 指令设置成 1 的 MA 位被压入到 BSTACK 中,然后为被调用块 FC10 将其设置成 0 。继续在 FC10 中执行程序。当 FC10 要求 MCR 时,必须在 FC10 中重新激活 MCR 。必须由 [SAVE] 指令在 BR 位中保存 RLO 的信号状态,以便评 估调用 FB 中的错误。当已经执行了 FC10 时,程序返回调用功能块。恢复 MA 位。已经执行 FC10 后,根据 ENO 的信号状态,在调用 FB 中继续执行程序, 执行情况如下: ENO = 1 执行 FC11 ENO = 0 在下一个程序段中启动程序 正确执行了 FC11 时,将 ENO 设置成 1 ,因此也将 Q4. 0设置成。 注意 程序返回调用块后,不能始终确保重新打开上一次打开的 DB 。请参见自述文件中的 注意事项。 10.5 CALL_SFB:以框方式调用系统FB 符号 SFB no. ENENO 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-7 程序控制指令 该符号取决于系统功能块 ( 是否存在参数以及存在多少个参数 ) 。必须存在 EN 、 ENO 和 SFB 的名称或编号。 参数 数据类型 内存区域 描述 EN BOOL I 、 Q 、 M 、 L 、使能输入 D ENO BOOL I 、 Q 、 M 、 L 、使能输出 D SFB 编号 DB 编号 BLOCK_SFB - BLOCK_DB - SFB/DB 编号,范围取决于 CPU 描述 当 EN 的信号状态为 1 时,执行CALL_SFB ( 以框方式调用 SFB) 。当执行 CALL_SFB 指令调用时: • 保存调用块的返回地址, • 保存当前打开的两个数据块 (DB 和背景 DB) 的选择数据, • 为被调用的系统功能块创建一个新的本地数据范围。 • 将 MA 位 ( 有效 MCR 位 ) 压入到 BSTACK 中。 最后,在被调用的系统功能块中继续执行程序。当调用该功能且没有发生错误时 , ENO 为 1 。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 条件调用 无条件调用 写 X - - - 0 0 X X X 写 - - - - 0 0 X X X 10-8 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 举例 程序段 1 DB 10 OPN 程序段 2 MCRA 程序段 3 DB 8 SFB 8 EN . . . . . . . . . . ENO Q 4.0 = 程序段 4 DB 10 OPN 上面所示的程序段为由用户创建的功能块中的程序段。在该块中打开 DB10 ,并 激活 MCR 。当执行无条件 SFB8 调用时,发生下面情况: 保存调用块的返回地址和 DB10 以及调用功能块的背景数据块的选择数据。由 MCRA 指令设置成 1 的 MA 位被压入到 BSTACK 中,然后为被调用的系统功能 块 SFB8 将其设置成 0 。继续在 SFB8 中执行程序。当已经执行了 SFB8 时,程 序返回调用功能块。恢复 MA 位,且由用户编写的功能块的背景数据块重新成为 当前数据块。当正确执行 SFB8 时, ENO 的信号状态为 1 ,因此, Q4.0 的状态 也为 1 。 注意 通过 FB/SFB 调用,丢失了上一个打开数据块的编号。必须重新打开所要求的 DB 。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-9 程序控制指令 10.6 CALL_SFC (以框方式调用系统FC) 符号 SFC no. ENENO 该符号取决于是否存在参数以及存在多少个参数。必须存在 EN 、 ENO 和 SFC 的名称或编号。 参数 数据类型 内存区域 描述 使能输入 使能输出 I 、 Q 、 M 、 L 、 D EN BOOL I 、 Q 、 M 、 L 、 D ENO BOOL - SFC 编号,范围取决于 CPU SFC 编号 BLOCK_SFC 描述 CALL_SFC ( 以框方式调用系统 FC) 调用一个系统功能。当 EN 的信号状态为 1 时,执行该调用。当执行 CALL_SFC 指令时: • 保存调用块的返回地址, • 为被调用的系统功能创建一个新的本地数据范围。 • 将 MA 位 ( 有效 MCR 位 ) 压入到 BSTACK 中。 最后,在被调用的系统功能中继续执行程序。当调用该功能且没有发生错误时, ENO 为 1 。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 条件调用 无条件调用 写 X - - - 0 0 X X X 写 - - - - 0 0 X X X 10-10 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 举例 程序段 1 DB 10 OPN 程序段 2 MCRA 程序段 3 SFC 20 EN DBDW12SCRBLK RET_VAL DSTBLK ENO MW10 Q 4.0 = 上面所示的程序段为由用户创建的功能块中的程序段。在该块中打开 DB10 ,并 激活 MCR 。当执行无条件 SFC20 调用时,发生下面情况: 保存调用块的返回地址和 DB10 以及调用功能块的背景数据块的选择数据。由 MCRA 指令设置成 1 的 MA 位被压入到 BSTACK 中,然后为被调用块 SFC20 将其设置成 0 。继续在 SFC20 中执行程序。当已经执行了 SFC20 时,程序返回 调用功能块。恢复 MA 位。 已经执行 SFC20 后,根据 ENO 的信号状态,在调用 FB 中继续执行程序,执行 情况如下: ENO = 1 Q4.0 = 1 ENO = 0 Q4.0 = 0 注意 程序返回调用块后,不能始终确保重新打开上一次打开的 DB 。请参见自述文件中的 注意事项。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-11 编程实例 A-8 S7-300和S7-400的功能块图(FBD)编程 5E01112994-01 程序控制指令 主控继电器的定义 主控继电器 (MCR ,参见主控继电器开 / 关 ) 用于激活和去活信号流。 . 去活的信号 流相当于一个写入零数值而不是已计算数值的指令序列,或相当于一个保持现有 存储值不变的指令序列。由下面所示的指令触发的操作取决于 MCR 。 赋值和中间输出指令在 MCR 为 0 时,将 0 写入到存储器中。置位输出和复位输 出指令保持现有数值不变。 受 MCR 区域影响的指令如下: • # : • = : • R : • S : • SR : • RS : 中间输出 赋值 复位输出 设置输出 置位复位触发器 复位置位触发器 • MOVE : 赋值 程序按MCR的指令执行及其如何对MCR信号状态作出反应 MCR 的信号状态 0 ( “关闭” ) 赋值、 中间输出 写入 0 。 置位或 复位输出 不写入。 移动 写入 0 。 ( 掉电时,模仿继电器的 ( 掉电时,模仿仍然保持 ( 掉电时,模仿生成数值 静止状态。 ) 其当前状态的继电器。 ) “ 0 ”的元件。 ) 1 ( “打开” ) 正常执行 正常执行 正常执行 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-13 程序控制指令 10.10 使用MCR函数的重要注意事项 ! 在使用主控继电器以MCRA方式激活块时应注意 • • 去活 MCR 时,为主控继电器打开和主控继电器关闭之间的程序段中的所有赋值写入数值 0 。这对包含一个赋值的所有框都有效,包括传送到块的参数在内。 当 RLO = 0 时 ( 位于主控继电器打开指令前 ) ,去活 MCR 。 ! 危险:PLC处于STOP状态,或未定义的运行时间特性! 编译器还对在 VAR_TEMP 中定义的临时变量后的本地数据进行写访问,以便计算地址。这 表示下列命令序列将把 PLC 设置成 STOP 状态,或导致未定义的运行时间特性: 形式参数存取 • • • • 存取 STRUCT 、 UDT 、 ARRAY 、 STRING 类型的复杂 FC 参数的组件 存取来自具有多重背景能力的块 (V2 版本的块 ) 的 IN_OUT 区域的 STRUCT 、 UDT 、 ARRAY 、 STRING 类型的复杂 FB 参数的组件。 当地址高于 8180.0 时,访问具有多重背景能力 (V2 版本的块 ) 的功能块的参数。 在具有多重背景能力 (V2 版本的块 ) 的功能块访问类型为 BLOCK_DB 的参数,打开 DB0 。任何后继数据存取都会将 CPU 设置成 STOP 状态。 T 0 、 C 0 、 FC0 或 FB0 也经常用 于 TIMER 、 COUNTER 、 BLOCK_FC 和 LOCK_FB 。 通过调用可传递参数。 梯形图或 FBD 中的 T 分支和中间输出从 RLO = 0 开始。 参数传递 • • LAD/FBD 纠正方法 从上述命令对 MCR 的依赖性,来解题: 1. 在语句或程序段出现问题之前利用主控继电器去激活指令,可以去活主控继电器。 2. 在语句或程序段出现问题之后,利用主控继电器激活指令,可以再次激活主控继电器。 10-14 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 10.11 MCR:主控继电器开/关 使用 MCR 函数的重要注意事项 符号 MCR< MCR打开 主控继电器打开 (MCR<) 指令将触发一个在 MCR 堆栈中保存 RLO 并打开一个 MCR 区域的操作。打开 MCR 区域时,保存在 MCR 堆栈中的 RLO 将会对 MCR 指令中所示的指令产生影响。 MCR 堆栈的工作形式如同 LIFO ( 后入先出 ) 缓冲区。只能使用 8 个输入项。当堆 栈已满时,主控继电器打开指令产生一个 MCR 堆栈故障 (MCRF) 。 符号 MCR> MCR关闭 主控继电器关闭 (MCR>) 指令关闭最后打开的 MCR 区域。该指令通过从 MCR 堆 栈中移除 RLO 条目完成该操作。 RLO 由主控继电器打开指令保存在栈内。在 LIFO( 后入先出 )MCR 堆栈的另一端释放的输入项被设置成 1 。 当堆栈已空时,主控继电器关闭指令产生一个 MCR 堆栈故障 (MCRF) 。 MCR堆栈 MCR 由 1 位宽和 8 位深的堆栈控制。只要堆栈中的所有 8 个输入项都等于 1 , MCR 就被激活。 MCR< 指令将 RLO 位复制到 MCR 堆栈中。 MCR> 指令从堆栈 中删除最后一个输入项,然后将已释放的堆栈地址设置成 1 。 如果发生错误,例如,当连续出现多于 8 个 MCR> 指令,或在堆栈为空时尝试执 行 MCR> 指令时,将触发 MCRF 出错消息。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-15 程序控制指令 MCR 堆栈的监视基于堆栈指针 (MSP : 0 = 空; 1 = 1 个输入项; 2 = 2 个输入项 ; ... 、 8 = 8 个输入项 ) 。 RLOShifted Bit 1 2 3 4 5 6 7 8 MSP RLO RLO RLO Shifted Bit 1 MA MCRA 10 MCRD MSP = MCR stack pointer MA = Bit controlling MCR dependency MCR<指令采用 RLO 的信号状态,并将它复制到 MCR 位中。 MCR>指令无条件将 MCR 位设置成 1 。由于该特性, MCRA 和 MCRD 指令之间 的每个其它指令都独立于 MCR 位操作。 嵌套指令MCR<和MCR> 可以嵌套MCR<和MCR>指令。最大嵌套深度为 8 个,也就是说,在插入一个 MCR> 指令之前,最多可以连续写入 8 个 MCR< 指令。必须编写相同数目的 MCR< 和 MCR> 指令。 当嵌套了 MCR< 指令时,形成较低嵌套级别的 MCR 位。然后, MCR< 指令根据 与运算真值表组合当前 RLO 与当前的 MCR 位。 当 MCR> 指令完成一个嵌套级别时,它从一个较高的级别读取 MCR 位。 10-16 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - 0 1 - 0 举例 MCRA I 0.0 I 0.1 MCR< MCR< Q 4.0 I 0.3 S MCR> Q 4.1 I 0.4 = MCR> MCRD 当MCRA指令激活 MCR 函数时,可以最多创建 8 个嵌套的 MCR 区域。在该例 中,有两个 MCR 区域。第一个 MCR> 指令与第二个 MCR< 指令一起使用。第二 组 MCR 括号 (MCR 之间的所有指令都属于第二个 MCR 区域。按如下执 行操作 • 当 I0.0 = 1 时:将输入 I0.4 的信号状态赋值给输出 Q4.1 。 • 当 I0.0 = 0 时:输出 Q4.1 的信号状态为 0 ,与输入 I0.4 的信号状态无关。输 出 Q4.0 保持不变,与输入 I0.3 的信号状态无关。 • 当 I0.0 = 1 且 I0.1 = 1 时:当 I0.3 = 1 且 Q4.1 =I0.4 时,将输出 Q4.0 设置成 1 。 • 当 I0.1 = 0 时:输出 Q4.0 保持不变,与输入 I0.3 和输入 I0.0 的信号状态无关 。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-17 程序控制指令 10.12 MCRA/MCRD:主控继电器激活/去活 使用 MCR 函数的重要注意事项 符号 MCRA 激活MCR 通过激活主控继电器指令,可以生成依赖于 MCR 的后继命令。输入该命令后, 可以使用这些指令对 MCR 区域进行编程 ( 参见主控继电器开 / 关 ) 。当程序激活一 个 MCR 区域时,所有 MCR 操作都取决于 MCR 堆栈的内容。 符号 MCRD 去活MCR 通过去活主控继电器指令,后继命令不再与 MCR 有关。执行该指令后,不能再 对任何 MCR 区域进行编程。当程序去活一个 MCR 区域时, MCR 始终处于通电 状态,这与 MCR 堆栈中的条目无关。 MCR 堆栈和控制其依赖性的位 (MA 位 ) 与单个级别有关,必须在每次改变顺序级 别时保存并读取它们。在每个顺序级别开始处预置它们 ( 将 MCR 输入位 1 - 8 设 置成 1 ,将 MCR 堆栈指针设置成 0 ,将 MA 位设置成 0) 。 在块与块之间传送 MCR 堆栈,且在每次调用块时,保存 MA 位并将其设置成 0 。在块结束处重新读取 MA 位。 MCR 可以按优化生成代码的 CPU 的运行时间的方式执行。这是因为,块不传递 MCR 的依赖性;必须由一个 MCR 指令显式激活。生成代码的 CPU 识别该指令 ,并生成估算 MCR 堆栈所需的附加代码,直到它识别 MCR 指令或到达块结束 处。当指令超出 MCRA/MCRD 范围时,不会增加运行时间。 MCRA和MCRD指令必须始终在程序内成对使用。 10-18 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 激活和去活MCR区域 在 MCRA 和 MCRD 之间编程的操作取决于 MCR 位的信号状态。在 MCRA- MCRD 序列外进行编程的操作不依赖于 MCR 位的信号状态。如果丢失 MCRD 指令,那么在 MCRA 和 BEU 指令之间编程的操作取决于 MCR 位。 OB1 FBx FCy MCRA MCRA MCRA MCRD Call FCy Call FBx MCRD MCRA BEU BEU Instructions not dependent on the MCR bit Instructions dependent on the MCR bit BEU is an STL statement 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-19 程序控制指令 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - - - - - 举例 MCRA I 0.0 MCR< Q 4.0 I 0.3 S Q 4.1 I 0.4 = MCR> MCRD MCRA 指令激活 MCR 函数,直到下一个 MCRD 指令执行。根据 MA 位 ( 在此为 I0.0) 处理 MCR< 和 MCR> 之间的指令: • 当输入 I0.0 的信号状态为 1 时: - 当输入 I0.3 的信号状态为 1 时,将输出 Q4.0 设置成 1 。 - 当输入 I0.3 的信号状态为 0 时,输出 Q4.0 保持不变。 - 将输入 I0.4 的信号状态赋值给输出 Q4.1 。 • 当输入 I0.0 的信号状态为 0 时: - 输出 Q4.0 保持不变,与输入 I0.3 的信号状态无关。 - 输出 Q4.1 为 0 ,与输入 I0.4 的信号状态无关。 必须在块中自行编写功能 (FC) 和功能块 (FB) 的依赖性。当从一个 MCRA/MCR 序 列调用该功能或功能块时,不是该序列内的所有指令都自动与 MCR 位相关。为 此,使用被调用块的 MCRA 指令。 10-20 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 程序控制指令 10.13 RET:返回 符号 RET 描述 可使用返回指令来退出块。可以有条件地退出块。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 * - - - 0 0 1 1 0 * 在“ SAVE ; BEC ,”序列中内部显示RET操作。这还将影响到 BR 位 举例 E 0.0RET 当输入 I0.0 的信号状态为 1 时,会退出块。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 10-21 程序控制指令 10-22 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11 移位和循环移位指令 11.1 移位指令 11.1.1 移位指令概述 描述 可使用移位指令逐位向左或向右移动输入端 IN 的内容 ( 另请参见 CPU 寄存器 ) 。 向左移动 n 位相当于将输入端 IN 的内容乘以 2 的 n 次幂 (2 n ) ;向右移动 n 位则 相当于将输入端 IN 的内容除以 2 的 n 次幂 (2 n ) 。例如,如果将等价于十进制值 3 的二进制数左移 3 位,将得到等价于十进制值 24 的二进制数。如果将等价于 十进制值 16 的二进制数右移 2 位,则会得到等价于十进制值 4 的二进制数。 您提供给输入参数 N 的数值决定了移动相应值的位数。移位指令产生的空位将 用零或符号位的信号状态 (0 表示正, 1 表示负 ) 来填补。最后移动的位的信号状 态将装入状态字的 CC 1 位中 ( 请参见“ CPU 寄存器” ) 。状态字的 CC 0 和 OV 位会被复位为 0 。可以使用跳转指令估算 CC 1 位。 以下是可用的移位指令: • SHR_I : 右移整数 • SHR_DI : 右移双精度整型 • SHL_W : 左移字 • SHR_W : 右移字 • SHL_DW : 双字左移 • SHR_DW : 右移双字 11.1.2 SHR_I:右移整数 符号 SHR_I EN IN N OUT ENO 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-1 移位和循环移位指令 参数 数据类型 内存区域 描述 EN BOOL I 、 Q 、 M 、 L 、 D 、使能输入 T 、 C IN INT I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT INT I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 要移位的值 值将移位的位数 移位指令的结果 使能输出 描述 在使能输入 (EN) 端的信号状态为 1 时会激活整数右移指令。此指令将输入端 IN 的 0 到 15 位逐位右移。输入 N 指定值将移位的位数。如果 N 大于 16 ,则该命 令将 N 视为 16 进行处理。左侧的空位将用第 15 位的信号状态 ( 整数的符号 ) 填补 。正数填补 0 ,负数则填补 1 。移位操作的结果可在 OUT 输出端扫描。 如果 N 不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位为 0 。 ENO 具有与 EN 相同的信号状态。 15... 1010 Sign bit ...87... 11110000 4 places ...0 1010 IN N OUT 11111010 These four bits are lost. The vacated places are filled with the signal state of the sign bit. 11-2 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 移位和循环移位指令 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 SHR_I I 0.0 MW0 MW2 EN IN N OUT ENO MW4 Q 4.0 S 在 I0.0 的信号状态为 1 时激活此指令。存储器字 MW0 将按在存储器字 MW2 中 指定的位数右移。 结果将存入存储器字 MW4 中。输出 Q4.0 置 1 。 11.1.3 SHR_DI:右移双精度整型 符号 SHR_DI EN IN N OUT ENO 参数 数据类型 内存区域 描述 EN BOOL I 、 Q 、 M 、 L 、 D 、使能输入 T 、 C IN DINT I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT DINT I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 要移位的值 值将移位的位数 移位指令的结果 使能输出 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-3 移位和循环移位指令 描述 在使能输入 (EN) 端的信号状态为 1 时会激活整数右移指令。此指令将输入端 IN 的全部内容逐位右移。输入 N 指定值将移位的位数。如果 N 大于 32 ,则该命令 将 N 视为 32 进行处理。左侧的位将用第 31 位的信号状态 ( 双精度整数的符号 ) 填 补。正数填补 0 ,负数则填补 1 。移位操作的结果可在 OUT 输出端扫描。 如果 N 不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位为 0 。 ENO 具有与 EN 相同的信号状态。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 SHR_DI I 0.0 MD0 MW4 EN IN N OUT ENO MD10 Q 4.0 S 在 I0.0 的信号状态为 1 时会激活此指令。存储器双字 MD0 将按在存储器字 MW4 中指定的位数右移。 结果将存入存储器双字 MD10 中。输出 Q4.0 置 1 。 11-4 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 移位和循环移位指令 11.1.4 SHL_W:左移字 符号 SHL_W EN IN N OUT ENO 参数 数据类型 内存区域 描述 使能输入 要移位的值 值将移位的位数 移位指令的结果 使能输出 EN BOOL I 、 Q 、 M 、 L 、 D 、 T 、 C IN WORD I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT WORD I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 描述 在使能输入 (EN) 的信号状态为 1 时会激活字左移指令。此指令将输入端 IN 的 0 到 15 位逐位左移。 输入 N 指定要使值移位的位数。如果 N 大于 16 ,则此命令在 OUT 输出端写入 0 并将状态字的 CC 0 和 OV 位置 0 。将右侧的各位补零。移位操作的结果可在 OUT 输出端扫描。 如果 N 的值不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位 为 0 。 ENO 具有与 EN 相同的信号状态。 15... 0000 ...87... 11110101 6 places ...0 0101 IN N OUT These six bits are lost. The vacated places are filled with zeros. 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-5 移位和循环移位指令 举例 SHL_W I 0.0 MW0 MW2 EN IN N OUT ENO MW4 Q 4.0 S 在 I0.0 的信号状态为 1 时会激活该指令。 存储器字 MW0 将按在存储器字 MW2 中指定的位数左移。 结果将存入存储器字 MW4 中。输出 Q4.0 置 1 。 11.1.5 SHR_W:右移字 符号 SHR_W EN IN N OUT ENO 参数 数据类型 内存区域 描述 EN BOOL I 、 Q 、 M 、 L 、 D 、使能输入 T 、 C IN WORD I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT WORD I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 要移位的值 值将移位的位数 移位指令的结果 使能输出 11-6 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 移位和循环移位指令 描述 在使能输入 (EN) 端的信号状态为 1 时会激活字右移指令。此指令将输入端 IN 的 0 到 15 位逐位右移。 16 到 31 位不受影响。输入 N 指定值将移位的位数。如果 N 大于 16 ,则此命令在 OUT 输出端写入 0 并将状态字的 CC 0 和 OV 位置 0 。 将左侧移空的位补零。移位操作的结果可在 OUT 输出端扫描。 如果 N 不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位为 0 。 ENO 具有与 EN 相同的信号状态。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 SHR_W I 0.0 MW0 MW2 EN IN N OUT ENO MW4 Q 4.0 S 在 I0.0 的信号状态为 1 时激活此指令。存储器字 MW0 将按在存储器字 MW2 中 指定的位数右移。 结果将存入存储器字 MW4 中。输出 Q4.0 置 1 。 11.1.6 SHL_DW:双字左移 符号 SHL_DW EN IN N OUT ENO 数据类型 内存区域 描述 使能输入 要移位的值 值将移位的位数 移位指令的结果 使能输出 参数 EN BOOL I 、 Q 、 M 、 L 、 D 、 T 、 C IN DWORD I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT DWORD I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-7 移位和循环移位指令 描述 在使能输入 (EN) 端的信号状态为 1 时会激活双字左移指令。此指令将输入端 IN 的 0 到 31 位逐位左移。输入 N 指定值将移位的位数。如果 N 大于 32 ,则此命 令在 OUT 输出端写入 0 并将状态字的 CC 0 和 OV 位置 0 。将右侧移空的各位补 零。移位操作的结果可在 OUT 输出端扫描。 如果 N 的值不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位 为 0 。 ENO 具有与 EN 相同的信号状态。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 SHL_DW I 0.0 MD0 MW4 EN IN N OUT ENO MD10 Q 4.0 S 在 I0.0 的信号状态为 1 时会激活该指令。 存储器双字 MD0 将按在存储器字 MW4 中指定的位数左移。 结果将存入存储器双字 MD10 中。输出 Q4.0 置 1 。 11.1.7 SHR_DW:右移双字 符号 SHR_DW EN IN N OUT ENO 数据类型 内存区域 描述 使能输入 要移位的值 值将移位的位数 移位指令的结果 使能输出 参数 EN BOOL I 、 Q 、 M 、 L 、 D 、 T 、 C IN DWORD I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT DWORD I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 11-8 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 移位和循环移位指令 描述 在使能输入 (EN) 端的信号状态为 1 时会激活双字右移指令。此指令将输入端 IN 的 0 到 31 位逐位右移。输入 N 指定值将移位的位数。如果 N 大于 32 ,则此命 令在 OUT 输出端写入 0 并将状态字的 CC 0 和 OV 位置 0 。将左侧移空的位补零 。移位操作的结果可在 OUT 输出端扫描。 如果 N 不等于,则此指令触发的操作总是将状态字的 CC 1 和 OV 位复位为 0 。 ENO 具有与 EN 相同的信号状态。 31......0 111111111 3 places IN N OUT 11011111 The vacated places are filled with zeros. 111 These three bits are lost. 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 SHR_DW I 0.0 MD0 MW4 EN IN N OUT ENO MD10 Q 4.0 S 在 I0.0 的信号状态为 1 时会激活此指令。存储器双字 MD0 将按在存储器字 MW4 中指定的位数右移。 结果将存入 MD10 中。输出 Q4.0 置 1 。 11.2 循环移位指令 11.2.1 循环移位指令概述 描述 可使用循环移位指令将输入端 IN 的全部内容逐位向左或向右循环移动 ( 请参见 CPU 寄存器 ) 。移空的位将用从输入端 IN 移出的位的信号状态填补。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-9 移位和循环移位指令 为输入参数 N 指定的值即是要循环移位的位数。 根据指令不同,循环移位将使用状态字的 CC 1 位。状态字的 CC 0 位被复位为 0 。 以下是可用的循环移位指令: • ROL_DW : 循环左移双字 • ROR_DW : 循环右移双字 11.2.2 ROL_DW:循环左移双字 符号 ROL_DW EN IN N OUT ENO 数据类型 内存区域 描述 参数 EN BOOL I 、 Q 、 M 、 L 、 D 、使能输入 T 、 C IN DWORD I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT DWORD I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 要循环移位的值 值将循环移动的位数 循环移位指令的结果 使能输出 11-10 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 移位和循环移位指令 描述 在使能输入 (EN) 端的信号状态为 1 时激活双字循环左移指令。此指令将输入端 IN 的全部内容逐位循环左移。输入 N 指定要循环移动的位数。如果 N 大于 32 , 则双字循环移动 ((N-1) 以 32 为模 ) +1) 位。右侧的位用循环位的信号状态填补。 循环运算的结果可在 OUT 输出端扫描。 如果 N 不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位为 0 。 ENO 具有与 EN 相同的信号状态。 31......0 11111111 3 places IN N OUT These three bits are lost. The signal states of the three bits that are shifted out are inserted in the vacated places. 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 ROL_DW I 0.0 MD0 MW4 EN IN N OUT ENO MD10 Q 4.0 S 在 I0.0 的信号状态为 1 时激活此指令。存储器双字 MD0 将按在存储器字 MW4 中指定的位数循环右移。 结果将存入存储器双字 MD10 中。输出 Q4.0 置 1 。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-11 移位和循环移位指令 11.2.3 ROR_DW:循环右移双字 符号 ROR_DW EN IN N OUT ENO 参数 数据类型 内存区域 描述 EN BOOL I 、 Q 、 M 、 L 、 D 、 T 、使能输入 C IN DWORD I 、 Q 、 M 、 L 、 D N WORD I 、 Q 、 M 、 L 、 D OUT DWORD I 、 Q 、 M 、 L 、 D ENO BOOL I 、 Q 、 M 、 L 、 D 要循环移位的值 值将循环移动的位数 循环移位指令的结果 使能输出 描述 在使能输入 (EN) 端的信号状态为 1 时激活双字循环右移指令。此指令将输入端 IN 的全部内容逐位循环右移。输入 N 指定值将循环移动的位数。如果 N 大于 32 ,则双字循环移动 ((N-1) 以 32 为模 ) +1) 位。 N 值可介于 0 和 31 之间。左侧的位 将用循环位的信号状态填补。循环运算的结果可在 OUT 输出端扫描。 如果 N 不等于 0 ,则此指令触发的操作总是将状态字的 CC 0 和 OV 位复位为 0 。 ENO 具有与 EN 相同的信号状态。 31... 1010 ... 11110000 3 places ...0 0101 IN N 1101 OUT The signal states of the three bits that are shifted out are inserted in the vacated places. 11-12 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 移位和循环移位指令 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 X X X X - X X X 1 举例 ROR_DW I 0.0 EN MD0 INOUT MD10 Q 4.0 MW4 N ENO S 在 I0.0 的信号状态为 1 时会激活此指令。存储器双字 MD0 将按在存储器字 MW4 中指定的位数循环右移。 结果将存入存储器双字 MD10 中。输出 Q4.0 置 1 。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 11-13 移位和循环移位指令 11-14 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 12 状态位指令 12.1 状态位指令概述 描述 状态位指令是对状态字的位进行操作的逻辑指令 ( 请参见 CPU 寄存器 ) 。其中的 各条指令分别对下列条件之一做出反应,每条指令以状态字的一个或多个位来表 示: • 二进制结果位 (BR) 被置位 ( 信号状态为 1) 。 • 运算的结果通过下列方式之一与 0 相关: == 0 、 <> 0 、 > 0 、 < 0 、 >= 0 、 <= 0 。 • 运算发生溢出 (UO) 。 • 运算发生溢出 (OV) 或存储溢出 (OS) 。 当状态位指令以串联方式连接时,该指令将根据 And 真值表将其信号状态校验 的结果与前一逻辑运算结果合并。当状态位指令以并联方式连接时,该指令将根 据 Or 真值表将其结果与前一 RLO 合并。 状态字 状态字是 CPU 存储器中的一个寄存器,它所包含的位可通过位地址和字逻辑指 令来参照。状态字的结构: 2... 15 ...2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 BRCC1CC0OVOSORSTARLO/FC 可以通过下列函数求状态字位的值 • 通过整数算术运算 • 通过浮点数算术运算 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 12-1 状态位指令 12.2 OV:溢出异常位 符号 OV 描述 可使用溢出异常位指令来检测最后一个算术运算是否有溢出 (OV) 。如果在系统执 行算术运算后,结果超出了许可的负数范围或许可的正数范围,则会设置状态字 ( 参见 CPU 寄存器 ) 的 OV 位。指令将检查此位的信号状态。如果算术运算未出错 ,则复位该位。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 程序段 1 SUB_I I 0.0 IW0 IW2 EN IN1 IN2 OUT ENO MW10 程序段 2 I 0.1 I 0.2 I 0.3 & >=1 M 3.3 程序段 3 OV Q 4.0 S 在输入 I0.0 的信号状态为 1 时会激活 SUB_I 框。如果算术运算 ( 输入字 IW0 减输 入字 IW2) 的结果超出了整数值的许可范围,则会置位状态字的 OV 位。 OV 位的 信号检查结果为 1 。如果 OV 位的检查结果为 1 且程序段 2 的 RLO 为 1 ( 如果输 出 Q4.0 之前的 RLO 为 1) ,则会置位输出 Q4.0 。 12-2 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 状态位指令 如果输入 I0.0 的信号状态为 0 ( 未激活 ) ,则 EN 和 ENO 的信号状态均为 0 。如 果 EN 的信号状态为 1 ( 已激活 ) 且算术运算的结果超出范围,则 ENO 的信号状 态为 0 。 12.3 OS:存储的溢出异常位 符号 OS 描述 在与运算中,本指令将按照与运算真值表组合自身的检查结果和先前的逻辑运算 结果。在或运算运算中,则将按照或运算真值表组合。 可使用存储溢出异常位指令判断先前算术运算结果是否有溢出 ( 存储溢出, OS) 。 如果在系统执行算术运算后,结果超出了许可的负数范围或许可的负数值范围或 者正数值范围,则会设置状态字 ( 参见 CPU 寄存器 ) 的 OS 位。指令将检查此位的 信号状态。与 OV( 溢出 ) 位不同,即使在执行随后的算术运算时未出现错误, OS 位仍将保留设置 ( 参见溢出异常位 ) 。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 12-3 状态位指令 举例 程序段 1 MUL_I I 0.0 IW0 IW2 EN IN1 IN2 OUT ENO MD8 程序段 2 ADD_I I 0.1 IW0 IW2 EN IN1 IN2 OUT ENO MW12 程序段 3 OSQ 4.0 S 在输入 I0.0 的信号状态为 1 时会激活 MUL_I 框。在输入 I0.1 的信号状态为 1 时 会激活 ADD_I 框。如果其中一个算术运算的结果超出整数的许可范围,则会设 置状态字的 OS 位。 OS 位的信号状态检查的结果为 1 且置位输出 Q4.0 。 程序段 1 :如果输入 I0.0 的信号状态为 0 ( 未激活 ) ,则 EN 和 ENO 的信号状态 均为 0 。如果 EN 的信号状态为 1 ( 已激活 ) 且算术运算的结果超出范围,则 ENO 的信号状态为 0 。 程序段 2 :如果输入 I0.1 的信号状态为 0 ( 未激活 ) ,则 EN 和 ENO 的信号状态 均为 0 。如果 EN 的信号状态为 1 ( 已激活 ) 且算术运算的结果超出范围,则 ENO 的信号状态为 0 。 12-4 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 状态位指令 12.4 UO:例外位无序 符号 UO 描述 可使用无序异常位指令检查浮点数运算的结果是否无序 ( 换言之,该运算中是否 存在一个无效的浮点数 ) 。指令将判断状态字的条件码位 (CC 1 和 CC 0 ,参见 CPU 寄存器 ) 。如果运算的结果是无序 (UO) ,信号状态检查的结果将是 1 。如果 在 CC 1 和 CC 0 中的组合结果表明不是无序的,则信号状态检查的结果将是 0 。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 程序段 1 DIV_R I 0.0 ID0 ID4 EN IN1 IN2 OUT ENO MD10 Q 4.1 S 程序段 2 UO Q 4.0 S 在输入 I0.0 的信号状态为 1 时会激活 DIV_R 框。如果输入的双字 ID0 或 ID4 中 有一个是无效浮点数,则浮点数运算的结果将是无序。 如果 EN 的信号状态为 1 ( 已激活 ) ,但在指令执行期间出错,则 ENO 的信号状 态为 0 。 如果执行了函数 DIV_R ,但该运算有一个值是无效的浮点数,则置位输出 Q4.0 。如果输入 I0.0 的信号状态为 0 ( 未激活 ) ,则 EN 和 ENO 的信号状态均为 0 。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 12-5 状态位指令 12.5 BR:BR存取区异常位 符号 EnglishGerman BRBIE 描述 可以使用BR存取区异常位指令来检查状态字 BR 位 ( 二进制结果 ) 的信号状态 ( 请 参见 CPU 寄存器 ) 。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 I 0.0 I 0.2 BR >=1 & Q 4.0 S 如果输入 I0.0 的信号状态为 1 ,或者输入 I0.2 的信号状态为 0 ,将会置位输出端 Q4.0 ;除了此逻辑运算结果外, BR 位的信号状态为 1 时也会如此。 12-6 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 状态位指令 12.6 <> 0:结果位 符号 == 0 <> 0 > 0 < 0 >= 0 <= 0 结果位指令等于 0 用于确定算术运算指令的结果是否等于 0 。 结果位指令不等于 0 用于确定算术运算指令的结果是否不等于 0 。 结果位指令大于 0 用于确定表明算术运算指令的结果是否大于 0 。 结果位指令小于 0 用于确定算术运算指令的结果是否小于 0 。 结果位指令大于或等于 0 用于确定算术运算指令的结果是否大于或等于 0 。 结果位指令小于或等于 0 用于确定算术运算指令的结果是否小于或等于 0 。 描述 您可以使用结果位指令来确定运算的结果与 0 之间的关系,换言之,确定结果是 否是 ==0 、 <>0 、 >0 、 <0 、 >=0 或 <=0 。 指令将判断状态字的条件码位 (CC 1 和 CC 0 ,请参见 CPU 寄存器 ) 。如果满足地址中指示的比较条件,则信号状态检 查的结果为 1 。 在与运算中,本指令将按照与运算真值表组合自身的检查结果和先前的逻辑运算 结果 (RLO) 。在或运算中,本指令将按照或运算真值表组合自身的检查结果和先 前的 RLO 。 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 1) SUB_I I 0.0 IW0 IW2 EN IN1OUT IN2ENO >0 MW10 & Q 4.0 S 2) SUB_I I 0.0 IW0 IW2 EN IN1OUT IN2 ENO <=0 MW10 & Q 4.0 S 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 12-7 状态位指令 在输入 I0.0 的信号状态为 1 时会激活 SUB_I 框。如果输入字 IW0 的值大于输入 字 IW2 的值,则数学运算 IW0 - IW2 的结果大于 0 。如果 EN 的信号状态为 1 ( 已激活 ) ,而在执行指令期间发生错误,则 ENO 的信号状态为 0 。 2. 如果正确执行了该运算且结果小于或等于 0 ,则会将输出端 Q4.0 置位。如果 信号输入 I0.0 的信号状态为 0 ( 未激活 ) ,则 EN 和 ENO 的信号状态为 0 。 3. 如果正确执行了该运算且结果小于或等于 0 ,则会将输出端 Q4.0 置位。如果 信号输入 I0.0 的信号状态为 0 ( 未激活 ) ,则 EN 和 ENO 的信号状态为 0 。 12-8 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13 定时器指令 13.1 定时器指令概述 描述 有关设置和选择正确时间的信息,请参见“定时器在存储器中的位置与定时器组 件”。 下列定时器指令可用: • S_PULSE : 设置脉冲定时器参数并启动 • S_PEXT : • S_ODT : • S_ODTS : 设置延时脉冲定时器参数并启动 设置接通延时定时器参数并启动 设置掉电保护接通延时定时器参数并启动 • S_OFFDT : 设置断开延时定时器参数并启动 • SP : • SE : • SD : • SS : • SF : 启动脉冲定时器 启动延时脉冲定时器 启动接通延时定时器 启动掉电保护接通延时定时器 启动延时断开定时器 13.2 定时器的存储区和组件 内存区域 在 CPU 的存储器中,为定时器保留有存储区。此存储区为每个定时器地址保留 一个 16 位字。在 FBD 中编程时,可支持 256 个定时器。请参考 CPU 的技术信 息来确定可用的定时器字数目。 下列功能访问定时器存储区: • 定时器指令 • 按时钟定时更新定时器字。在 RUN 模式下,此 CPU 功能按时间基准所指定 的间隔将给定的时间值减少一个单位,直到该时间值等于零。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-1 定时器指令 时间值 时间基准 13-2 定时器字的 0 到 9 位包含二进制代码的时间值。时间值指定单位数。更新定时器 时,时间值按时间基准所指定的间隔递减一个单位。时间值递减到等于零为止。 可通过下列任一种格式预加载时间值: • S5T#a H _b M _c S _d MS - 其中 H = 小时、 M = 分钟、 S = 秒、 MS = 毫秒; a 、 b 、 c 、 d 由用户定义。 - 时间基准是自动选择的,值会根据时间基准四舍五入到下一个更低的数值 。 可以输入的最大时间值是 9,990S 或 2H_46M_30S 。 S5TIME#4S = 4 秒 s5t#2h_15m = 2 小时 15 分钟 S5T#1H_12M_18S = 1 小时 12 分钟 18 秒 定时器字的 12 和 13 位包含二进制代码的时间基准。时间基准定义将时间值递减 一个单位所用的时间间隔。最小的时间基准是 10 毫秒;最大的时间基准是 10 秒 。 时间基准 时间基准的二进制代码 10 毫秒 00 100 毫秒 01 1 秒 10 10 秒 11 由于时间值仅按一个时间间隔保存,因此不是时间间隔整倍数的值将被截断。对 于所需范围,分辨率过高的值将舍入到所需的范围,而不是期望的分辨率。下表 显示了可能的分辨率和相应的范围。 分辨率 时间基准 0.01 秒 10MS 到 9S_990MS 0.1 秒 100MS 到 1M_39S_900MS 1 秒 1S 到 16M_39S 10 秒 10S 到 2HR_46M_30S 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 定时器指令 定时器单元格中的位组态 当启动定时器时,定时器单元格的内容将用作时间值。定时器单元格的 0 到 11 位所包含的时间值显示为二进制编码的十进制格式 (BCD 格式:每四位为一组包 含对应一个十进制值的二进制代码 ) 。 12 和 13 位包含二进制代码格式的时间基 准。下图显示了以定时器值 127 ( 时间基准为 1 秒 ) 加载的定时器单元格的内容。 15... xx1000 1 ...87... 0100 2 1001 7 ...0 11 Time base 1 second Time value in BCD (0 to 999) Irrelevant: These bits are ignored when the timer is started. 读取时间和时间基准 每个定时器框都提供了两个输出 (BI 和 BCD) ,用户可为其指定字位置。 BI 输出 提供二进制格式的时间值,但不显示时间基准。 BCD 输出提供二进制编码的十 进制 (BCD) 格式的时间基准和时间值。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-3 定时器指令 选择合适的定时器 此概述旨在帮助用户正确选择定时作业的定时器。 I 0.0 Q 4.0 S_PULSE t Q 4.0 S_PEXT t Q 4.0 S_ODT t Q 4.0 S_ODTS t Q 4.0 S_OFFDT t 定时器 S_PULSE 脉冲定时器 S_PEXT 延时脉冲定时器 S_ODT 接通延时定时器 S_ODTS 保持性接通延时定时器 S_OFFDT 断开延时定时器 描述 输出信号保持为 1 的最大时间与设定的时间值 t 相同。如果输入 信号变为 0 ,则输出信号在较短的时间内保持为 1 。 输出信号在设定的时长内保持为 1 ,无论输入信号保持 1 多长 时间。 只有在设定的时间已过且输入信号仍为 1 时,输出信号才变为 1 。 只有在设定的时间已过时,输出信号才从 0 变为 1 ,无论输入 信号保持 1 多长时间。 输入信号变为 1 或定时器运行时,输出信号变为 1 。输入信号 从 1 变为 0 时,时间启动。 13-4 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 定时器指令 13.3 S_PULSE:设置脉冲定时器参数并启动 符号 English T no. S_PULSE S TV R BI BCD Q German T-Nr. S_IMPULS S R DUAL Q TW DEZ 参数 英语 参数 德语 数据类型 内存区域 描述 定时器标识号。 范围取决于 CPU 。 使能输入 预设时间值 ( 范围 0-9999) 复位输入端 no. Nr. TIMER T S S BOOL I 、 Q 、 M 、 D 、 L 、 T 、 C TV TW S5TIME I 、 Q 、 M 、 D 、 L 或常数 R R BOOL I 、 Q 、 M 、 D 、 L 、 T 、 C BI DUAL WORD I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为整型格式 ) BCD DEZ WORD I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为 BCD 格式 ) Q Q BOOL I 、 Q 、 M 、 D 、 L 定时器的状态 描述 如果“启动 (S) ”输入有上升沿 ( 信号状态从 0 改变为 1) ,设置脉冲定时器参数并 启动指令将启动指定的定时器。要启动定时器,必须有信号改变。只要输入 S 的 信号状态为 1 ,定时器将继续运行“时间值 (TV) ”输入处指定的时间。当定时器 运行时,对输出 Q 的信号状态 1 的检查产生结果 1 。如果在时间用完前, S 输入 存在从 1 到 0 的改变,则定时器停止。随后对输出 Q 的信号状态 1 的检查产生 结果 0 。 定时器正运行时,如果“复位 (R) ”输入从 0 改变为 1 ,则定时器复位。此改变 还会将时间和时间基准复位到零。如果定时器未运行,则定时器 R 输入处的信 号状态 1 将不起作用。 可在输出 BI 和 BCD 处扫描当前时间值。 BI 处的时间值为二进制格式; BCD 处 的时间值为二进制编码的十进制格式。 时序图 脉冲定时器特性: 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-5 定时器指令 t RLO at S input tt RLO at R input Timer running Scan for "1" Scan for "0" t = Programmed time 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 T5 S_PULSE I 0.0 S5T#2s I 0.1 SBI Q 4.0 = TV BCD RQ 如果输入 I0.0 的信号状态从 0 改变为 1 ( 如果 RLO 中有上升沿 ) ,则定时器 T5 启 动。只要输入 I0.0 为 1 ,定时器将继续运行指定的两秒 (2s) 时间。如果在时间用 尽前输入 I0.0 的信号状态从 1 改变为 0 ,则定时器停止。如果定时器运行时,输 入 I0.1 的信号状态从 0 改变为 1 ,则定时器复位。只要定时器运行,输出 Q4.0 的信号状态就为 1 。 13.4 S_PEXT:设置延时脉冲定时器参数并启动 符号 English T no. S_PEXT S TV R BI BCD Q S R German T-Nr. S_VIMP DUAL Q TW DEZ 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-6 定时器指令 参数 英语 参数 德语 数据类型 内存区域 描述 定时器标识号。 范围取决于 CPU 。 no. Nr. TIMER T S S BOOL I 、 Q 、 M 、 D 、 L 、使能输入 T 、 C TV TW S5TIME I 、 Q 、 M 、 D 、 L 或预设时间值 常数 ( 范围 0-9999) R R BOOL I 、 Q 、 M 、 D 、 L 、复位输入端 T 、 C BI DUAL WORD I 、 Q 、 M 、 D 、 L BCD DEZ WORD I 、 Q 、 M 、 D 、 L Q Q BOOL I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为整型格式 ) 剩余时间 ( 值为 BCD 格式 ) 定时器的状态 描述 如果“启动 (S) ”输入处有上升沿 ( 信号状态从 0 改变为 1) ,设置延时脉冲定时器 参数并启动指令将启动指定的定时器。要启动定时器,必须有信号改变。定定时 器继续运行“时间值 (TV) ”输入处指定的时间,即使 S 输入处的信号状态在时间 用尽前改变为 0 。只要定时器运行,对输出 Q 信号状态 1 的检查就产生结果 1 。 定时器运行时,如果输入 S 处的信号状态从 0 改变为 1 ,则定时器以指定的时间 重新启动。 定时器运行时,如果“复位 (R) ”输入从 0 改变为 1 ,则定时器复位。此改变还 会将时间和时间基准复位到零。此改变还会将时间和时间基准复位到零。 可在输出端 BI 和 BCD 扫描当前时间值。 BI 处的时间值为二进制格式; BCD 处 的时间值为二进制编码的十进制格式。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-7 定时器指令 时序图 扩充的脉冲定时器特性: t RLO at S input ttt RLO at R input Timer running Scan for "1" Scan for "0" t = Programmed time 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 T5 S_PEXT I 0.0 S5T#2s I 0.1 SBI Q 4.0 = TV BCD R Q 如果输入 I0.0 的信号状态从 0 改变为 1 (RLO 中有上升沿 ) ,则定时器 T5 启动。 定时器将继续运行指定的两秒 (2s) 时间,而不考虑输入 S 的下降沿。如果在时间 用尽前输入 I0.0 的信号状态从 0 改变为 1 ,则定时器重新启动。如果定时器运行 时,输入 I0.1 的信号状态从 0 改变为 1 ,则定时器复位。只要定时器运行,输出 Q4.0 的信号状态就为 1 。 13-8 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 定时器指令 13.5 S_ODT:设置接通延时定时器参数并启动 符号 English T no. S_ODT S TV R BI BCD Q German T-Nr. S_EVERZ S R DUAL Q TW DEZ 参数 英语 参数 德语 数据类型 内存区域 描述 定时器标识号。 范围取决于 CPU 。 no. Nr. TIMER T S S BOOL I 、 Q 、 M 、 D 、 L 、 T 使能输入 、 C TV TW S5TIME I 、 Q 、 M 、 D 、 L 或 常数 预设时间值 ( 范围 0-9999) R R BOOL I 、 Q 、 M 、 D 、 L 、 T 复位输入端 、 C BI DUAL WORD I 、 Q 、 M 、 D 、 L BCD DEZ WORD I 、 Q 、 M 、 D 、 L Q Q BOOL I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为整型格式 ) 剩余时间 ( 值为 BCD 格式 ) 定时器的状态 描述 如果“启动 (S) ”输入有上升沿 ( 信号状态从 0 改变为 1) ,设置接通延时定时器参 数并启动指令将启动指定的定时器。要启动定时器,必须有信号改变。只要输入 S 的信号状态为 1 ,定时器将继续运行“时间值 (TV) ”输入处指定的时间。当时 间已用尽且未出错,而输入 S 的信号状态仍为 1 时,则对输出 Q 的信号状态 1 的检查将产生结果 1 。定时器运行时,如果输入 S 的信号状态从 1 改变为 0 ,定 时器将停止。这种情况下,对输出 Q 的信号状态 1 的检查将始终产生结果 0 。 定时器正运行时,如果“复位 (R) ”输入从 0 改变为 1 ,则定时器复位。此改变 还会将时间和时间基准复位到零。定时器未运行时,如果 R 输入的信号状态为 1 ,定时器也会复位。 可在输出端 BI 和 BCD 扫描当前时间值。 BI 处的时间值为二进制格式; BCD 处 的时间值为二进制编码的十进制格式。 时序图 接通延时定时器特征: 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-9 定时器指令 t RLO at S input tt RLO at R input Timer running Scan for "1" Scan for "0" t = Programmed time 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - X X X 1 举例 T5 S_ODT I 0.0 S5T#2s I 0.1 SBI Q 4.0 = TV BCD RQ 如果输入 I0.0 的信号状态从 0 改变为 1 (RLO 中有上升沿 ) ,则定时器 T5 启动。 如果指定的时间两秒 (2s) 已过,且输入 I0.0 的信号状态仍为 1 ,则输出 Q4.0 的 信号状态为 1 。如果输入 I0.0 的信号状态从 1 改变为 0 ,则定时器停止并且输出 Q4.0 为 0 。定时器运行时,如果输入 I0.1 的信号状态从 0 改变为 1 ,定时器将重 新启动。 13.6 S_ODTS:设置掉电保护接通延时定时器参数并启动 符号 English T no. S_ODTS S TV R BI BCD Q German T-Nr. S_SEVERZ S R DUAL Q TW DEZ 13-10 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 定时器指令 参数 英语 参数 德语 数据类型 内存区域 描述 定时器标识号。 范围取决于 CPU 。 no. Nr. TIMER T S S BOOL I 、 Q 、 M 、 D 、 L 、使能输入 T 、 C TV TW S5TIME I 、 Q 、 M 、 D 、 L 或预设时间值 常数 ( 范围 0-9999) R R BOOL I 、 Q 、 M 、 D 、 L 、复位输入端 T 、 C BI DUAL WORD I 、 Q 、 M 、 D 、 L BCD DEZ WORD I 、 Q 、 M 、 D 、 L Q Q BOOL I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为整型格式 ) 剩余时间 ( 值为 BCD 格式 ) 定时器的状态 描述 如果“启动 (S) ”输入有上升沿 ( 信号状态从 0 改变为 1) ,设置掉电保护接通延时 定时器参数并启动指令将启动指定的定时器。要启动定时器,必须有信号改变。 定时器继续运行“时间值 (TV) ”输入处指定的时间,即使输入 S 的信号状态在定 时器时间用尽前改变为 0 。定时器时间用尽时,对输出 Q 的信号状态 1 的检查将 产生结果 1 ,而不考虑复位输入端 (R) 保持为 0 时输入 S 的信号状态。定时器运 行时,如果输入 S 的信号状态从 0 改变 1 ,则定时器以指定的时间重新启动。 定时器“复位 (R) ”输入从 0 改变为 1 时,定时器将复位,而不考虑 S 输入的 RLO 。 可在输出端 BI 和 BCD 扫描当前时间值。 BI 处的时间值为二进制格式; BCD 处 的时间值为二进制编码的十进制格式。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-11 定时器指令 时序图 掉电保护的接通延时定时器特性: t RLO at S input ttt RLO at R input Timer running Scan for "1" Scan for "0" t = Programmed time 状态字 BR CC 1 CC 0 OV OS OR STA RLO /FC 写: - - - - - x x x 1 举例 T5 S_ODTS I 0.0 S5T#2s I 0.1 SBI Q 4.0 = TV BCD RQ 如果输入 I0.0 的信号状态从 0 改变为 1 (RLO 中有上升沿 ) ,则定时器 T5 启动。 定时器将继续运行,而不考虑输入 I0.0 处的信号状态从 1 改变到 0 。如果在时间 用尽前输入 I0.0 的信号状态从 0 改变为 1 ,定时器将重新启动。如果定时器运行 时,输入 I0.1 的信号状态从 0 改变为 1 ,定时器将重新启动。如果时间已用尽, 且 I0.1 的信号状态仍为 0 ,则输出 Q4.0 的信号状态为 1 。 13-12 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 定时器指令 13.7 S_OFFDT:设置断开延时定时器参数并启动 符号 English T no. S_OFFDT S TV R BI BCD Q German T-Nr. S_AVERZ S R DUAL Q TW DEZ 参数 英语 参数 德语 数据类型 内存区域 描述 定时器标识号。 范围取决于 CPU 。 使能输入 预设时间值 ( 范围 0-9999) 复位输入端 no. Nr. TIMER T S S BOOL I 、 Q 、 M 、 D 、 L 、 T 、 C TV TW S5TIME I 、 Q 、 M 、 D 、 L 或常数 R R BOOL I 、 Q 、 M 、 D 、 L 、 T 、 C BI DUAL WORD I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为整型格式 ) BCD DEZ WORD I 、 Q 、 M 、 D 、 L 剩余时间 ( 值为 BCD 格式 ) Q Q BOOL I 、 Q 、 M 、 D 、 L 定时器的状态 描述 如果“启动 (S) ”输入有下降沿 ( 信号状态从 1 改变为 0) ,设置断开延时定时器参 数并启动指令将启动指定的定时器。要启动定时器,必须有信号改变。当 S 输入 的信号状态为 1 ,或定时器运行时,对输出 Q 处的信号状态 1 的检查结果为 1 。 定时器运行时,当输入 S 的信号状态从 0 改变为 1 时,定时器复位。直到输入 S 的信号状态再次从 1 改变为 0 时,定时器才重新启动。 定时器运行时,如果“复位 (R) ”输入从 0 改变为 1 ,定时器将复位。 可在输出 BI 和 BCD 处扫描实际时间值。 BI 处的时间值为二进制格式; BCD 处 的时间值为二进制编码的十进制格式。 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 13-13 定时器指令 时序图 断开延时定时器特性: t RLO at S input ttt RLO at R input Timer running Scan for "1" Scan for "0" t = Programmed time 状态字 BR CC 1 CC 0 OV OS OR STA RLO FC 写 - - - - - x x x 1 举例 T5 S_OFFDT I 0.0 S5T#2s I 0.1 SBI Q 4.0 = TV BCD RQ 如果输入 I0.0 的信号状态从 1 改变为 0 ,则定时器启动。当 I0.0 为 1 或定时器运 行时,输出 Q4.0 为 1 。如果定时器运行时, I0.1 的信号状态从 0 改变为 1 ,定时 器将复位。 13-14 用于S7-300和S7-400的功能块图(FBD)编程 A5E01112994-01 定时器指令 13.8 SP:启动脉冲定时器 符号 English
SP
TV
TW
German
SI
参数
英语
Timer no.
参数
德语
Timer no.
数据类型
TIMER
内存区域
T
描述
此地址指定要启动的定时器的编号。
TV TW S5TIME E
、
A
、
M
、定时器值
(S5TIME
格式
)
D
、
L
或常
数
描述
如果
RLO
中有上升沿
(
信号状态从
0
改变为
1)
,启动脉冲定时器指令将启动指定
的定时器。只要
RLO
为高电平,定时器就以指定的值继续运行。定时器运行时
,对信号状态
1
的检查结果为
1
。如果在定时器时间用尽前
RLO
从
1
改变为
0
,定时器将停止。这种情况下,对信号状态
1
的检查结果为
0
。
有关定时器的存储区和组件的详细信息,请参见存储区。
只能将启动脉冲定时器框放在逻辑串的右端。可以使用若干个启动脉冲定时器框
。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
- - - - - 0 - - 0
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
13-15
定时器指令
举例
程序段
1
T5
I 0.0
S5T#2s
TV
SP
程序段
2
Q 4.0
=
T5
如果输入
I0.0
的信号状态从
0
改变为
1 (RLO
中有上升沿
)
,则定时器
T5
启动。
只要信号状态为
1
,定时器就以指定的值
(2
秒
)
继续运行。如果定时器运行时,
I0.0
的信号状态从
1
改变为
0
,定时器将停止。
定时器运行时,输出
Q4.0
为
1
。
13-16
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
定时器指令
13.9 SE:启动延时脉冲定时器
符号
English
SE
TV
German
SV
TW
参数
英语
Timer no.
参数
德语
Timer no.
数据类型
TIMER
内存区域
T
描述
此地址指定要启动的定时器的编号。
E
、
A
、
M
、定时器值
(S5TIME
格式
)
TV TW S5TIME
D
、
L
或常
数
描述
如果
RLO
中有上升沿
(
信号状态从
0
改变为
1)
,启动延时脉冲定时器指令将启动
指定的定时器。如果在定时器时间用尽前
RLO
改变为
0
,定时器将继续以指定
的值运行。定时器运行时,对信号状态
1
的检查结果为
1
。定时器正运行时,如
果
RLO
从
0
改变为
1
,定时器将以指定的时间重新启动。
有关定时器的存储区和组件的详细信息,请参见存储区。
只能将启动延时脉冲定时器框放在逻辑串的右端。可以使用若干个启动延时脉冲
定时器框。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
- - - - - 0 - - 0
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
13-17
定时器指令
举例
程序段
1
T5
I 0.0
S5T#2s
TV
SE
程序段
2
Q 4.0
=
T5
如果输入
I0.0
的信号状态从
0
改变为
1 (RLO
中有上升沿
)
,则定时器
T5
启动。
定时器继续运行而不受
RLO
中下降沿的影响。如果在指定的时间用尽前
I0.0
的
信号状态从
0
改变为
1
,定时器将重新启动。
定时器运行时,输出
Q4.0
为
1
。
13-18
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
定时器指令
13.10 SD:启动接通延时定时器
符号
English
SD
TV
German
SE
TW
参数
英语
Timer no.
参数
德语
Timer no.
数据类型
TIMER
内存区域
T
描述
此地址指定要启动的定时器的编号。
TV TW S5TIME E
、
A
、
M
、定时器值
(S5TIME
格式
)
D
、
L
或常数
描述
如果
RLO
中有上升沿
(
信号状态从
0
改变为
1)
,启动接通延时定时器指令将启动
指定的定时器。如果指定的时间已用尽且未出错,而
RLO
的值仍为
1
,对信号
状态
1
的检查结果为
1
。定时器运行时,如果
RLO
从
1
改变为
0
,定时器将停
止。这种情况下,对信号状态
1
的检查结果始终为
0
。
有关定时器的存储区和组件的详细信息,请参见存储区。
只能将启动接通延时定时器框放在逻辑串的右端。可以使用若干个启动接通延时
定时器框。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
- - - - - 0 - - 0
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
13-19
定时器指令
举例
程序段
1
T5
I 0.0
S5T#2s
TV
SD
程序段
2
Q 4.0
=
T5
如果输入
I0.0
的信号状态从
0
改变为
1 (RLO
中有上升沿
)
,则定时器
T5
启动。
当定时器时间用尽时,如果
I0.0
的信号状态仍为
1
,则输出
Q4.0
为
1
。如果信
号状态从
1
改变为
0
,定时器将停止。
13.11 SS:启动掉电保护接通延时定时器
符号
English
SS
TV
German
SS
TW
参数
英语
Timer no.
参数
德语
Timer no.
数据类型
TIMER
内存区域
T
描述
此地址指定要启动的定时器的编号。
TV TW S5TIME E
、
A
、
M
、
定时器值
(S5TIME
格式
)
D
、
L
或常数
13-20
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
定时器指令
描述
如果
RLO
中有上升沿
(
信号状态从
0
改变为
1)
,启动掉电保护接通延时定时器指
令可启动指定的定时器。如果在定时器时间用尽前
RLO
改变为
0
,定时器将继
续以指定的值运行。如果定时器时间已用尽,则对信号状态
1
的检查结果为
1
,
而与
RLO
无关。定时器正运行时,如果
RLO
从
0
改变为
1
,定时器将以指定的
时间重新启动。
有关定时器的存储区和组件的详细信息,请参见存储区。
只能将启动掉电保护接通延时定时器框放在逻辑串的右端。可以使用若干个启动
掉电保护接通延时定时器框。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
- - - - - 0 - - 0
举例
程序段
1
T5
I 0.0
S5T#2s
TV
SS
程序段
2
Q 4.0
=
T5
如果输入
I0.0
的信号状态从
0
改变为
1 (RLO
中有上升沿
)
,则定时器
T5
启动。
定时器将继续运行,而与输入
I0.0
上信号状态是否从
1
改变为
0
无关。如果在
指定的时间用尽前信号状态从
0
改变为
1
,定时器将重新启动。
定时器时间用尽后,输出
Q4.0
为
1
。
13.12 SF 启动断开延迟定时器
符号
English
SF
TV
German
SA
TW
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
13-21
定时器指令
参数
英语
Timer no.
参数
德语
Timer no.
数据类型
TIMER
内存区域
T
描述
此地址指定要启动的定时器的编号。
E
、
A
、
M
、定时器值
(S5TIME
格式
)
TV TW S5TIME
D
、
L
或常数
描述
如果
RLO
中有下降沿
(
信号状态从
1
改变为
0)
,启动延时断开定时器指令将启动
指定的定时器。如果
RLO
为
1
,或定时器在运行,则对信号状态
1
的检查结果
为
1
。定时器运行时,如果
RLO
从
0
改变为
1
,定时器将复位。当
RLO
从
1
改
变为
0
后,定时器将重新启动。
有关定时器的存储区和组件的详细信息,请参见存储区。
只能将启动延时断开定时器框放在逻辑串的右端。可以使用若干个启动延时断开
定时器框。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
- - - - - 0 - - 0
13-22
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
定时器指令
举例
程序段
1
T5
I 0.0
S5T#2s
TV
SF
程序段
2
Q 4.0
=
T5
如果输入
I0.0
的信号状态从
1
改变为
0
,则定时器启动。
如果信号状态从
0
改变为
1
,定时器将复位。
如果输入
I0.0
的信号状态为
1
,或定时器正运行,则输出
Q4.0
的信号状态为
1
。
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
13-23
定时器指令
13-24
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
14 字逻辑指令
14.1 字逻辑指令概述
描述
字逻辑指令按照布尔逻辑按位比较字
(16
位
)
和双字
(32
位
)
对。
相对于
0
的输出
OUT
的结果值对状态字中的位具有以下影响:
如果输出
OUT
的结果不等于
0
,则状态字中的
CC 1
位会被设置为
1
。
如果输出
OUT
的结果为
0
,则状态字中的
CC 1
位会被设置为
0
。
要执行字逻辑运算,可使用下列指令:
•
WAND_W
:
单字与运算
(
字
)
•
WOR_W
:
单字或运算
(
字
)
•
WXOR_W
:
单字异或运算
(
字
)
•
WAND_DW
:
双字与运算
(
字
)
•
WOR_DW
:
双字或运算
(
字
)
•
WXOR_DW
:
双字异或运算
(
字
)
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
14-1
字逻辑指令
14.2 WAND_W:单字与运算(字)
符号
WAND_W
EN
IN1
IN2
OUT
ENO
数据类型
内存区域
描述
参数
EN BOOL I
、
Q
、
M
、
D
、
L
、使能输入
T
、
C
IN1 WORD I
、
Q
、
M
、
D
、
L
或逻辑运算的第一个值
常数
IN2 WORD I
、
Q
、
M
、
D
、
L
或逻辑运算的第二个值
常数
OUT WORD I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
逻辑运算结果
使能输出
描述
(字)单字与运算指令由位于使能输入
(EN)
的信号状态
1
激活,并根据与运算真值
表逐位组合位于输入
IN1
和
IN2
的两个数值。这些值被解释为纯位模式。结果可
在输出
OUT
处扫描。
ENO
具有与
EN
相同的信号状态。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 X 0 0 - X 1 1 1
举例
WAND_W
I 0.0
MW0
2#1111
EN
IN1
IN2
OUT
ENO
MW2
Q 4.0
=
当
I0.0
的信号状态为
1
时会激活该指令。只有
0
到
3
之间的位是相关的,所有
其它
MW0
位都被屏蔽。
IN1 = 0101
IN2 = 1111
OUT = 0101
如果执行了该指令,则
Q4.0
为
1
。
14-2
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
字逻辑指令
14.3 WOR_W:单字或运算(字)
符号
WOR_W
EN
IN1
IN2
OUT
ENO
数据类型
内存区域
描述
参数
EN BOOL I
、
Q
、
M
、
D
、
L
、
T
、使能输入
C
IN1 WORD I
、
Q
、
M
、
D
、
L
或常
数
IN2 WORD I
、
Q
、
M
、
D
、
L
或常
数
OUT WORD I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
逻辑运算的第一个值
逻辑运算的第二个值
逻辑运算结果
使能输出
描述
(字)单字或运算指令由位于使能输入
(EN)
的信号状态
1
激活,并根据或运算真值
表逐位组合位于输入
IN1
和
IN2
的两个数值。这些值被解释为纯位模式。结果可
在输出
OUT
处扫描。
ENO
具有与
EN
相同的信号状态。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 X 0 0 - X 1 1 1
举例
WOR_W
I 0.0
MW0
2#1111
EN
IN1
IN2
OUT
ENO
MW2
Q 4.0
=
当
I0.0
为
1
时将激活该指令。对
MW0
中的位和常数中的位执行或运算,
0
到
3
之间的位被设置为
1
,
MW0
的所有其它位均以不变形式被输入
MW2
中
IN1 = 0101
IN2 = 1111
OUT = 1111
如果执行了该指令,则
Q4.0
为
1
。
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
14-3
字逻辑指令
14.4 WXOR_W:单字异或运算(字)
符号
WXOR_W
EN
IN1
IN2
OUT
ENO
参数
数据类型
内存区域
描述
使能输入
逻辑运算的第一个值
逻辑运算的第二个值
逻辑运算结果
使能输出
EN BOOL I
、
Q
、
M
、
D
、
L
IN1 WORD I
、
Q
、
M
、
D
、
L
或常数
IN2 WORD I
、
Q
、
M
、
D
、
L
或常数
OUT WORD I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
描述
(字)单字或运算指令由位于使能输入
(EN)
的信号状态
1
激活,并根据或运算真值
表逐位组合位于输入
IN1
和
IN2
的两个数值。这些值被解释为纯位模式。结果可
在输出
OUT
处扫描。
ENO
具有与
EN
相同的信号状态。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 X 0 0 - X 1 1 1
举例
WXOR_W
I 0.0
MW0
2#1111
EN
IN1
IN2
OUT
ENO
MW2
Q 4.0
=
当输入
I0.0
为
1
时,会激活该指令。
IN1 = 0101
IN2 = 1111
OUT = 1010
如果执行了该指令,则
Q4.0
为
1
。
14-4
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
字逻辑指令
14.5 WAND_DW:双字与运算(字)
符号
WAND_DW
EN
IN1
IN2
OUT
ENO
数据类型
内存区域
描述
使能输入
逻辑运算的第一个值
参数
EN BOOL I
、
Q
、
M
、
D
、
L
、
T
、
C
IN1 DWORD I
、
Q
、
M
、
D
或常数
L
IN2 DWORD I
、
Q
、
M
、
D
、
L
或常逻辑运算的第二个值
数
OUT DWORD I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
逻辑运算结果
使能输出
描述
(字)双字与运算指令由位于使能输入
(EN)
的信号状态
1
激活,并根据与运算真值
表逐位组合位于输入
IN1
和
IN2
的两个数值。这些值被解释为纯位模式。结果可
在输出
OUT
处扫描。
ENO
具有与
EN
相同的信号状态。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 X 0 0 - X 1 1 1
举例
WAND_DW
I 0.0
MD0
DW#16#FFF
EN
IN1
IN2
OUT
ENO
MD4
Q 4.0
=
当
I0.0
为
1
时会激活该指令。只有
0
到
11
之间的位是相关的,所有其它
MD4
位都被屏蔽。
IN1 = 0101 0101
IN2 = 0000 1111
OUT = 0000 0101
如果执行了该指令,则
Q4.0
为
1
。
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
14-5
字逻辑指令
14.6 WOR_DW:双字或运算(字)
符号
WOR_DW
EN
IN1
IN2
OUT
ENO
数据类型
内存区域
描述
使能输入
参数
EN BOOL I
、
Q
、
M
、
D
、
L
、
T
、
C
IN1 DWORD I
、
Q
、
M
、
D
、
L
或常逻辑运算的第一个值
数
IN2 DWORD I
、
Q
、
M
、
D
、
L
或常逻辑运算的第二个值
数
OUT DWORD I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
逻辑运算结果
使能输出
描述
(字)双字或运算指令由位于使能输入
(EN)
的信号状态
1
激活,并根据或运算真值
表逐位组合位于输入
IN1
和
IN2
的两个数值。这些值被解释为纯位模式。结果可
在输出
OUT
处扫描。
ENO
具有与
EN
相同的信号状态。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 X 0 0 - X 1 1 1
举例
WOR_DW
I 0.0
MD0
DW#16#FFF
EN
IN1
IN2
OUT
ENO
MD4
Q 4.0
=
当
I0.0
为
1
时将激活该指令。对
MD0
中的位和常数中的位执行或运算,
0
到
11
之间的位被设置为
1
,
MD0
的所有其它位均以不变形式被输入
MD4
中。
IN1 = 0101 0101
IN2 = 0000 1111
OUT = 0101 1111
如果执行了该指令,则
Q4.0
为
1
。
14-6
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
字逻辑指令
14.7 WXOR_DW:双字异或运算(字)
符号
WXOR_DW
EN
IN1
IN2
OUT
ENO
数据类型
内存区域
描述
使能输入
逻辑运算的第一个值
逻辑运算的第二个值
逻辑运算结果
使能输出
参数
EN BOOL I
、
Q
、
M
、
D
、
L
、
T
、
C
IN1 DWORD I
、
Q
、
M
、
D
、
L
或常
数
IN2 DWORD I
、
Q
、
M
、
D
、
L
或常
数
OUT DWORD I
、
Q
、
M
、
D
、
L
ENO BOOL I
、
Q
、
M
、
D
、
L
描述
(字)双字异或运算指令由位于使能输入
(EN)
的信号状态
1
激活,并根据异或运算
真值表逐位组合位于输入
IN1
和
IN2
的两个数值。这些值被解释为纯位模式。结
果可在输出
OUT
处扫描。
ENO
具有与
EN
相同的信号状态。
状态字
BR CC 1 CC 0 OV OS OR STA RLO FC
写
1 X 0 0 - X 1 1 1
举例
WXOR_DW
I 0.0
MD0
DW#16#FFF
EN
IN1
IN2
OUT
ENO
MD4
Q 4.0
=
当输入
I0.0
为
1
时,会激活该指令。
IN1 = 0101 0101
IN2 = 0000 1111
OUT = 0101 1010
如果执行了该指令,则
Q4.0
为
1
。
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
14-7
字逻辑指令
14-8
用于S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
A 全部FBD指令概述
A.1
德语助记符
根据德语助记符(SIMATIC)排序的FBD指令
英语助记符 程序元素分类 描述
“与”逻辑操作
“或”逻辑操作
赋值
中间输出
插入数字输入
数字输入取反
结果位
结果位
结果位
结果位
结果位
结果位
浮点数的绝对值运算
计算以浮点数表示的角的三角函数
加双精度整型
加整型
加实型
计算以浮点数表示的角的三角函数
计算以浮点数表示的角的三角函数
& & 位逻辑指令
=>1 >=1 位逻辑指令
= = 位逻辑指令
# # 位逻辑指令
---| ---| 位逻辑指令
---o| ---o| 位逻辑指令
==0 ==0 状态位
>0 >0 状态位
=>0 >=0 状态位
<0 <0 状态位
=<0 <=0 状态位
<>0 <>0 状态位
ABS ABS 浮点算术运算指令
ACOS ACOS 浮点算术运算指令
ADD_DI ADD_DI 整数算术运算指令
ADD_I ADD_I 整数算术运算指令
ADD_R ADD_R 浮点算术运算指令
ASIN ASIN 浮点算术运算指令
ATAN ATAN 浮点算术运算指令
BCD_DI BCD_DI 转换 BCD码转换为双精度整型
BCD_I BCD_I 转换 BCD码转换为整型
BIE BR 状态位 BR存取区异常位
CALL CALL 程序控制指令 调用无参数的FC/SFC
CALL_FB CALL_FB 程序控制指令 CALL_FB (以框方式调用FB)
CALL_FC CALL_FC 程序控制指令 CALL_FC (以框方式调用FC)
CALL_SFB CALL_SFB 程序控制指令 CALL_SFB (以框方式调用系统FB)
CALL_SFC CALL_SFC 程序控制指令 CALL_SFC (以框方式调用系统FC)
CEIL CEIL 转换指令
CMP ?D CMP ?D 比较指令
上限
比较双精度整数
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
A-1
全部
FBD
指令概述
德语助记符
CMP ?I
CMP ?R
英语助记符
CMP ?I
CMP ?R
程序元素分类
比较指令
比较指令
描述
整数比较
比较实数
计算以浮点数表示的角的三角函数
双精度整型转换为BCD码
双精度整型转换为实型
除双精度整型
除整型
除实型
计算浮点数的指数值
基数
整型转换为BCD码
整型转换为双精度整型
对整型数求反码
二进制反码双精度整型
块中无条件跳转
块中有条件跳转
若非则跳转
跳转标签
计算浮点数的自然对数
主控继电器开/关
主控继电器开/关
主控继电器激活/去活
主控继电器激活/去活
返回分数双精度整型
赋值
乘双精度整型
乘整型
乘实型
地址负跳沿检测
二进制补码双精度整型
二进制补码整型
实数取反
打开数据块
存储的溢出异常位
溢出异常位
地址正跳沿检测
复位输出
返回
循环左移双字
COS COS 浮点算术运算指令
DI_BCD DI_BCD 转换指令
DI_R DI_R 转换指令
DIV_DI DIV_DI 整数算术运算指令
DIV_I DIV_I 整数算术运算指令
DIV_R DIV_R 浮点算术运算指令
EXP EXP 浮点算术运算指令
FLOOR FLOOR 转换指令
I_BCD I_BCD 转换指令
I_DI I_DI 转换指令
INV_I INV_I 转换指令
INV_DI INV_DI 转换指令
JMP JMP 跳转
JMP JMP 跳转
JMPN JMPN 跳转
LABEL LABEL 跳转
LN LN 浮点算术运算指令
MCR> MCR> 程序控制
MCR< MCR< 程序控制
MCRA MCRA 程序控制
MCRD MCRD 程序控制
MOD_DI MOD_DI 整数算术运算指令
MOVE MOVE 传送
MUL_DI MUL_DI 整数算术运算指令
MUL_I MUL_I 整数算术运算指令
MUL_R MUL_R 浮点算术运算指令
NEG NEG 位逻辑指令
NEG_DI NEG_DI 转换指令
NEG_I NEG_I 转换指令
NEG_R NEG_R 转换指令
OPN OPN DB调用指令
OS OS 状态位指令
OV OV 状态位指令
POS POS 位逻辑指令
R R 位逻辑指令
RET RET 程序控制
ROL_DW ROL_DW 移位/循环
N N 位逻辑指令 RLO负跳沿检测
P P 位逻辑指令 RLO正跳沿检测
A-2
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
全部
FBD
指令概述
德语助记符 英语助记符 程序元素分类 描述
取整为双精度整型
循环右移双字
复位置位触发器
置位输出
启动断开延时定时器
将RLO存入BR存储区
设置断开延时定时器参数并启动
设置接通延时定时器参数并启动
设置接通延时定时器参数并启动
双字左移
左移字
右移双精度整型
右移双字
右移整型
右移字
启动脉冲定时器
设置脉冲定时器参数并启动
计算以浮点数表示的角的三角函数
浮点数平方(SQR)运算
计算浮点数的平方根(SQRT)
置位复位触发器
启动掉电保护接通延时定时器
设置掉电保护接通延时定时器参数并启动
减双精度整型
减整型
减实型
启动延时脉冲定时器
设置延时脉冲定时器参数并启动
设置计数器值
计算以浮点数表示的角的三角函数
截尾取整数部分
例外位无序
双字与运算(字)
单字与运算(字)
双字或运算(字)
单字或运算(字)
双字异或运算(字)
单字异或运算(字)
“异或”逻辑操作
ROUND ROUND 转换指令
ROR_DW ROR_DW 移位/循环
RS RS 位逻辑指令
S S 位逻辑指令
SA SF 定时器
SAVE SAVE 位逻辑指令
S_AVERZ S_OFFDT 定时器
SE SD 定时器
S_EVERZ S_ODT 定时器
SHL_DW SHL_DW 移位/循环
SHL_W SHL_W 移位/循环
SHR_DI SHR_DI 移位/循环
SHR_DW SHR_DW 移位/循环
SHR_I SHR_I 移位/循环
SHR_W SHR_W 移位/循环
SI SP 定时器
S_IMPULS S_PULSE 定时器
SIN SIN 浮点算术运算指令
SQR SQR 浮点算术运算指令
SQRT SQRT 浮点算术运算指令
SR SR 位逻辑指令
SS SS 定时器
S_SEVERZ S_ODTS 定时器
SUB_DI SUB_DI 整数算术运算指令
SUB_I SUB_I 整数算术运算指令
SUB_R SUB_R 浮点算术运算指令
SV SE 定时器
S_VIMP S_PEXT 定时器
SZ SC 计数器
TAN TAN 浮点算术运算指令
TRUNC TRUNC 转换指令
UO UO 状态位
WAND_DW WAND_DW 字逻辑指令
WAND_W WAND_W 字逻辑指令
WOR_DW WOR_DW 字逻辑指令
WOR_W WOR_W 字逻辑指令
WXOR_DW WXOR_DW 字逻辑指令
WXOR_W WXOR_W 字逻辑指令
XOR XOR 位逻辑指令
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
A-3
全部
FBD
指令概述
德语助记符 英语助记符 程序元素分类
计数器
计数器
计数器
描述
分配参数和递增/递减计数
值减计数器
分配参数和递减计数
值加计数器
分配参数和递增计数
ZAEHLER S_CUD
Z_RUECK S_CD
Z_VORW S_CU
ZR CD 计数器
ZV CU 计数器
A-4
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
全部
FBD
指令概述
A.2
英语助记符
根据英语助记符(国际)排序的FBD指令
德语助记符 程序元素分类 描述
“与”逻辑操作
“或”逻辑操作
赋值
中间输出
插入数字输入
数字输入取反
结果位
结果位
结果位
结果位
结果位
结果位
浮点数的绝对值运算
计算以浮点数表示的角的三角函数
加双精度整型
加双精度整型
加实型
计算以浮点数表示的角的三角函数
计算以浮点数表示的角的三角函数
& & 位逻辑指令
=>1 >=1 位逻辑指令
= = 位逻辑指令
# # 位逻辑指令
---| ---| 位逻辑指令
---o| ---o| 位逻辑指令
==0 ==0 状态位
>0 >0 状态位
=>0 >=0 状态位
<0 <0 状态位
=<0 <=0 状态位
<>0 <>0 状态位
ABS ABS 浮点算术运算指令
ACOS ACOS 浮点算术运算指令
ADD_DI ADD_DI 整数算术运算指令
ADD_I ADD_I 整数算术运算指令
ADD_R ADD_R 浮点算术运算指令
ASIN ASIN 浮点算术运算指令
ATAN ATAN 浮点算术运算指令
BCD_DI BCD_DI 转换指令 BCD码转换为双精度整型
BCD_I BCD_I 转换指令 BCD码转换为整型
BR BIE 状态位指令 BR存取区异常位
CALL CALL 程序控制指令 调用无参数的FC/SFC
CALL_FB CALL_FB 程序控制指令 CALL_FB (以框方式调用FB)
CALL_FC CALL_FC 程序控制指令 CALL_FC (以框方式调用FC)
CALL_SFB CALL_SFB 程序控制指令 CALL_SFB (以框方式调用系统FB)
CALL_SFC CALL_SFC 程序控制指令 CALL_SFC (以框方式调用系统FC)
CD ZR 计数器指令
CEIL CEIL 转换指令
CMP ?D
CMP ?I
CMP ?R
CMP ?D
CMP ?I
CMP ?R
比较指令
比较指令
比较指令
值减计数器
上限
比较双精度整数
整数比较
比较实数
计算以浮点数表示的角的三角函数
值加计数器
双精度整型转换为BCD码
双精度整型转换为实型
除双精度整型
除整型
除实型
COS COS 浮点算术运算指令
CU ZV 计数器指令
DI_BCD DI_BCD 转换指令
DI_R DI_R 转换指令
DIV_DI DIV_DI 整数算术运算指令
DIV_I DIV_I 整数算术运算指令
DIV_R DIV_R 浮点算术运算指令
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
A-5
全部
FBD
指令概述
英语助记符 德语助记符 程序元素分类 描述
计算浮点数的指数值
基数
整型转换为BCD码
整型转换为双精度整型
对整型数求反码
二进制反码双精度整型
块中无条件跳转
块中有条件跳转
若非则跳转
跳转标签
计算浮点数的自然对数
主控继电器开/关
主控继电器开/关
主控继电器激活/去活
主控继电器激活/去活
返回分数双精度整型
赋值
乘双精度整型
乘整型
乘实型
地址负跳沿检测
二进制补码双精度整型
二进制补码整型
实数取反
打开数据块
存储的溢出异常位
溢出异常位
地址正跳沿检测
复位输出
返回
循环左移双字
取整为双精度整型
循环右移双字
复位置位触发器
置位输出
将RLO存入BR存储区
EXP EXP 浮点算术运算指令
FLOOR FLOOR 转换指令
I_BCD I_BCD 转换指令
I_DI I_DI 转换指令
INV_I INV_I 转换指令
INV_DI INV_DI 转换指令
JMP JMP 跳转
JMP JMP 跳转
JMPN JMPN 跳转
LABEL LABEL
跳转
LN LN 浮点算术运算指令
MCR> MCR> 程序控制
MCR< MCR< 程序控制
MCRA MCRA 程序控制
MCRD MCRD 程序控制
MOD_DI MOD_DI 整数算术运算指令
MOVE MOVE 传送
MUL_DI MUL_DI 整数算术运算指令
MUL_I MUL_I 整数算术运算指令
MUL_R MUL_R 浮点算术运算指令
NEG NEG 位逻辑指令
NEG_DI NEG_DI 转换指令
NEG_I NEG_I 转换指令
NEG_R NEG_R 转换指令
OPN OPN DB调用
OS OS 状态位
OV OV 状态位
POS POS 位逻辑指令
R R 位逻辑指令
RET RET 程序
控制
ROL_DW ROL_DW 移位/循环指令
ROUND ROUND 转换指令
ROR_DW ROR_DW 移位/循环指令
RS RS 位逻辑指令
S S 位逻辑指令
SAVE SAVE 位逻辑指令
N N 位逻辑指令 RLO负跳沿检测
P P 位逻辑指令 RLO正跳沿检测
A-6
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
全部
FBD
指令概述
英语助记符 德语助记符 程序元素分类 描述
设置计数器值
分配参数和递减计数
分配参数和递增计数
分配参数和递增/递减计数
启动接通延时定时器
启动延时脉冲定时器
启动断开延时定时器
双字左移
左移字
右移双精度整型
右移双字
右移整型
右移字
计算以浮点数表示的角的三角函数
设置接通延时定时器参数并启动
设置掉电保护接通延时定时器参数并启动
设置断开延时定时器参数并启动
启动脉冲定时器
设置延时脉冲定时器参数并启动
设置脉冲定时器参数并启动
浮点数平方(SQR)运算
计算浮点数的平方根(SQRT)
置位复位触发器
启动掉电保护接通延时定时器
减双精度整型
减整型
减实型
计算以浮点数表示的角的三角函数
截尾取整数部分
例外位无序
双字与运算(字)
单字与运算(字)
双字或运算(字)
单字或运算(字)
双字异或运算(字)
单字异或运算(字)
“异或”逻辑操作
SC SZ 计数器指令
S_CD Z_RUECK 计数器指令
S_CU Z_VORW 计数器指令
S_CUD ZAEHLER
计数器
SD SE 定时器指令
SE SV 定时器指令
SF SA 定时器指令
SHL_DW SHL_DW 移位/循环指令
SHL_W SHL_W 移位/循环指令
SHR_DI SHR_DI 移位/循环指令
SHR_DW SHR_DW 移位/循环指令
SHR_I SHR_I 移位/循环指令
SHR_W SHR_W 移位/循环指令
SIN SIN 浮点算术运算指令
S_ODT S_EVERZ 定时器指令
S_ODTS S_SEVERZ 定时器指令
S_OFFDT S_AVERZ 定时器指令
SP SI 定时器指令
S_PEXT S_VIMP 定时器指令
S_PULSE S_IMPULS 定时器指令
SQR SQR 浮点算术运算指令
SQRT SQRT 浮点算术运算指令
SR SR 位逻辑指令
SS SS 定时器指令
SUB_DI SUB_DI 整数算术运算指令
SUB_I SUB_I 整数算术运算指令
SUB_R SUB_R 浮点算术运算指令
TAN TAN 浮点算术运算指令
TRUNC TRUNC 转换指令
UO UO 状态位指令
WAND_DW WAND_DW 字逻辑指令
WAND_W WAND_W 字逻辑指令
WOR_DW WOR_DW 字逻辑指令
WOR_W WOR_W 字逻辑指令
WXOR_DW WXOR_DW 字逻辑指令
WXOR_W WXOR_W 字逻辑指令
XOR XOR 位逻辑指令
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
A-7
编程实例
A-8
S7-300和S7-400的功能块图(FBD)编程
5E01112994-01
B 编程实例
B.1
实际应用
编程举例概述
每一个语句表指令都触发一个特定的操作。将这些指令组合到程序中后,可以完
成很多种类的自动化任务。本章提供下列实际应用语句表指令的实例:
• 控制传送带使用位逻辑指令
• 检测传送带的移动方向使用位逻辑指令使用位逻辑指令
• 生成时钟脉冲使用定时器指令
• 监视存储空间使用计数器和比较指令
• 使用整数算术运算指令解题
• 设置加热烘炉的时长
使用的指令
助记符
WAND_W
WOR_W
S_CD
S_CU
R
S
P
ADD_I
DIV_I
MUL_I
CMP >=I、CMP <=I
&
>=1
=
JMPN
RET
MOVE
SE
程序元素分类 描述
字逻辑指令 (字)单字与运算
字逻辑指令 (字)单字或运算
计数器指令 值减计数器
计数器指令 值加计数器
位逻辑指令 复位输出
位逻辑指令 设置输出
位逻辑指令 RLO正跳沿检测
浮点算术运算指令 加整型
浮点指令 除整型
浮点指令 乘整型
比较 整数比较
位逻辑指令 与运算
位逻辑指令 或运算
位逻辑指令 赋值
跳转指令 若非则跳转
程序控制指令 返回
传送指令 赋值
定时器指令 延时脉冲定时器
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
B-1
编程实例
B.2 举例:位逻辑指令
举例1:控制传送带
下图显示可以电气启动的传送带。在传送带的开始位置有两个按钮开关:用于启
动的S1和用于停止的S2。在传送带尾端也有两个按钮开关:用于启动的S3和
用于停止的S4。从任何一端都可以启动或停止传送带。另外,当传送带上的物
品到达末端时传感器S5会使传送带停止。
传感器S5
MOTOR_ON
S1
S2
O启动
O停止
S3
S4
O启动
O停止
绝对编程和符号编程
您可以使用代表传送机系统各种组件的绝对值或符号编写程序,借以激活传送带
系统的方向显示。
您需要制定一个符号表,使您所选择的符号与绝对值建立关联
(
参见
STEP 7
在
线帮助
)
。
系统组件
启动按钮开关
停止按钮开关
启动按钮开关
停止按钮开关
传感器
电机
绝对地址
I 1.1
I 1.2
I 1.3
I 1.4
I 1.5
Q 4.0
符号
S1
S2
S3
S4
S5
MOTOR_ON
符号表
I 1.1 S1
I 1.2 S2
I 1.3 S3
I 1.4 S4
I 1.5 S5
Q 4.0 MOTOR_ON
B-2
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
编程实例
传送带控制功能块图
程序段
1
:按任一个启动开关接通电机。
I 1.1
I 1.3
>=1
Q 4.0
S
程序段
2
:按任一停止开关或打开传送带末端的传感器的常闭触点,可以关闭电
机。
I 1.2
I 1.4
I 1.5
>=1
Q 4.0
R
举例2:检测传送带方向
下图显示配备两个光电屏障
(PEB1
和
PEB2)
的传送带,它们专用于检测包裹在
传送带上移动的方向。每个光电屏障都起到类似常开触点的作用。
Q 4.0
PEB2PEB1
Q 4.1
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
B-3
编程实例
绝对编程和符号编程
可以使用代表传送系统各种组件的绝对值或符号编写激活传送带系统方向显示的
程序。
您需要制定一个符号表,使您所选择的符号与绝对值建立关联
(
参见
STEP 7
在
线帮助
)
。
系统组件
光电屏障
1
光电屏障
2
右向移动显示
左向移动显示
脉冲存储位
1
脉冲存储位
2
绝对
地址
I 0.0
I 0.1
Q 4.0
Q 4.1
M 0.0
M 0.1
符号
PEB1
PEB2
RIGHT
LEFT
PMB1
PMB2
符号表
I 0.0 PEB1
I 0.1 PEB2
Q 4.0 RIGHT
Q 4.1 LEFT
M 0.0 PMB1
M 0.1 PMB2
用于检测传送带方向的功能块图
程序段
1
:如果输入
I 0.0
处信号状态从
0
变到
1 (
上升沿
)
,同时输入
I 0.1
处信
号状态为
0
,则传送带上的包裹会正在向左移动。
M 0.0
I 0.0
P
I 0.1
&
Q 4.1
S
程序段
2
:如果输入
I 0.1
处信号状态从
0
变到
1 (
上升沿
)
,同时输入
I 0.0
处信
号状态为
0
,则传送带上的包裹会正在向右移动。
M 0.1
I 0.1
P
I 0.0
&
Q 4.0
S
程序段
3
:如果光电屏障之一被中断,则表明屏障之间有包裹。方向指针关闭。
&
I 0.0
I 0.1
Q 4.0
R
Q 4.1
R
B-4
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
编程实例
B.3 举例:定时器指令
时钟脉冲发生器
需要产生周期性重复的信号时,可以使用时钟脉冲发生器或闪烁继电器。时钟脉
冲发生器在控制指示灯闪烁的信号系统中是公用的。
使用
S7-300
时,可以通过在专用组织块中使用时间驱动处理来实现时钟脉冲发
生器功能。然而,下列
FBD
程序中显示的实例说明了使用定时器功能生成时钟
脉冲。此示例程序显示如何使用定时器实现自由设定时钟脉冲发生器。
产生时钟脉冲(脉冲占空比1:1)的功能块图
程序段
1
:如果定时器
T1
的信号状态为
0
,将时间值
250
毫秒装入
T1
,并将
T1
作为延时脉冲定时器启动。
T 1
M0.2
&
SE
S5T#250MS
T
程序段
2
:该定时器的状态临时保存在一个辅助的内存标记中。
M0.2
T 1
&
=
程序段
3
:如果定时器
T1
的信号状态为
1
,则跳转至跳转标签
M001
。
M001
M0.2
&
JMP
程序段
4
:定时器
T1
到时后,存储字节
100
增加
1
。
ADD_I
.?EN
MW100IN1OUTMW100
1IN2ENO
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
B-5
编程实例
信号检查
B-6
程序段
5
:MOVE指令允许在输出
Q12.0
到
Q13.7
处输出不同的时钟频率。
M001
MOVE
.?ENOUTQW12
MW100INENO
在以下时钟脉冲实例中,对于与逻辑操作取反的输入参数
(M0.2)
来说,定时器
T1
的信号检查将产生下列逻辑运算结果
(RLO)
:
1
0
250 ms
只要时间一结束,定时器就将重新启动。因此,该信号只是很短暂地产生一个信
号状态
1
。
取反
(
反向
) RLO
:
1
0
250 ms
每隔
250msRLO
位都为
0
一次。跳转被忽略,而存储字节
MW100
的内容增加
1
。
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
编程实例
获得专用频率
通过存储字节
MB101
和
MB100
的每个位可以获得下列频率:
MB101/MB100的位
M 101.0
M 101.1
M 101.2
M 101.3
M 101.4
M 101.5
M 101.6
M 101.7
M 100.0
M 100.1
M 100.2
M 100.3
M 100.4
M 100.5
M 100.6
M 100.7
频率(赫兹)
2.0
1.0
0.5
0.25
0.125
0.0625
0.03125
0.015625
0.0078125
0.0039062
0.0019531
0.0009765
0.0004882
0.0002441
0.000122
0.000061
持续时间
0.5
秒
(250
毫秒开
/250
毫秒关
)
1
秒
(0.5
秒开
/0.5
秒关
)
2
秒
(1
秒开
/1
秒关
)
4
秒
(2
秒开
/2
秒关
)
8
秒
(4
秒开
/4
秒关
)
16
秒
(8
秒开
/8
秒关
)
32
秒
(16
秒开
/16
秒关
)
64
秒
(32
秒开
/32
秒关
)
128
秒
(64
秒开
/64
秒关
)
256
秒
(128
秒开
/128
秒关
)
512
秒
(256
秒开
/256
秒关
)
1024
秒
(512
秒开
/512
秒关
)
2048
秒
(1024
秒开
/1024
秒关
)
4096
秒
(2048
秒开
/2048
秒关
)
8192
秒
(4096
秒开
/4096
秒关
)
16384
秒
(8192
秒开
/8192
秒关
)
存储字节MB 101的各位信号状态
扫描
周期
位7 位6 位5 位4 位3 位2 位1 位0 时间值
(毫秒)
0 0 0 0 0 0 0
0
1 0 0 0 0 0 0
0
0 250
1 250
2 0 0 0 0 0 0 1 0 250
3 0 0 0 0 0 0 1 1 250
4 0 0 0 0 0 1
0
5 0 0 0 0 0 1
0
0 250
1 250
6 0 0 0 0 0 1 1 0 250
7 0 0 0 0 0 1 1 1 250
8 0 0 0 0 1 0
0
9 0 0 0 0 1 0
0
0 250
1 250
10 0 0 0 0 1 0 1 0 250
11 0 0 0 0 1 0 1 1 250
12 0 0 0 0 1 1
0
0 250
MB 101位1(M 101.1)的信号状态
频率
= 1/T = 1/1
秒
= 1
赫兹
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
B-7
编程实例
T
M 101.1
1
0
0
250 ms 0.5 s 0.75 s 1 s 1.25 s
时间
B-8
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
编程实例
B.4 举例:计数器和比较指令
带计数器和比较器的存储区
下图显示带有两个传送带并且两个带之间有一个临时存储区的系统。传送带
1
将
包裹传送到存储区。传送带
1
的末端靠近存储区处有一个光电屏障,它确定已向
存储区传送的包裹的数量。传送带
2
将包裹从临时存储区传输到装载货场,卡车
从此处取走包裹发送给用户。传送带
2
的末端靠近存储区处有一个光电屏障,它
确定离开存储区进入装载码头的包裹的数量。带有
5
个指示灯的显示面板指示临
时存储区的占用程度。
显示面板
存储区域
空
(Q 12.0)
存储区域
非空
(Q 12.1)
存储区域
50%满
(Q 15.2)
存储区域
90%满
(Q 15.3)
填充到一定容量
(Q 15.4)
存储区域
包裹输入
I 12.0100个
包裹的
临时
存储区域
I 12.1
包裹输出
传送带
1
光电屏障
1
传送带
2
传送带
2
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
B-9
编程实例
启动显示面板上的指示灯的功能块图
程序段
1
:计数器
C1
对输入端
CU
处从“
0
”到“
1
”的每次信号切换都进行正
计数,而对输入端
CD
处从“
0
”到“
1
”的每次信号切换都进行倒计数。对于输
入端
S
处从“
0
”到“
1
”的信号切换,计数器值被设置为值
PV
。输入端
R
处从
“
0
”到“
1
”的信号切换将计数器值复位为“
0
”。
MW200
包含
C1
的当前计数
器值。
Q12.1
指示“存储区不空”。
C1
S_CUD
I 12.0
I 12.1
I 12.2
C#10
I 12.3
CU
CD
S
CV
MW210
MW200
Q 12.1
=
PV
CV
_
BCD
R
Q
程序段
2
:
Q12.0
表明“存储区为空”。
Q 12.0
Q 12.1&
=
程序段
3
:如果
50
小于等于计数器值
(
换句话说,如果当前计数器值大于等于
50)
,则表示“存储区
50%
满”的指示灯变亮。
CMP
<= I
50
MW200
IN1
IN2
Q 15.2
=
程序段
4
:如果计数器值大于等于
90
,“存储区满
90%
”指示灯变亮。
CMP
>= I
MW200
90
IN1
IN2
Q 15.3
=
程序段
5
:如果计数器值大于或等于
100
,则表示“存储区满”的指示灯变亮。
CMP
>= I
MW200
100
IN1
IN2
Q 15.4
=
B-10
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
编程实例
B.5 举例:整数算术运算指令
解决数学问题
此示例程序显示如何使用三个整数算术运算指令产生与下列等式相同的结果:
MW4 = ((IW0 + DBW3) x 15) / MW0
功能块图
程序段
1
:打开数据块
DB1
。
DB1
OPN
程序段
2
:输入字
IW0
与共享数据字
DBW3
相加
(
必须定义和打开数据块
)
,然后
总和被载入存储字节
MW100
。然后,
MW100
乘以
15
,结果存储到存储字节
MW102
中。
MW102
除以
MW0
,结果存储到
MW4
中。
.?
IW0
DBW3
ADD_I
EN
IN1
IN2
OUT
ENO
MW100
15
MW100
MUL_I
EN
IN1
IN2
OUT
ENO
MW102
MW0
MW102
DIV_I
EN
IN1
IN2
OUT
ENO
MW4
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
B-11
编程实例
B.6
加热烘炉
举例:字逻辑指令
烘炉操作员按启动按钮开始烘炉加热。操作员可以使用图中所示的拨码开关设置
加热时长。操作员设置的值以二进制编码十进制
(BCD)
格式用秒为单位显示。
用于设置
BCD
位的指轮开关
烘炉
444
...0
加热
Q 4.0
7....
...07...
位
X X X X
IB0
0 0 0 11 0 0 1
IB1
0 0 0 1
IW0
字节
启动按钮
I 0.7
系统组件
绝对
地址
启动按钮 I 0.7
个位拨码开关 I 1.0到I 1.3
十位拨码开关 I 1.4到I 1.7
百位拨码开关 I 0.0到I 0.3
加热开始 Q 4.0
B-12
S7-300和S7-400的功能块图(FBD)编程
A5E01112994-01
编程实例
功能块图
程序段
1
:如果定时器正在运行,则打开加热装置。
Q 4.0
T 1
&
=
程序段
2
:如果定时器正在计时,返回指令结束此处的处理。
T 1
&
RET
程序段
3
:屏蔽输入位
I 0.4
到
I 0.7 (
即,将它们复位为
0)
。不使用拨码开关输入
的这些位。
16
位拨码开关输入根据(字)单字与运算指令与
W#16#0FFF
组合。结
果载入存储器字
MW1
中。为了设置时间基准的秒数,预设值根据(字)单字或运
算指令与
W#16#2000
组合,将位
13
设置为
1
,并将位
12
复位为
0
。
WAND_W
.?
IW0
W#16#FFF
EN
IN1
IN2
OUT
ENO
MW1
W#16#2000
MW1
WOR_W
EN
IN1
IN2
OUT
ENO
MW2
程序段
4
:如果按下启动按钮,则将定时器
T1
按延时脉冲定时器方式启动,并
作为预设值存储字节
MW2
装载
(
来自上述逻辑
)
。
T 1
I 0.7
&
MW2
SE
TV
S7-300和S7-400编程的功能块图(FBD)
A5E01112994-01
B-13