关闭 MCR 区域(S7-300, S7-400) 说明 “关闭 MCR 区域”指令将完成 MCR 相关(MCR =主控继电器)程序部分。在这种情况下,该 指令会从 MCR 堆栈的Zui后一个条目中删除逻辑运算结果 (RLO)。 MCR 堆栈Zui多可以包含8 个条目,工作方式类似于 LIFO 缓冲区(后进先出)。 如果堆栈已 空,则该指令会生成一条错误消息 (MCRF)。 说明 有关使用MCR 功能的信息,请参见“另请参见”中“使用 MCR 功能的重要注意事项”。 使用“打开 MCR 区域”指令来编写 MCR 相关性。“打开 MCR 区域”和“关闭 MCR 区域” 指令必须成对编写。 如果未编写其中一条指令,将触发 MCR 堆栈错误。
在程序段 1 中编写 MCR区域的开始。如果操作数“TagIn_1”返回信号状态“1”,则在第一级 MCR 区域将启用 MCR相关性。在这种情况下,操作数“TagIn_4”的信号状态将分配给操作数“TagOut_2”(程序段6)。如果操作数“TagIn_1”返回信号状态“0”,则禁用 MCR 相关性,同 时操作数“TagOut_2”复位为“0”。MCR区域的 MCR 相关性在程序段 7 中被禁用。 在程序段 3 中,如果操作数“TagIn_2”的信号状态为“1”,并且 MCR区域的第一级已启用,则 在 MCR 区域的第二级也启用 MCR 相关性。这种情况下,操作数“TagIn_3”的信号状态分配给操作数“TagOut_1”。如果操作数“TagIn_2”返回信号状态“0”,则禁用 MCR 相关性,同时操作数“TagOut_1”复位为“0”。在程序段 5 中,将禁用 MCR 区域第二级的 MCR 相关性。MCR 区 域的结尾编写在程序段8 中。在程序段 1 中编写 MCR 区域的开始。如果操作数“TagIn_1”返回信号状态“1”,则在第一级 MCR 区域将启用MCR 相关性。在这种情况下,操作数“TagIn_4”的信号状态将分配给操作数 “TagOut_2”(程序段6)。如果操作数“TagIn_1”返回信号状态“0”,则禁用 MCR 相关性,同 时操作数“TagOut_2”复位为“0”。MCR区域的 MCR 相关性在程序段 7 中被禁用。 在程序段 3 中,如果操作数“TagIn_2”的信号状态为“1”,则在 MCR区域的第二级也启用 MCR 相关性。这种情况下,操作数“TagIn_3”的信号状态分配给操作数“TagOut_1”。如果操作数“TagIn_2”返回信号状态“0”,则禁用 MCR 相关性,并且不管操作数“TagIn_3”的信号状态如何,操作数“TagOut_1”都复位为“0”。在程序段 5 中,将禁用 MCR 区域第二级的 MCR 相关性。 MCR区域的结尾编写在程序段 8 中。启用 MCR 区域 (S7-300, S7-400) 说明 使用“启用 MCR 区域”指令,指定MCR 区域的起始部分。在该区域内,可以使用下列指令 启用或禁用 MCR 相关性: • ---(MCR<): 打开 MCR 区域• ---(MCR>): 关闭 MCR 区域 使用“禁用 MCR 区域”(MCRD) 指令,可以指定 MCR 区域的结束。用于定义 MCR 区域开始 和结束的指令必须成对使用。 说明 有关使用 MCR 功能的信息,请参见“另请参见”中“使用 MCR功能的重要注意事项”。 如果调用 MCR 区域中的块,那么在被调用的块中将禁用 MCR 相关性。 退出块后,将置位 MCR相关性,从而与块调用之前相同。 指令的执行与状态位无关,也不会影响这些位。在程序段 1 中编写 MCR区域的开始。如果操作数“TagIn_1”返回信号状态“1”,则启用 MCR 相关性。在这种情况下,操作数“TagIn_2”的信号状态将分配给操作数“TagOut”(程序段 3)。如果操作数“TagIn_1”返回信号状态“0”,则禁用 MCR 相关性,并且不管操作数“TagIn_2”的信号状态如何,操作数“TagOut”都复位为“0”。在程序段 4 中,将禁用 MCR 区域的 MCR 相关性。 MCR区域的结尾编写在程序段 8 中。禁用 MCR 区域 (S7-300, S7-400) 说明 使用“禁用 MCR 区域”指令指定 MCR区域的结束。使用指令“启用 MCR 区域”(MCRA),指定 MCR 区域的开始。 用于定义 MCR 区域开始和结束的指令必须成对使用。 说明 有关使用 MCR 功能的信息,请参见“另请参见”中“使用 MCR 功能的重要注意事项”。 在 MCR区域内,可以使用下列指令编程 MCR 相关性: • ---(MCR<): 打开 MCR 区域 • ---(MCR>):关闭 MCR 区域 如果调用 MCR 区域中的块,那么在被调用的块中将禁用 MCR 相关性。 退出块后,将置位 MCR相关性,从而与块调用之前相同。 指令的执行与状态位无关,也不会影响这些位。在程序段 1 中编写 MCR区域的开始。如果操作数“TagIn_1”返回信号状态“1”,则启用 MCR 相关性。在这种情况下,操作数“TagIn_2”的信号状态将分配给操作数“TagOut”(程序段 3)。如果操作数“TagIn_1”返回信号状态“0”,则禁用 MCR 相关性,并且不管操作数“TagIn_2”的信号状态如何,操作数“TagOut”都复位为“0”。在程序段 4 中,将禁用 MCR 区域的 MCR 相关性。 MCR区域的结尾编写在程序段 8 中。置位位数组 (S7-300, S7-400) 说明“置位位数组”指令,将指定区域中位的信号状态置位为“1”。在参数 S_BIT 中使用指针定义 范围起点。如果指针指向外部 I/O的存储区,则不执行该指令。在参数 N 中指定要在指定区 域中置位的位数。如果参数 N 的值为“0”,则调用该指令不起作用。 只有MCR 位为“1”时,才会执行该指令。如果 MCR 位的信号状态为“0”,则指定区域中的位 保持不变。 说明 参数 N 在参数 N处,还可以互连数据块的元素。参数 声明 数据类型 存储区 说明 S_BIT Input POINTER I、Q、M、D指向区域中第一个位的指 针,其中该区域内的位将 被置位。 对于跨区域间接寄存器寻 址,必须以双字格式指定 该指针。 N InputINT I、Q、M、D、 L、P 或常量 要置位的位数 有关有效数据类型的更多信息,请参见“另请参见”。SETP:在 I/O区域置位位数组 (S7-400) 说明 使用“在 I/O 区域置位位数组”指令将 I/O区域中多个位的信号状态置位为“1”。同时还会将 输出过程映像中的相应位设置为与这些 I/O 位相同。 使用该指令的参数 N 和 SA定义要置位的位数组。数组中的位必须属于要分配过程映像的 I/O 区域。 如果选择的部分位数组没有对应插入的 I/O设备,则该指令将尝试置位整个位数组。在这种 情况下,将在参数 RET_VAL 中输出错误信息。 按字节置位 I/O 区域。如果通过参数N 和 SA 定义的位数组不是始于或止于字节边界,则调 用该指令有以下作用: •该位在待传送的第一个或Zui后一个字节中,但不包含在所定义的位数组中,该位将获取 过程映像输出中相应位的值。 警告 意外结果使用过程映像输出中相关位的值来置位这些位可能导致意外响应,例如启动电机或关闭 冷却系统。 •将属于所定义位数组的位的信号状态置位为“1”。 必须在 MCR 区域调用指令“在 I/O 区域置位位数组”。如果存在以下任一情况,调用“在 I/O 区域置位位数组”指令将不起作用且使能输出 ENO 将 被设置为“0”: • 使能输入 EN的信号状态为“0”。 • 参数 N 的值为“0”。 • MCR 位的信号状态为“1”。SETI: 置位字节数组 (S7-300,S7-400) 说明 “置位字节数组”指令,将指定字节区域中位的信号状态置位为“1”。在参数 S_BYTE 中定义数组起点。通过在该指令的参数 N 中指定要置位的位数来定义数组的大小。 说明 参数 N 的值必须是数字 8的整数倍(例如,8、16、24 等)。 在参数 S_BYTE 中指定的指针必须引用外部 I/O 存储区(P)。由于“I/0”存储区是按照字节、字 或双字访问的,参数 S_BYTE 中的指针必须引用与字节限值对应的操作数,即指针的位号必须为“0”。 说明 过程映像输出中相应位的信号状态将复位为“0”。 如果存在以下任一情况,则调用“置位字节数组”指令将不起作用,ENO使能输出置位为 “0”: • 使能输入 EN 的信号状态为“0”。 • 参数 S_BYTE 中的指针没有引用外部 I/O 存储区。 •参数 S_BYTE 中指针引用的操作数不是整字节。 • 参数 N 的值不是数字 8 的整数倍。 • MCR位的信号状态为“0”。