前言:
现时小伙伴们对“c语言计数器”可能比较珍视,朋友们都想要了解一些“c语言计数器”的相关资讯。那么小编在网络上搜集了一些对于“c语言计数器””的相关知识,希望看官们能喜欢,小伙伴们一起来了解一下吧!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”。
标签: #c语言计数器