S_CU:分配参数并加计数 |
说明
可使用“分配参数并加计数”指令递增计数器值。如果输入 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/Input |
COUNTER |
C |
指令中的计数器 计数器的数量取决于 CPU。 |
|
CU |
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 或常量 |
预置计数器值(C#0 至 C#999) |
|
R |
Input |
BOOL |
I、Q、M、D、L、T、C 或常量 |
复位输入 |
|
BI |
Output |
WORD、S5TIME、DATE |
I、Q、M、D、L |
当前计数器值(十六进制) |
|
BCD |
Output |
WORD、S5TIME、DATE |
I、Q、M、D、L |
当前计数器值(BCD 编码) |
|
Q |
Output |
BOOL |
I、Q、M、D、L |
计数器状态 |
有关有效数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:

如果输入“TagIn_1”的信号状态从“0”变为“1”(信号上升沿)且当前计数器值小于“999”,则计数器值加 1。当输入“TagIn_2”的信号状态从“0”变为“1”时,将该计数器的值设置为操作数“TagPresetValue”的值。当“TagIn_3”操作数的信号状态为“1”时,计数器值复位为“0”。
当前计数器值以十六进制值的形式保存在操作数“TagValue_1”中,以 BCD 编码的形式保存在操作数“TagValue_2”中。
只要当前计数器值不等于“0”,输出“TagOut”的信号状态便为“1”。
|
S_CD:分配参数并减计数 |
说明
可使用“分配参数并减计数”指令递减计数器值。如果输入 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/Input |
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 或常数 |
预置计数器值(C#0 至 C#999) |
|
R |
Input |
BOOL |
I、Q、M、D、L、T、C 或常数 |
复位输入 |
|
BI |
Output |
WORD、S5TIME、DATE |
I、Q、M、D、L |
当前计数器值(十六进制) |
|
BCD |
Output |
WORD、S5TIME、DATE |
I、Q、M、D、L |
当前计数器值(BCD 编码) |
|
Q |
Output |
BOOL |
I、Q、M、D、L |
计数器状态 |
有关有效数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:

如果输入“TagIn_1”的信号状态从“0”变为“1”(信号上升沿)且当前计数器值大于“0”,则计数器值减 1。当输入“TagIn_2”的信号状态从“0”变为“1”时,将该计数器的值设置为操作数“TagPresetValue”的值。当“TagIn_3”操作数的信号状态为“1”时,计数器值复位为“0”。
当前计数器值以十六进制值的形式保存在操作数“TagValue_1”中,以 BCD 编码的形式保存在操作数“TagValue_2”中。
只要当前计数器值不等于“0”,输出“TagOut”的信号状态便为“1”。
|
S_CUD:分配参数并加/减计数 |
说明
可以使用“分配参数并加/减计数”指令递增或递减计数器值。如果输入 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/Input |
COUNTER |
C |
指令中的计数器 计数器的数量取决于 CPU。 |
|
CU |
Input |
BOOL |
I、Q、M、D、L 或常量 |
加计数输入 |
|
CD |
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 或常量 |
预置计数器值(C#0 至 C#999) |
|
R |
Input |
BOOL |
I、Q、M、D、L、T、C 或常量 |
复位输入 |
|
BI |
Output |
WORD、S5TIME、DATE |
I、Q、M、D、L |
当前计数器值(十六进制) |
|
BCD |
Output |
WORD、S5TIME、DATE |
I、Q、M、D、L |
当前计数器值(BCD 编码) |
|
Q |
Output |
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”中,以 BCD 编码的形式保存在操作数“TagValue_2”中。
只要当前计数器值不等于“0”,输出“TagOut”的信号状态便为“1”。
|
---( SC ):设置计数器值 |
说明
可以使用“设置计数器值”指令设置计数器的值。当输入的逻辑运算结果 (RLO) 从“0”变为“1”时,执行该指令。执行指令后,将计数器设置为指定计数器值。
在该指令下方的操作数占位符 <操作数 1> 处,指定计数器的预设持续时间,在指令上方的 <操作数 2> 中指定计数器。
指令“设置计数器值”需要使用前导逻辑运算进行边沿检测,并只能置于程序段的右边沿上。
参数
下表列出了“设置计数器值”指令的参数:
|
参数 |
声明 |
数据类型 |
存储区 |
说明 |
|
<操作数 1> |
Input |
WORD |
I、Q、M、D、L 或常数 |
计数器中的值表示为 BCD 格式。 (C#0 到 C#999) |
|
<操作数 2> |
InOut/Input |
COUNTER |
C |
预设的计数器。 |
有关有效数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:

操作数“TagIn”的信号状态从“0”变为“1”时,计数器“Counter_1”将从值“100”开始。
|
---( CU ):加计数 |
说明
如果在逻辑运算结果 (RLO) 中出现信号上升沿,则可以通过“加计数”指令将指定计数器的值递增“1”。计数器值达到上限“999”后,停止增加。达到上限后,即使出现信号上升沿,计数器值也不再递增。
“加计数”指令需要前导逻辑运算进行边沿评估,而且只能放在程序段的右侧。
参数
下表列出了“加计数”指令的参数:
|
参数 |
声明 |
数据类型 |
存储区 |
说明 |
|
<计数器> |
InOut/Input |
COUNTER |
C |
值递增的计数器。 |
有关有效数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:

当操作数“TagIn_1”的信号状态从“0”变为“1”(信号上升沿)时,计数器“Counter_1”将预设为值“100”。
操作数“TagIn_2”的信号状态从“0”变为“1”时,计数器“Counter_1”的值加 1。
操作数“TagIn_3”的信号状态为“1”时,计数器“Counter_1”的值被预设为“0”。
|
---( CD ):减计数 |
说明
如果在逻辑运算结果 (RLO) 中出现信号上升沿,则可以通过“减计数”指令将指定计数器的值递减“1”。计数器值达到下限“0”后,停止减少。达到下限值后,即时出现上升沿,计数器值也不再递减。
“减计数”指令需要前导逻辑运算进行边沿评估,而且只能放在程序段的右侧。
参数
下表列出了“减计数”指令的参数:
|
参数 |
声明 |
数据类型 |
存储区 |
说明 |
|
<计数器> |
InOut/Input |
COUNTER |
C |
值递减的计数器。 |
有关有效数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:

当操作数“TagIn_1”的信号状态从“0”变为“1”(信号上升沿)时,计数器“Counter_1”将预设为值“100”。
操作数“TagIn_2”的信号状态从“0”变为“1”时,计数器“Counter_1”的值减 1。
操作数“TagIn_3”的信号状态为“1”时,计数器“Counter_1”的值被预设为“0”。