传统(S7-1500) S_CU:分配参数并加计数 (S7-1500) 说明 可使用“分配参数并加计数”指令递增计数器值。如果输入 CU的信号状态从“0”变为“1”(信 号上升沿),则当前计数器值将加 1。当前计数器值在输出 CV 处输出十六进制值,在输出 CV_BCD处输出 BCD 编码的值。计数器值达到上限“999”后,停止递增。达到上限后,出现信号上升沿,计数器值也不再递增。 当输入 S的信号状态从“0”变为“1”时,将计数器值设置为参数 PV 的值。如果已设置计数器, 并且输入 CU 处的 RLO为“1”,则没有检测到信号沿的变化,计数器也会在下一扫描周 期相应地进行计数。 当输入 R的信号状态变为“1”时,将计数器值置位为“0”。只要 R 输入的信号状态为“1”,输入 CU 和 S信号状态的处理就不会影响该计数器值。 如果计数器值大于 0,输出 Q 的信号状态就为“1”。如果计数器值等于 0,则输出 Q 的信号状态为“0”。 说明 只需在程序中的某一位置处使用计数器,即可避免计数错误的风险。“分配参数并加计数”指令需要对边沿评估进行前导逻辑运算,可以放在程序段中或程序段的结尾。如果输入“TagIn_1”的信号状态从“0”变为“1”(信号上升沿)且当前计数器值小于“999”,则计 数器值加1。当输入“TagIn_2”的信号状态从“0”变为“1”时,将该计数器的值设置为操作数“TagPresetValue”的值。当“TagIn_3”操作数的信号状态为“1”时,计数器值复位为“0”。当前计数器值以十六进制值的形式保存在操作数“TagValue_1”中,以 BCD 编码的形式保存在 操作数“TagValue_2”中。只要当前计数器值不等于“0”,输出“TagOut”的信号状态便为“1”。 有关以上示例中编程代码的更多信息,请参见“SampleLibrary for Instructions
S_CD:分配参数并减计数(S7-1500) 说明 可使用“分配参数并减计数”指令递减计数器值。如果输入 CD 的信号状态从“0”变为“1”(信号上升沿),则计数器值减 1。当前计数值在输出 CV 处输出为十六进制值,在输出 CV_BCD 处输出为 BCD编码的值。计数器值达到下限 0 时,将停止递减。如果达到下限值,出 现信号上升沿,计数器值也不再递减。 当输入 S的信号状态从“0”变为“1”时,将计数器值设置为参数 PV 的值。如果已设置计数器, 并且输入 CD 处的 RLO为“1”,则没有检测到信号沿的变化,计数器也会在下一扫描周 期相应地进行计数。 当输入 R的信号状态变为“1”时,将计数器值置位为“0”。只要 R 输入的信号状态为“1”,输入 CD 和 S信号状态的处理就不会影响该计数器值。 如果计数器值大于 0,输出 Q 的信号状态就为“1”。如果计数器值等于 0,则输出 Q 的信号状态为“0”。 说明 只需在程序中的某一位置处使用计数器,即可避免计数错误的风险。“分配参数并减计数”指令需要对边沿评估进行前导逻辑运算,可以放在程序段中或程序段的结尾。如果输入“TagIn_1”的信号状态从“0”变为“1”(信号上升沿)且当前计数器值大于“0”,则计数 器值减1。当输入“TagIn_2”的信号状态从“0”变为“1”时,将该计数器的值设置为操作数“TagPresetValue”的值。当“TagIn_3”操作数的信号状态为“1”时,计数器值复位为“0”。当前计数器值以十六进制值的形式保存在操作数“TagValue_1”中,以 BCD 编码的形式保存在 操作数“TagValue_2”中。只要当前计数器值不等于“0”,输出“TagOut”的信号状态便为“1”。 有关以上示例中编程代码的更多信息,请参见“SampleLibrary for Instructions
S_CUD:分配参数并加/减计数(S7-1500) 说明 可以使用“分配参数并加/减计数”指令递增或递减计数器值。如果输入 CU 的信号状态从“0”变为“1”(信号上升沿),则当前计数器值将加 1。如果输入 CD 的信号状态从“0”变为“1”(信 号上升沿),则计数器值减1。当前计数器值在输出 CV 处输出十六进制值,在输出 CV_BCD 处输出 BCD 编码的值。如果在一个程序周期内输入 CU 和CD 都出现信号上升沿,则计数器 值将保持不变。 计数器值达到上限“999”后,停止增加。如果达到上限值,出现信号上升沿,计数器值也不再递增。达到下限值“0”时,计数器值不再递减。 当输入 S 的信号状态从“0”变为“1”时,将计数器值设置为参数 PV的值。如果计数器已置位, 并且输入 CU 和 CD 处的 RLO 为“1”,那么没有检测到信号沿变化,计数器也会在下一个扫描周期内相应地进行计数。 当输入 R 的信号状态变为“1”时,将计数器值置位为“0”。只要 R 输入的信号状态为“1”,输入CU、CD 和 S 信号状态的处理就不会影响该计数器值。 如果计数器值大于 0,输出 Q 的信号状态就为“1”。如果计数器值等于0,则输出 Q 的信号 状态为“0”。 说明 只需在程序中的某一位置处使用计数器,即可避免计数错误的风险。“分配参数并加/减计数”指令需要对边沿评估进行前导逻辑运算,可以放在程序段中或程序段的结尾。如果输入“TagIn_1"”或“TagIn_2”的信号状态从“0”变为“1”(上升沿),则执行“分配参数并加/减计数”指令。输入“TagIn_1”出现信号上升沿且当前计数器值小于“999”时,计数器值加“1”。输入“TagIn_2”出现信号上升沿且当前计数器值大于“0”时,计数器值减 1。当输入“TagIn_3”的信号状态从“0”变为“1”时,将该计数器的值设置为操作数“TagPresetValue”的值。当“TagIn_4”操作数的信号状态为“1”时,计数器值复位为“0”。当前计数器值以十六进制值的形式保存在操作数“TagValue_1”中,以 BCD 编码的形式保存在 操作数“TagValue_2”中。只要当前计数器值不等于“0”,输出“TagOut”的信号状态便为“1”。( SC ):设置计数器值 (S7-1500) 说明可以使用“设置计数器值”指令设置计数器的值。当输入的逻辑运算结果 (RLO) 从“0”变为“1”时,执行该指令。执行指令后,将计数器设置为指定计数器值。 在该指令下方的操作数占位符 <操作数 1>处,指定计数器的预设持续时间,在指令上方的 < 操作数 2> 中指定计数器。指令“设置计数器值”需要使用前导逻辑运算进行边沿检测,并只能置于程序段的右边沿上。-( CU ):加计数 (S7-1500) 说明如果在逻辑运算结果 (RLO) 中出现信号上升沿,则可以通过“加计数”指令将指定计数器的值递增“1”。计数器值达到上限“999”后,停止增加。达到上限后,出现信号上升沿,计 数器值也不再递增。“加计数”指令需要前导逻辑运算进行边沿评估,只能放在程序段的右侧。-( CD ):减计数 (S7-1500) 说明如果在逻辑运算结果 (RLO) 中出现信号上升沿,则可以通过“减计数”指令将指定计数器的值递减“1”。计数器值达到下限“0”后,停止减少。达到下限值后,即时出现上升沿,计数器 值也不再递减。“减计数”指令需要前导逻辑运算进行边沿评估,只能放在程序段的右侧。比较操作 (S7-1200, S7-1500) CMP==:等于 (S7-1200, S7-1500) 说明 可以使用“等于”指令判断第一个比较值(<操作数1>)是否等于第二个比较值(<操作数 2>)。 如果满足比较条件,则指令返回逻辑运算结果(RLO)“1”。如果不满足比较条件,则该指令返 回 RLO“0”。该指令的 RLO 通过以下方式与整个程序段中的 RLO进行逻辑运算: • 串联比较指令时,将执行“与”运算。 •并联比较指令时,将进行“或”运算。在指令上方的操作数占位符中指定第一个比较值(<操作数 1>)。在指令下方的操作数占位符中指定第二个比较值(<操作数 2>)。 如果启用了 IEC 检查,则要比较的操作数必须属于同一数据类型。如果未启用IEC 检查,则 操作数的宽度必须相同。 比较浮点数 如果要比较数据类型 REAL 或 LREAL,则可使用指令“CMP==:等于”。建议使用指令 “IN_RANGE:值在范围内”。比较浮点数时,待比较的操作数必须具有相同的数据类型,而无需考虑具体的“IEC 检查”(IEC Check) 设置。对于无效运算的运算结果(如,-1 的平方根),这些无效浮点数 (NaN) 的特定位模式不可 比较。即,如果一个操作数的值为NaN,则指令“CMP ==:等于”的结果将为 FALSE。 比较字符串在比较字符串时,通过字符的代码比较各字符(例如“a”大于“A”)。从左到右执行比较。第一个不同的字符决定比较结果。也可以对字符串中的各个字符进行比较。在操作数名称旁的方括号内,指定了待比较的字符位数。例如,“MyString[2]”与“MyString”字符串的第二个字符进行比较。 说明执行“inactive”指令,仍会显示状态 请注意以下要求: • 执行指令“CMP ==:等于”(数据类型STRING、WSTRING 或 VARIANT)之前,系统将查询程 序段中的条件(如,常开触点的值)。 • “开启监视”已启用。 •该条件的新结果将程序段复位为 FALSE。指令“CMP ==:等于”将取消激活。 结果: 对于指令“CMP ==:等于”(数据类型STRING、WSTRING 或 VARIANT),程序段中仍然显 示之前的状态。仅当关闭“开启监视”功能后再重新启用或移动到其它程序段中时,指令“CMP ==:等 于”(数据类型 STRING、WSTRING 或VARIANT)的状态才会正确显示。指令“CMP ==:等 于”将在程序段中灰显为取消激活状态。