OW:逐字‘或’逻辑运算(S7-1500) 说明 使用“逐字‘或’逻辑运算”指令,将累加器 1 低字的值与累加器 2 低字的值或指定常数逐位进行“或”运算。结果保存在累加器 1 的低字中。累加器 1 中高字的内容保持不变。 该指令将累加器 1 的第 0 位与累加器 2的第 0 位或一个常数进行运算,并将结果保存在累 加器 1 的第 0 位中。第 1 到 15 位均以相同的方式进行运算。只要该逻辑运算中的两个位中至少有一个位的信号状态为“1”,结果位的信号状态就为“1”。如果该逻辑运算的两个位的信号状态均为“0”,则对应的结果位将复位为“0”。下表说明了如何由字“或”逻辑运算生成结果:XOW:逐字‘异或’逻辑运算 (S7-1500) 说明使用“逐字‘异或’逻辑运算”指令,将累加器 1 低字的值与累加器 2 低字的值或指定常 数逐位进行“异或”运算。结果保存在累加器 1的低字中。累加器 1 中高字的内容保持不变。 该指令将累加器 1 的第 0 位与累加器 2 的第 0位或一个常数进行运算,并将结果保存在累 加器 1 的第 0 位中。第 1 到 15 位均以相同的方式进行运算。AD:双字“与”逻辑运算 (S7-1500) 说明 使用“逐双字‘与’逻辑运算”指令,将累加器 1 的内容与累加器 2 的内容或指定常数的值逐位进行“与”运算。结果存储在累加器 1 中。 该指令将累加器 1 的第 0 位与累加器 2 的第 0位或一个常数进行运算,并将结果保存在累 加器 1 的第 0 位中。第 1 到 31 位均以相同的方式进行运算。如果该逻辑运算中的两个位的信号状态均为“1”,则结果位的信号状态为“1”。如果该逻辑运算的两个位中有一个位的信号状态为“0”,则对应的结果位将复位。 下表说明了如何由字“与”逻辑运算生成结果:OD:逐双字‘或’逻辑运算(S7-1500) 说明 使用“逐双字‘或’逻辑运算”指令,将累加器 1 的内容与累加器 2 的内容或指定常数的值逐位进行“或”运算。结果存储在累加器 1 中。 该指令将累加器 1 的第 0 位与累加器 2 的第 0位或一个常数进行运算,并将结果保存在累 加器 1 的第 0 位中。第 1 到 31 位均以相同的方式进行运算。只要该逻辑运算中的两个位中至少有一个位的信号状态为“1”,结果位的信号状态就为“1”。如果该逻辑运算的两个位的信号状态均为“0”,则对应的结果位将复位为“0”。下表说明了如何由字“或”逻辑运算生成结果:XOD:逐双字‘异或’逻辑运算 (S7-1500) 说明使用“逐双字‘异或’逻辑运算”指令,将累加器 1 的内容与累加器 2 的内容逐位进行“异 或”运算。结果存储在累加器 1 中。该指令将累加器 1 的第 0 位与累加器 2 的第 0 位或一个常数进行运算,并将结果保存在累 加器 1 的第 0 位中。第 1 到31 位均以相同的方式进行运算。 如果要链接的两个结果位的信号状态不同,则结果位的信号状态为“1”。如果该逻辑运算的两个位的信号状态相同,则对应的结果位将复位为“0”。 下表说明了如何由字“异或”逻辑运算生成结果:移位和循环 (S7-1500) 移位(S7-1500) SSI:逐字移位(带符号) (S7-1500) 说明 使用“逐字移位(带符号)”指令,将累加器 1 的低字(第 0到 15 位)逐位向右移动。在 位移过程中,变为空白的位置将使用第 15 位(INT 数字的符号位)的信号状态来填充。累 加器 1中的第 16 到 31 位保持不变。该指令的执行与 RLO 无关。将状态位 CC1 设置为所移 出Zui后一位的信号状态。下列选项可用于指定待移动位的位数: • 指定正整数作为指令参数(<编号>)。 • 通过累加器 2中低字节的值指定:该字节将解释为正整数。
SSD:逐个双字移位(带符号)(S7-1500) 说明 使用“逐个双字移位(带符号)”将累加器 1 的所有内容逐位向右移动。在位移过程中,变 为空白的位置将使用第31 位(DINT 数字的符号位)的信号状态来填充。该指令的执行与 RLO 无关。将状态位 CC1 设置为所移出Zui后一位的信号状态。下列选项可用于指定待移动位的位数: • 指定正整数作为指令参数(<编号>)。 • 通过累加器 2中低字节的值指定:该字节将解释为正整数。 您可以使用以下格式: • SSD <编号>:操作数 <数量>指定移位数。允许 0 到 31 之间的值。<编号> 大于 0 时,将 状态位 CC 0 和 OV 复位为 0。 •SSD:累加器 2 中的值指定移位数。允许 0 到 255 之间的值。当累加器 2 中的内容大于 0 时,将状态位 CC 0 和 OV复位为 0。 对于大于 31 的值,累加器 1 中的所有位都将使用第 31 位的信号状态来填充。SLW:逐字左移 (S7-1500)说明 使用“逐字左移”指令将累加器 1 的低字(第 0 到 15 位)逐位向左移动。使用零填充变为 空白的位位置。累加器 1 中的第16 到 31 位保持不变。该指令的执行与 RLO 无关。将状态位 CC1 设置为所移出Zui后一位的信号状态。下列选项可用于指定待移动位的位数: • 指定正整数作为指令参数(<编号>)。 • 通过累加器 2中低字节的值指定:该字节将解释为正整数。 您可以使用以下格式: • SLW <编号>:操作数 <数量>指定移位数。允许 0 到 15 之间的值。<编号> 大于 0 时,将 状态位 CC 0 和 OV 复位为 0。 •SLW:累加器 2 中的值指定移位数。允许 0 到 255 之间的值。当累加器 2 中的内容大于 0 时,将状态位 CC 0 和 OV复位为 0。 如果指定的移位数大于 15,则累加器 1 低字中的所有位都将使用零来填充。指定的移位数等于零,也会执行该指令。并将状态位 CC1 置位为“0”。SRW:逐字右移 (S7-1500) 说明使用“逐字右移”指令将累加器 1 的低字(第 0 到 15 位)逐位向右移动。使用零填充变为 空白的位位置。累加器 1 中的第 16到 31 位保持不变。该指令的执行与 RLO 无关。将状态位 CC1 设置为所移出Zui后一位的信号状态。下列选项可用于指定待移动位的位数: • 指定正整数作为指令参数(<编号>)。 • 通过累加器 2中低字节的值指定:该字节将解释为正整数。 您可以使用以下格式: • SRW <编号>:操作数 <数量>指定移位数。允许 0 到 15 之间的值。<编号> 大于 0 时,将 状态位 CC 0 和 OV 复位为 0。 •SRW:累加器 2 中的值指定移位数。允许 0 到 255 之间的值。当累加器 2 中的内容大于 0 时,将状态位 CC 0 和 OV复位为 0。 如果指定的移位数大于 15,则累加器 1 低字中的所有位都将使用零来填充。指定的移位数等于零,也会执行该指令。并将状态位 CC1 置位为“0”。SLD:逐双字左移 (S7-1500) 说明使用“逐双字左移”指令将累加器 1 的全部内容逐位向左移动。使用零填充变为空白的位位 置。该指令的执行与 RLO 无关。将状态位CC1 设置为所移出Zui后一位的信号状态。 下列选项可用于指定待移动位的位数: • 指定正整数作为指令参数(<编号>)。 •通过累加器 2 中低字节的值指定:该字节将解释为正整数。您可以使用以下格式: • SLD <编号>:操作数<数量> 指定移位数。允许 0 到 31 之间的值。<编号> 大于 0 时,将 状态位 CC 0 和 OV复位为 0。 • SLD:累加器 2 中的值指定移位数。允许 0 到 255 之间的值。当累加器 2 中的内容大于 0 时,将状态位CC 0 和 OV 复位为 0。 对于大于 31 的值,则累加器 1 中的所有位都将使用零来填充。指定的移位数等于零,也会执行该指令。并将状态位 CC1 置位为“0”。SRD:逐双字右移 (S7-1500) 说明使用“逐双字右移”指令将累加器 1 的全部内容逐位向右移动。使用零填充变为空白的位位 置。该指令的执行与 RLO 无关。将状态位CC1 设置为所移出Zui后一位的信号状态。 下列选项可用于指定待移动位的位数: • 指定正整数作为指令参数(<编号>)。 •通过累加器 2 中低字节的值指定:该字节将解释为正整数。 您可以使用以下格式: • SRD <编号>:操作数<数量> 指定移位数。允许 0 到 31 之间的值。<编号> 大于 0 时,将 状态位 CC 0 和 OV复位为 0。 • SRD:累加器 2 中的值指定移位数。允许 0 到 255 之间的值。当累加器 2 中的内容大于 0 时,将状态位CC 0 和 OV 复位为 0。 对于大于 31 的值,则累加器 1 中的所有位都将使用零来填充。指定的移位数等于零,也会执行该指令。并将状态位 CC1 置位为“0”。循环 (S7-1500) RLD:逐双字循环左移(S7-1500) 说明 使用“逐双字循环左移”指令,将累加器 1 的全部内容逐位向左移动。再指令执行过程中, 将累加器 1 的第 0到 31 位逐位循环向左移动,并使用推出位的位置填充在写入过程中变为 空白的位置。该指令的执行与 RLO 无关。将状态位 CC1设置为所移出Zui后一位的信号状态。 下列选项可用于指定待循环移位的位数: • 指定正整数作为指令参数(<编号>)。 •通过累加器 2 中低字节的值指定:该字节将解释为正整数。 您可以使用以下格式: • RLD <编号>:操作数<数量> 指定循环移位数。允许 0 到 32 之间的值。<编号> 大于 0 时, 将状态位 CC 0 和 OV复位为 0。 • RLD:累加器 2 中的值指定循环移位数。允许 0 到 255 之间的值。当累加器 2 中的内容 大于 0时,将状态位 CC 0 和 OV 复位为 0。 对于大于 32 的值,循环数为将该值模除 32 后得到的余数。例如,如果循环数为34,则 累加器 1 的位会循环移动 2 个位位置。 如果指定的循环位移数为 32,则累加器 1 的内容保持不变。指定的循环位移数等于零,也将执行该指令。并将状态位 CC1 置位为“0”。