龙空技术网

S7-1500PLC梯形图(LAD)基础指令——SIMATIC计数器

Look自动化 226

前言:

现时小伙伴们对“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语言计数器