SIMATIC计数器 (S7-300, S7-400) S_CU:分配参数并加计数 (S7-300, S7-400) 说明可使用“分配参数并加计数”指令递增计数器值。如果输入 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”。 说明 避免在程序中的多个点使用同一计数器(可能出现计数错误)。“分配参数并加计数”指令需要使用前导逻辑运算进行边沿检测,并可置于程序段中间或结尾。 参数 下表列出了指令“分配参数并加计数”的参数:参数 声明 数据类型 存储区 说明 <计数器> InOut COUNTER C 指令中的计数器 计数器的数量取决于CPU。 CU Input BOOL I、Q、M、D、 L、T、C 加计数输入 S Input BOOL I、Q、M、D、 L、T、C用于预设置计数器的输入 PV Input WORD I、Q、M、D、 L、P 预置计数器值 。
如果输入“TagIn_1”的信号状态从“0”变为“1”(信号上升沿)且当前计数器值小于“999”,则计数器值加 1。输入 TagIn_2 的信号状态从“0”变为“1”时,计数器值将设置为参数“TagPresetValue”的值。当“TagIn_3”操作数的信号状态为“1”时,计数器值将复位为“0”。当前计数器值在操作数“TagValue_1”中为十六进制值,在操作数“TagValue_2”中为 BCD 编码 格式。只要当前计数器值不等于“0”,输出“TagOut”的信号状态便为“1”。S_CD:分配参数并减计数 (S7-300, S7-400)说明 可使用“分配参数并减计数”指令递减计数器值。如果输入 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”。 说明 避免在程序中的多个点使用同一计数器(可能出现计数错误)。“分配参数并减计数”指令需要使用前导逻辑运算进行边沿检测,并可置于程序段中间或结尾。 参数 下表列出了指令“分配参数并减计数”的参数:参数 声明 数据类型 存储区 说明 <计数器> InOut COUNTER C 指令中的计数器 计数器的数量取决于CPU。 CD Input BOOL I、Q、M、D、L 减计数输入 S Input BOOL I、Q、M、D、 L、T、C用于预设置计数器的输入 PV Input WORD I、Q、M、D、 L、P 预置计数器值(C#0 至 C#999) R InputBOOL I、Q、M、D、 L、T、C复位输入如果输入“TagIn_1”的信号状态从“0”变为“1”(信号上升沿)且当前计数器值大于“0”,则计数 器值减 1。输入TagIn_2 的信号状态从“0”变为“1”时,计数器值将设置为参数“TagPresetValue”的值。当“TagIn_3”操作数的信号状态为“1”时,计数器值将复位为“0”。当前计数器值在操作数“TagValue_1”中为十六进制值,在操作数“TagValue_2”中为 BCD 编码 格式。只要当前计数器值不等于“0”,输出“TagOut”的信号状态便为“1”。S_CUD:分配参数并进行加/减计数 (S7-300,S7-400) 说明 可以使用“分配参数并加/减计数”指令递增或递减计数器值。如果输入 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”。 说明 避免在程序中的多个点使用同一计数器(可能出现计数错误)。指令“分配参数并加/减计数”需要使用前导逻辑运算进行边沿检测,并可置于程序段中间 或结尾。 参数下表列出了指令“分配参数并加/减计数”的参数: 参数 声明 数据类型 存储区 说明 <计数器> InOut COUNTERC 指令中的计数器 计数器的数量取决于 CPU。 CU Input BOOL I、Q、M、D、 L、T、C 加计数输入 CDInput BOOL I、Q、M、D、 L、T、C 减计数输入。参数 声明 数据类型 存储区 说明 S Input BOOLI、Q、M、D、 L、T、C 用于预设置计数器的输入 PV Input WORD I、Q、M、D、 L、P 预置计数器值(C#0 至C#999) R Input BOOL I、Q、M、D、 L、T、C 复位输入 CV Output WORD、 S5TIME、DATEI、Q、M、D、 L、P 当前计数器值(十六进制) BCD Output WORD、 S5TIME、DATE I、Q、M、D、 L、P当前计数器值(BCD 编码) BOOL I、Q、M、D、L 计数器状态有关有效数据类型的更多信息,请参见“另请参见。如果输入“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”中为十六进制值,在操作数“TagValue_2”中为 BCD 编码 格式。只要当前计数器值不等于“0”,输出“TagOut”的信号状态便为“1”。SC:设置计数器值 (S7-300, S7-400) 说明可使用“设置计数器值”指令递增计数器值。当该指令的启动输入的逻辑运算结果 (RLO) 从“0”变为“1”时,执行该指令。如果已执行该指令,则计数器设置为指定的计数器值。指令“设置计数器值”需要使用前导逻辑运算进行边沿检测,并只能置于程序段的边沿上。 参数 下表列出了“设置计数器值”指令的参数: 参数声明 数据类型 存储区 说明 <操作数> Input BOOL I、Q、M、T、 C、D、L 启动输入 PV InputWORD I、Q、M、D、L 或常数 计数器中的值表示为 BCD 格式。 (C#0 到 C#999) <计数器>InOut/Input COUNTER C 预设的计数器。 有关有效数据类型的更多信息,请参见“另请参见”。CU:加计数(S7-300, S7-400) 说明 可以使用指令“加计数”,在启动输入的上升沿时,使指定计数器的值加“1”。计数器值达到上限“999”后,停止递增。达到上限后,即使出现信号上升沿,计数器值也不再递增。指令“加计数”需要使用前导逻辑运算进行边沿检测,并只能置于程序段的边沿上。 参数 下表列出了“加计数”指令的参数: 参数 声明数据类型 存储区 说明 <操作数> Input BOOL I、Q、M、T、 C、D、L 启动输入 <计数器>InOut/Input COUNTER C 值递增的计数器。 有关有效数据类型的更多信息,请参见“另请参见”。