复位计数器(S7-1500) 说明 使用“复位计数器”指令,将指定计数器中当前的计数器值复位为“0”。 在执行该指令之前,只有逻辑运算结果(RLO) 的信号状态为“1”时,才执行该指令。在执行 “复位计数器”指令之前,只要 RLO为“1”,则检查计数器状态是否为“1”的查询结果都将返回 “0”。复位计数器时,不会复位“置位计数器”、“加计数”和“减计数”指令中内部的边沿存储 器位。S:置位计数器 (S7-1500) 说明使用“置位计数器”指令,在查询时将指定的计数器置位为累加器 1 中的值。在执行该指令之前,如果逻辑运算的结果从“0”变为“1”,则执行“置位计数器”指令。也可以使用“启用计数器”指令将内部边沿存储器位复位为“0”,来实现信号上升沿。 要置位计数器,累加器 1必须包含有效的计数值。有效计数值是指以 3 个十进制数表示的 BCD 形式的值。只允许正计数值,计数指令无法处理负计数值。如果累加器1 中的 BCD 值无效, 则状态位 OV 的信号状态为“0”。如果其中的 BCD 值有效,则状态位 OV 的信号状态为“1”。将不启动任何同步错误处理。
CU: 加计数(S7-1500) 说明 在执行该指令之前,如果逻辑运算结果 (RLO) 从“0”变为“1”,则使用“加计数”指令将当前 计数器值加1。在每个信号上升沿处,计数值都将继续递增,直到达到上限“999”。在执行 指令之前,如果达到限值,则 RLO 不会再影响计数值。只有在信号上升沿时,才能执行“加计数”指令。也可以使用“启用计数器”指令将内部边 沿存储器位复位为“0”,来实现信号上升沿。CD:减计数 (S7-1500) 说明 在执行该指令之前,如果逻辑运算结果 (RLO) 从“0”变为“1”,则使用“减计数”指令将当前计数器值减 1。在每个信号上升沿处,计数值都将继续递减,直到达到下限“0”。在执行指令 之前,如果达到限值,则 RLO不会再影响计数值。计数值为负数时,不进行计数。 只有在信号上升沿时,才能执行“减计数”指令。也可以使用“启用计数器”指令将内部边沿存储器位复位为“0”,来实现信号上升沿。比较器运算 (S7-1500) ? I: 比较 16 位整数 (S7-1500) 说明使用“比较 16 位整数”指令,将比较累加器 2 和累加器 1 中低字的内容,并将累加器 1 和 2 的内容解释为 16 位整数(INT)。该指令根据指定的比较函数进行比较。 说明 不支持无符号数据类型(如,UINT)。比较操作的结果会影响逻辑运算结果(RLO) 和状态位 CC 1 与 CC 0。如果满足比较条件,RLO 将置位为信号状态“1”。如果不满足比较条件,RLO将置位为信号状态“0”。 下表列出了不同比较函数对 RLO 的影响:状态位 CC 1 和 CC 0的设置取决于比较过程中两个值的关系。 执行比较函数后,累加器 1 和 2 的内容保持不变。执行比较函数后,可以使用赋值函数和跳转函数评估逻辑运算结果。? D: 比较 32 位整数 (S7-1500) 说明 使用“比较 32 位整数”指令,将累加器 2(ACCU 2) 中的内容与累加器 1 (ACCU 1) 中的内 容进行比较。将累加器 1 和 2 的内容解释为 32 位整数(DINT)。该指令根据指定的比较函数 进行比较。 说明 不支持无符号数据类型(如,UDINT)。比较浮点数 (S7-1500) 说明使用“比较浮点数”指令,将累加器 2 (ACCU 2) 中的内容与累加器 1 (ACCU 1) 中的内容进 行比较。 将累加器 1 和2 的内容解释为浮点数。 要进行比较,累加器 1 和 2 必须包含有效 的浮点数。 该指令根据指定的比较函数进行比较。下表列出了可用的比较函数及其含义: 比较函数 含义 ==R 等于(浮点数) <>R 不等于(浮点数) >R大于(浮点数)=R 大于等于(浮点数) <=R 小于等于(浮点数) 比较操作的结果会影响逻辑运算结果 (RLO) 和状态位 CC1 与 CC 0。如果满足比较条件,RLO 将置位为信号状态“1”。 如果不满足比较条件,RLO 将复位为信号状态“0”。下表列出了不同比较函数对 RLO 的影响:状态位 CC 1 和 CC 0 的设置取决于比较过程中两个值的关系。 说明在比较无效浮点数的过程中,CPU 将逻辑运算结果置位为“0”,并将状态位 CC 0、CC 1、OV 和 OS 置位为“1”。执行比较函数后,累加器 1 和 2 的内容保持不变。 执行比较函数后,可以使用赋值函数和 跳转函数评估逻辑运算结果。数学函数(S7-1500) 整数 (S7-1500) +I: 加整数(16 位) (S7-1500) 说明 使用“加整数(16位)”指令将累加器 1 和 2 低字中的值相加。该指令将这些值解释为 16 位整数。 该指令将和值保存在累加器 1 的低字中,累加器1 中的高字保持不变。 指令执行之后,状态位 CC 0 和 CC 1 将指示合计值为负数、零或正数。如果该值超出了所允许的数值范围,则将状态位 OV 和 OS 置位为“1”。 执行该指令之后,累加器 2 的内容保持不变。减整数(16 位)(S7-1500) 说明 使用“减整数(16 位)”指令从累加器 2 低字的值中减去累加器 1 低字的值。该指令将累 加器 1 和 2的值解释为 16 位整数。 该指令将差值保存在累加器 1 的低字中,累加器 1 中的高字保持不变。 指令执行之后,状态位 CC 0 和CC 1 将指示差值为负数、零或正数。如果该值超出了所允许 的数值范围,则将状态位 OV 和 OS 置位为“1”。执行该指令之后,累加器 2 的内容保持不变。乘整数(16 位) (S7-1500) 说明 使用“乘整数(16 位)”指令将累加器 1和 2 的低字中的值相乘。该指令将这些值解释为 16 位整数。 该指令将累加器 1 中的乘积保存为 32 位整数(DINT)。指令执行之后,状态位 CC 0 和 CC 1 将指示乘积为负数、零或正数。如果该值超出了所允许 的数值范围,则将状态位OV 和 OS 置位为“1”。 执行该指令之后,累加器 2 的内容保持不变。除整数(16 位) (S7-1500) 说明使用“除整数(16 位)”指令将累加器 2 低字的内容除以累加器 1 低字的内容。该指令将 这两个累加器的值解释为 16 位整数。该指令有两个结果:除法运算的商和余数。商是除法运算的整数结果。该指令将结果值保存 在累加器 1的低字中,该指令将除法运算的余数保存在累加器 1 中的高字中。如果被除数 为负数,则除法的余数也为负数。 指令执行之后,状态位 CC0 和 CC 1 将指示商为负数、零或正数。如果该值超出了所允许的 数值范围,则将状态位 OV 和 OS 置位为“1”。如果被零除,该指令会将零作为商,并且在任何情况下都将零作为余数。在这种情况下,状 态位 CC 0、CC 1、OV 和 OS都将置位为信号状态“1”。 执行该指令之后,累加器 2 的内容保持不变。加双整型数(32 位) (S7-1500) 说明使用“加双整型数(32 位)”指令将累加器 1 和 2 中的值相加。该指令将这些值解释为 32 位整数。该指令将和值保存在累加器 1中。 指令执行之后,状态位 CC 0 和 CC 1 将指示合计值为负数、零或正数。如果该值超出了所允 许的数值范围,则将状态位 OV和 OS 置位为“1”。 执行该指令之后,累加器 2 的内容保持不变。减双整型数(32 位) (S7-1500) 说明使用“减双整型数(32 位)”指令,从累加器 2 的值中减去累加器 1 的值。该指令将累加器 1 和 2 的值解释为 32位双整型数。该指令将减法运算的结果保存在累加器 1 中。 指令执行之后,状态位 CC 0 和 CC 1将指示差值为负数、零或正数。如果该值超出了所允许 的数值范围,则将状态位 OV 和 OS 置位为“1”。 执行该指令之后,累加器 2的内容保持不变。乘双整型数(32 位) (S7-1500) 说明 使用“乘双整型数(32 位)”指令将累加器 1 和 2中的值相乘。该指令将这些值解释为 32 位整数。该指令将乘积保存在累加器 1 中。 指令执行之后,状态位 CC 0 和 CC 1将指示乘积为负数、零或正数。如果该值超出了所允许 的数值范围,则将状态位 OV 和 OS 置位为“1”。 执行该指令之后,累加器 2的内容保持不变。除双整型数(32 位) (S7-1500) 说明 使用“除双整型数(32 位)”指令,将累加器 2 的值除以累加器 1的值。该指令将累加器 1 和 2 的值解释为 32 位双整型数。该指令将除法运算的结果(商)保存在累加器 1 中。指令执行之后,状态位 CC 0 和 CC 1 将指示商为负数、零或正数。如果该值超出了所允许的 数值范围,则将状态位 OV 和 OS置位为“1”。 如果被零除,则该指令会将零作为商。在这种情况下,状态位 CC 0、CC 1、OV 和 OS 都将置位为信号状态“1”。 执行该指令之后,累加器 2 的内容保持不变。加常数 (S7-1500) 说明使用“加常数”指令,将指定常数的值与累加器 1 中的内容相加。可以将常数值指定为 16 为 整型数或 32位双整形数。该指令将结果存储在累加器 1 中。加 16 位整数时,该指令仅影 响累加器 1 的低字。 要将 16 位整数作为 DINT数学函数进行加法运算,需要在常数前输入“L#”。“加常数”指令 允许使用负数。 该指令不影响任何状态位。INC:递增(S7-1500) 说明 使用指令“递增”,将递增累加器 1 中的值,增幅为指令参数所指定的值。指定值的范围在 0 到 255之间。仅递增累加器 1 中低字节中的值。高字节中的值不会进行传送。 无论逻辑运算结果以及状态位如何,CPU都会执行该指令。该指令既不影响逻辑运算结果也 不影响状态位。 累加器 2 的内容保持不变。如果参数值超出允许的值范围,将影响结果,但不会生成错误消息。