JL:定义跳转列表 (S7-1500) 说明 使用“定义跳转列表”指令来编写包含多个“无条件跳转”(JU) 指令条目的列表。该列表紧接在“定义跳转列表”指令之后,Zui多可以包含 255 个条目。列表中跳转函数的编号从零开始。编写跳转列表时编号必需连续。跳转列表的末尾标记有为“定义跳转列表”指令指定 的跳转标签。 列表中跳转函数的执行取决于累加器 1低字节中的值。例如,如果累加器 1 的值为“0”,则 执行第一个跳转函数。如果累加器 1中的值为“1”,则执行第二个跳转函数。如果累加器 1 中 的值大于列表条目数,则“定义跳转列表”指令会引用列表结尾。“跳转分支指令”指令的执行与条件无关,不会影响状态位。LOOP: 循环 (S7-1500) 说明 使用“循环”指令,编写程序循环。该指令将累加器 1 的低字解释为 0 到 65535 之间的无符号 16 位整数。在指令执行阶段,首 先将累加器 1 中的内容减1。在减 1 之后,如果累加器 1 中的值不为零,则在指定跳转标签处执行跳转。如果值为零,则不执行跳转,并且在下一条指令时恢复执行程序。累加 器 1中的值会指定需要执行的程序循环数。需要将这一数值保存在循环计数器中。
<数目>操作数包含循环周期的数量。<循环计数器> 操作数包含仍需执行的循环周期数。在程序循环末尾处,循环计数器的内容将加载到累加器 1 中,并被该指令减 1。在减 1 之后,如果累加器中的值不等于零,则跳转到程序循环起始处的跳转标签。 “循环”指令不影响任何状态位。 警告 预设循环计数器如果循环计数器没有预设值或者预设值为“0”,则循环计数器会递减为负值,从而产 生无限循环结果,这会使 CPU 转入 STOP模式。数据块 (S7-1500) OPN: 打开 DB 寄存器中的数据块 (S7-1500) 说明 可以使用“打开 DB寄存器中的数据块”指令打开一个全局数据块 (DB)。将数据块编号传送 到 DB 寄存器。后续的 DB命令将根据寄存器的内容访问相关块。 无条件执行“打开 DB 寄存器中的数据块”指令,该指令既不会影响逻辑运算结果,也不会影响累加器的内容。OPNDI: 打开 DI 寄存器中的数据块 (S7-1500) 说明 可以使用“打开 DI寄存器中的数据块”指令打开任意数据块。将数据块的编号传送到 DI 寄 存器。后续 DI 命令根据寄存器的内容访问相关块。从块接口对一个局部形参进行符号寻址时,通常会访问在调用块时指定编号的数据块。 无条件执行“打开 DI寄存器中的数据块”指令,该指令既不会影响逻辑运算结果,也不会 影响累加器的内容。CDB: 交换数据块寄存器 (S7-1500) 说明使用“交换数据块寄存器”指令,交换数据块寄存器的内容。该指令的执行与条件无关,它 不影响状态位。 示例以下示例说明了该指令的工作原理:
L DBLG:将全局数据块的长度加载到累加器 1中 (S7-1500) 说明 使用“将全局数据块的长度装载到累加器 1 中”指令,将通过数据块寄存器打开的全局数据块的长度装载到累加器 1 中。累加器 1 中的原有内容将移动到累加器 2 中。如果在执行该指令之前,没有通过数据块寄存器打开全局数据块,则值“0”将装载到累加器 1 中。数据块的长度与数据字节的数量相同。该指令不影响状态位。L DBNO:将全局数据块的编号加载到累加器 1 中 (S7-1500) 说明使用“将全局数据块的编号装载到累加器 1 中”指令,将通过数据块寄存器打开的全局数据 块的编号装载到累加器 1 中。累加器 1中的原有内容将移动到累加器 2 中。如果在执行该指令之前,没有通过数据块寄存器打开全局数据块,则值“0”将装载到累加器 1 中。该指令不影响状态位。L DILG:将背景数据块的长度加载到累加器 1 中 (S7-1500) 说明使用“将背景数据块的长度装载到累加器 1 中”指令,将通过数据块寄存器打开的背景数据 块的长度装载到累加器 1 中。累加器 1中的原有内容将移动到累加器 2 中。 如果在执行该指令之前,没有通过数据块寄存器打开背景数据块,则值“0”将装载到累加器 1中。数据块的长度与数据字节的数量相同。 该指令不影响状态位。L DINO:将背景数据块的编号加载到累加器 1 中 (S7-1500)说明 使用“将背景数据块的编号装载到累加器 1 中”指令,将通过数据块寄存器打开的背景数据 块的编号装载到累加器 1 中。累加器 1中的原有内容将移动到累加器 2 中。 如果在执行该指令之前,没有通过数据块寄存器打开背景数据块,则值“0”将装载到累加器 1 中。该指令不影响状态位。代码块 (S7-1500) BE:块结束 (S7-1500) 说明使用“块结束”指令,将终止当前正在处理的块,并切换到程序中调用该块的位置。之后便 通过位于块调用之后的指令来恢复执行程序。“块结束”指令的执行与条件无关。如果该指令的执行被某个跳转指令跳过,则不会结束当前程序执行,而是在块内的跳转目标处恢复执行程序。BEC: 条件块结束 (S7-1500) 说明使用“条件块结束”指令,将终止当前正在处理的块,具体操作则取决于逻辑运算的结果 (RLO),并切换到程序中调用该块的位置。 如果RLO 为“1”,则执行该指令。将终止当前正在执行的块,并在调用块中恢复执行程序。之 后便通过位于块调用之后的指令来恢复执行程序。如果在处理指令时 RLO 为“0”,则不执行指令。在这种情况下 CPU 将 RLO 置位为“1”,并执行 下一条指令。如果该指令的执行被某个跳转指令跳过,则不会结束当前程序执行,而是在块内的跳转目标 处恢复执行程序。BEU: 无条件块结束(S7-1500) 说明 使用“无条件块结束”指令,将终止当前正在处理的块,并切换到程序中调用该块的位置。之后便通过位于块调用之后的指令来恢复执行程序。 指令“无条件块结束”的执行与条件无关,可在一个块中多次编程调用。如果该指令的执行被某个跳转指令跳过,则不会结束当前程序执行,而是在块内的跳转目标处恢复执行程序。CALL:调用块 (S7-1500) 说明使用“调用块”指令,在程序中调用下列块类型: • 函数 • 函数块无条件执行“调用块”指令。执行指令之后,将在已调用块中恢复执行程序。可以向被调用块提供数据。数据通过块参数传送。已调用块的参数根据调用指令列在已调用块中。可为这些参数分配所需的现有参数。在“调用块”指令执行过程中,数据传送到已调用块。通过传送数据,可以更改状态字的内容以及地址和数据块寄存器。那些未提供参数的功能块的参数会保留它们的当前值。在调用函数时,必须提供所有的参数。 如果已调用的块没有参数,则不会显示参数列表。如果已调用的块需要背景数据块,则为其提供该块,在调用时由逗号分开。必须在调用前创 建指定的数据块。 执行已调用块时,CPU切换回调用块并在调用指令完成之后恢复执行该块。 说明 仅在禁用块属性“通过寄存器传递参数”(Parameter passing viaregisters) 时,才能使用“条 件调用块”指令。CC:条件调用块 (S7-1500) 说明 根据逻辑运算的结果(RLO),使用“条件调用块”指令调用函数 (FC) 和函数块 (FB)。 只有在执行指令之前,当前逻辑运算结果 (RLO)为“1”,才会执行该指令。执行指令之后,将 在已调用块中恢复执行程序。执行已调用块时,CPU 切换回调用块并在调用指令完成之后恢复执行该块。 如果块发生变化,则状态位 OS 将复位为“0”。对状态位 CC 0、CC 1 和 OV 的影响取决于调 用的块。 说明仅在启用块属性“通过寄存器传递参数”(Parameter passing via registers) 时,才能使用“条件调用块”指令。但这将降低系统性能。 “条件调用块”指令不会更改累加器和地址寄存器的内容。 如果当前 RLO为“0”,则不执行指令和块调用,且 RLO 被置位为“1”。UC:无条件调用块 (S7-1500) 说明使用“无条件调用块”指令,可以调用没有参数和背景数据块的函数 (FC) 和函数块 (FB)。该指令的执行与条件无关。执行指令之后,将在已调用块中恢复执行程序。执行已调用块时, CPU切换回调用块并在调用指令完成之后恢复执行该块。 如果块发生变化,则状态位 OS 将复位为“0”。对状态位 CC 0、CC 1 和 OV的影响取决于调 用的块。 说明 仅在启用块属性“通过寄存器传递参数”(Parameter passing via registers)时,才能使用“无 条件调用块”指令。但这将降低系统性能。 “无条件调用块”指令不会更改累加器和地址寄存器的内容。字逻辑运算(S7-1500) AW: 字“与”逻辑运算 (S7-1500) 说明 使用“逐字‘与’逻辑运算”指令,将累加器 1 低字的值与累加器2 低字的值或指定常数 逐位进行“与”运算。结果保存在累加器 1 的低字中。累加器 1 中高字的内容保持不变。 该指令将累加器 1的第 0 位与累加器 2 的第 0 位或一个常数进行运算,并将结果保存在累 加器 1 的第 0 位中。第 1 到 15位均以相同的方式进行运算。 如果该逻辑运算中的两个位的信号状态均为“1”,则结果位的信号状态为“1”。如果该逻辑运算的两个位中有一个位的信号状态为“0”,则对应的结果位将复位。 下表说明了如何由字“与”逻辑运算生成结果:OW:逐字‘或’逻辑运算(S7-1500) 说明 使用“逐字‘或’逻辑运算”指令,将累加器 1 低字的值与累加器 2 低字的值或指定常数逐位进行“或”运算。结果保存在累加器 1 的低字中。累加器 1 中高字的内容保持不变。 该指令将累加器 1 的第 0 位与累加器 2的第 0 位或一个常数进行运算,并将结果保存在累 加器 1 的第 0 位中。第 1 到 15 位均以相同的方式进行运算。只要该逻辑运算中的两个位中至少有一个位的信号状态为“1”,结果位的信号状态就为“1”。如果该逻辑运算的两个位的信号状态均为“0”,则对应的结果位将复位为“0”。 下表说明了如何由字“或”逻辑运算生成结果。