O(: “或”运算嵌套开始 (S7-1500) 说明使用““或”运算嵌套开始”指令,在进行“或”运算之前先执行括号内的表达式指令。 执行指令时,CPU 将保存该逻辑运算的当前结果(RLO) 及二进制结果 BR。执行了括号内表 达式中的指令后,将保存的 RLO 与括号内表达式的整体 RLO进行“或”运算。如果括号内 的表达式之后还有其它信号查询,那么这些查询结果也将进行“或”运算。还可以通过在括起的表达式中编写一条同样包含由括号括起的表达式的指令,将括起的表达 式进行嵌套。这里可嵌套的深度限定为 7 层。ON(:“或非”运算嵌套开始 (S7-1500) 说明 使用“‘或非’运算嵌套开始”指令,在进行“或”运算之前先执行括号内的表达式指令,并对括号内的表达式的整体结果取反。 执行指令时,CPU 将保存该逻辑运算的当前结果 (RLO) 及二进制结果 BR。执行了括号内表达式中的指令后,将对括号内表达式的 RLO 整体结果取反,然后再将其与保存的 RLO 进行“或”运算。如果括号内的表达式之后还有其它信号查询,那么这些查询结果也将进行“或” 运算。还可以通过在括起的表达式中编写一条同样包含由括号括起的表达式的指令,将括起的表达 式进行嵌套。这里可嵌套的深度限定为 7 层。
X(: “异或”运算嵌套开始(S7-1500) 说明 使用““异或”运算嵌套开始”指令,在进行“异或”运算之前先执行括号内的表达式指令。 执行指令时,CPU将保存该逻辑运算的当前结果 (RLO) 及二进制结果 BR。执行了括号内的 表达式中的指令后,将保存的 RLO 与括号内表达式的整体RLO 进行“异或”运算。如果括 号内的表达式之后还有其它信号查询,那么这些查询结果也将进行“异或”运算。还可以通过在括起的表达式中编写一条同样包含由括号括起的表达式的指令,将括起的表达 式进行嵌套。这里可嵌套的深度限定为 7 层。XN(:“异或非”运算嵌套开始 (S7-1500) 说明 使用“‘异或非’运算嵌套开始”指令,在进行“异或”运算之前先执行括号内的表达式指令,并对括号内的表达式的整体结果取反。 执行指令时,CPU 将保存该逻辑运算的当前结果 (RLO) 及二进制结果 BR。执行了括号内表达式中的指令后,将对括号内表达式的 RLO 整体结果取反,然后再将其与保存的 RLO 进行“异或”运算。如果括号内的表达式之后还有其它信号查询,那么这些查询结果也将进行“异 或”运算。还可以通过在括起的表达式中编写一条同样包含由括号括起的表达式的指令,将括起的表达 式进行嵌套。这里可嵌套的深度限定为 7 层。):嵌套闭合 (S7-1500) 说明 使用“嵌套闭合”指令来指定括号内表达式的结束。在执行指令之后,嵌套表达式的完整结果将与打开嵌套表达式的指令进行逻辑运行。 使用下列指令打开嵌套表达式: • A(:“与”运行嵌套开始 • AN(:“与非”运算嵌套开始• O(:“或”运算嵌套开始 • ON(:“或非”运算嵌套开始 • X(:“异或”运算嵌套开始 • XN(:“异或非”运算嵌套开始执行“嵌套闭合”指令之后,CPU 会将二进制结果 BR 置位为运算括号内表达式之前的信号 状态。赋值 (S7-1500) 说明使用“赋值”指令以将 CPU 中保存的逻辑运算结果 (RLO) 的信号状态分配给指定操作数。如 果 RLO的信号状态为“1”,则置位操作数。如果信号状态为“0”,则操作数复位为“0”。R: 复位 (S7-1500) 说明使用“复位”指令以将指定操作数的信号状态复位为“0”。 只有在当前的逻辑运算结果 (RLO)为“1”时,才执行该指令。执行该指令后,指定操作数将 复位为“0”。如果当前 RLO 为“0”,则指定操作数的信号状态保持不变。 参数下表列出了“复位”指令的参数: 参数 声明 数据类型 存储区 说明 <操作数> Output BOOL I、Q、M、D、LRLO 为“1”时复位的操作 数。S: 置位 (S7-1500) 说明 使用“置位”指令以将指定操作数的信号状态置位为“1”。只有在当前的逻辑运算结果 (RLO) 为“1”时,才执行该指令。执行该指令后,指定操作数将 置位为“1”。如果当前 RLO为“0”,则指定操作数的信号状态保持不变。 参数 下表列出了“置位”指令的参数: 参数 声明 数据类型 存储区 说明<操作数> Output BOOL I、Q、M、D、L RLO 为“1”时置位的操作 数。NOT: 取反 RLO(S7-1500) 说明 使用“取反 RLO”指令,可对逻辑运算结果 (RLO) 的信号状态进行取反。可以在任何地方使用 “取反RLO”指令,甚至是在逻辑运算中。SAVE: 将 RLO 保存到 BR 位 (S7-1500) 说明 使用“将 RLO 保存到 BR位”指令,将逻辑运算的结果 (RLO) 保存到二进制结果 (BR) 中。在执行过程中,此指令会将当前逻辑运算结果的信号状态传送到状态位 BR。该指令的操作与 条件无关,不会影响其它状态位。 说明在执行指令“将 RLO 保存到 BR 位”后,可通过同一块或下级块中的指令再次修改 BR 位。 使用指令“将 RLO 保存到 BR位”,可检查块的执行状态。例如,如果在块的结尾处使用 “将 RLO 保存到 BR 位”指令,则 BR位将置位为块当前逻辑运算结果的信号状态。 BR 位有助于针对块调用实现 EN/ENO 机制。有关此主题的详细信息,请参见“另请参见”。示例 以下示例说明了该指令的工作原理:FN: 扫描 RLO 的信号下降沿 (S7-1500) 说明 使用“扫描 RLO的信号下降沿”指令,可查询逻辑运算结果 (RLO) 的信号状态从“1”到“0”的 更改。该指令将比较 RLO的当前信号状态与保存在边沿存储位(<操作数>)中上一次查询 的信号状态。如果该指令检测到 RLO从“1”变为“0”,则说明出现了一个信号下降沿。 下图显示了下降沿和上升沿时,RLO 的变化:修改边沿存储位的地址边沿存储器位的地址在程序中Zui多只能使用一次,否则,会覆盖该位存储器。该步骤将影响到边沿检测,从而导致结果不再唯一。边沿存储位的存储区域必须位于 DB(FB 静态区域) 或位存储区中。FP: 扫描 RLO的信号上升沿 (S7-1500) 说明 使用“扫描 RLO 的信号上升沿”指令,可查询逻辑运算结果 (RLO)的信号状态从“0”到“1”的 更改。该指令将比较 RLO 的当前信号状态与保存在边沿存储位(<操作数>)中上一次查询的信号状态。如果该指令检测到 RLO 从“0”变为“1”,则说明出现了一个信号上升沿。 下图显示了下降沿和上升沿时,RLO的变化:每次执行指令时,都会查询信号上升沿。边沿检测后,如果检测到信号上升沿,则 RLO 的信号状态将在一个程序周期内保持置位为“1”。在其它任何情况下,RLO 的信号状态均为“0”。 说明 修改边沿存储位的地址边沿存储器位的地址在程序中Zui多只能使用一次,否则,会覆盖该位存储器。该步骤将影响到边沿检测,从而导致结果不再唯一。边沿存储位的存储区域必须位于 DB(FB 静态区域) 或位存储区中。定时器操作 (S7-1500)FR: 启用定时器 (S7-1500) 说明 可以使用指令“启用定时器”重新启动定时器。在上升沿时执行该指令,并通过复位内部边沿触发标志来启动定时器。当逻辑运算结果为“1”时执行该指令,在启动定时器的过程中,即使在启动指令之前没有出现信号上升沿,定时器也会重新启动。如果在启动指令前,逻辑运 算结果为"0",那么复位内部边沿触发标志不会影响定时器。在执行“启用定时器”指令之前,如果逻辑运算结果更改为“0”,则在重新启动定时器之后该结果不受影响。 说明 在时间单元,操作系统通过时基指定的间隔,以一个时间单位缩短时间值,直到该值为“0”。递减操作与用户程序不同步执行。因此,定时器中的值比预期的时基Zui多短一个时间间隔值。以下示例中说明了如何构造一个时间单元:另请参见“L:加载定时器值”。 参数 下表列出了“启用定时器”指令的参数:L: 加载定时器值(S7-1500) 说明 使用“装载定时器值”指令,将指定的定时器的定时器值装载到累加器 1 中。装载二进制码的定时器值时,不会载入时基。此时将零写入累加器 1 中,而不是时基。 加载完成后,累加器 1 中的值为 INT 数据类型的正数。 说明在时间单元,操作系统通过时基指定的间隔,以一个时间单位缩短时间值,直到该值为“0”。递减操作与用户程序不同步执行。因此,定时器中的值比预期的时基Zui多短一个时间间隔值。 下图示例说明了如何将时间值加载到累加器中:LC:加载 BCD 码计数器值 (S7-1500) 说明 使用“加载 BCD 码定时器值”指令,将加载累加器 1 中双编码指定定时器的BCD 码定时器 值。在加载过程中,时基将传送到累加器 1 中。 加载完成后,累加器 1 中的值将为 S5TIME形式的时间段。累加器 1 中剩余的字将用零填满。 说明在时间单元,操作系统通过时基指定的间隔,以一个时间单位缩短时间值,直到该值为“0”。递减操作与用户程序不同步执行。因此,定时器中的值比预期的时基Zui多短一个时间间隔值。下图说明了如何将时间值加载到累加器中:R:复位定时器 (S7-1500) 说明使用“复位定时器”指令,可将一个特定的定时器复位为“0”。在当前的逻辑运算结果 (RLO) 为“1”时,执行该指令。只有在执行指令之前RLO 为“1”,所指定的定时器才会返回值“0”。该 指令同时也将时间值和已编程时间段的时基复位为 "0"。 说明在时间单元,操作系统通过时基指定的间隔,以一个时间单位缩短时间值,直到该值为“0”。递减操作与用户程序不同步执行。因此,定时器中的值比预期的时基Zui多短一个时间间隔值。