西门子S7-1200基本指令第三篇(计数器操作)

CTU:加计数

说明

可以使用“加计数”指令,递增输出 CV 的值。如果输入 CU 的信号状态从“0”变为“1”(信号上升沿),则执行该指令,同时输出 CV 的当前计数器值加 1。每检测到一个信号上升沿,计数器值就会递增,直到达到输出 CV 中所指定数据类型的上限。达到上限时,输入 CU 的信号状态将不再影响该指令。

可以查询 Q 输出中的计数器状态。输出 Q 的信号状态由参数 PV 决定。如果当前计数器值大于或等于参数 PV 的值,则将输出 Q 的信号状态置位为“1”。在其它任何情况下,输出 Q 的信号状态均为“0”。

输入 R 的信号状态变为“1”时,输出 CV 的值被复位为“0”。只要输入 R 的信号状态仍为“1”,输入 CU 的信号状态就不会影响该指令。

说明

只需在程序中的某一位置处使用计数器,即可避免计数错误的风险。

每次调用“加计数”指令,都会为其分配一个 IEC 计数器用于存储指令数据。IEC 计数器是一种具有以下某种数据类型的结构:

对于 S7-1200 CPU

系统数据类型 IEC_<Counter> 的数据块(共享 DB)

局部变量

  • IEC_SCOUNTER / IEC_USCOUNTER

  • IEC_COUNTER / IEC_UCOUNTER

  • IEC_DCOUNTER / IEC_UDCOUNTER

  • CTU_SINT / CTU_USINT

  • CTU_INT / CTU_UINT

  • CTU_DINT / CTU_UDINT

  • IEC_SCOUNTER / IEC_USCOUNTER

  • IEC_COUNTER / IEC_UCOUNTER

  • IEC_DCOUNTER / IEC_UDCOUNTER

执行“加计数”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。

参数

下表列出了“加计数”指令的参数:

参数

声明

数据类型

存储区

说明

S7-1200

S7-1500

CU

Input

BOOL

I、Q、M、D、L 或常数

I、Q、M、D、L 或常数

计数输入

R

Input

BOOL

I、Q、M、D、L、P 或常数

I、Q、M、T、C、D、L、P 或常数

复位输入

PV

Input

整数

I、Q、M、D、L、P 或常数

I、Q、M、D、L、P 或常数

置位输出 Q 的值。

Q

Output

BOOL

I、Q、M、D、L

I、Q、M、D、L

计数器状态

CV

Output

整数、CHAR、WCHAR、DATE

I、Q、M、D、L、P

I、Q、M、D、L、P

当前计数器值

可以从指令框的“???”下拉列表中选择该指令的数据类型。

示例

以下示例说明了该指令的工作原理:

当“TagIn_1”操作数的信号状态从“0”变为“1”时,将执行“加计数”指令,同时“Tag_CV”操作数的当前计数器值加 1。每检测到一个额外的信号上升沿,计数器值都会递增,直至达到该数据类型的上限 (INT = 32767)。

PV 参数的值作为确定“TagOut”输出的限制。只要当前计数器值大于或等于操作数“Tag_PV”的值,输出“TagOut”的信号状态就为“1”。在其它任何情况下,输出“TagOut”的信号状态均为“0”。

CTD:减计数

说明

可以使用“减计数”指令,递减输出 CV 的值。如果输入 CD 的信号状态从“0”变为“1”(信号上升沿),则执行该指令,同时输出 CV 的当前计数器值减 1。每检测到一个信号上升沿,计数器值就会递减 1,直到达到指定数据类型的下限为止。达到下限时,输入 CD 的信号状态将不再影响该指令。

可以查询 Q 输出中的计数器状态。如果当前计数器值小于或等于“0”,则 Q 输出的信号状态将置位为“1”。在其它任何情况下,输出 Q 的信号状态均为“0”。

输入 LD 的信号状态变为“1”时,将输出 CV 的值设置为参数 PV 的值。只要输入 LD 的信号状态仍为“1”,输入 CD 的信号状态就不会影响该指令。

说明

只需在程序中的某一位置处使用计数器,即可避免计数错误的风险。

每次调用“减计数”指令,都会为其分配一个 IEC 计数器用于存储指令数据。IEC 计数器是一种具有以下某种数据类型的结构:

对于 S7-1200 CPU

系统数据类型 IEC_<Counter> 的数据块(共享 DB)

局部变量

  • IEC_SCOUNTER / IEC_USCOUNTER

  • IEC_COUNTER / IEC_UCOUNTER

  • IEC_DCOUNTER / IEC_UDCOUNTER

  • CTD_SINT / CTD_USINT

  • CTD_INT / CTD_UINT

  • CTD_DINT / CTD_UDINT

  • IEC_SCOUNTER / IEC_USCOUNTER

  • IEC_COUNTER / IEC_UCOUNTER

  • IEC_DCOUNTER / IEC_UDCOUNTER

可以按如下方式声明 IEC 计数器:

  • 系统数据类型 IEC_<Counter> 的数据块声明(例如,“MyIEC_COUNTER”)

  • 声明为块中“Static”部分的 CTD_<Data type> 或 IEC_<Counter> 类型的局部变量(例如 #MyIEC_COUNTER)

如果在单独的数据块中设置 IEC 计数器(单背景),则将默认使用“优化的块访问”(optimized block access) 创建背景数据块,并将各个变量定义为具有保持性。有关在背景数据块中设置保持性的更多信息,请参见“另请参见”。

如果在函数块中使用“优化的块访问”(optimized block access) 设置 IEC 计数器作为本地变量(多重背景),则其在块接口中定义为具有保持性。

执行“减计数”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。

参数

下表列出了“减计数”(Count down) 指令的参数:

参数

声明

数据类型

存储区

说明

S7-1200

S7-1500

CD

Input

BOOL

I、Q、M、D、L 或常数

I、Q、M、D、L 或常数

计数输入

LD

Input

BOOL

I、Q、M、D、L、P 或常数

I、Q、M、T、C、D、L、P 或常数

装载输入

PV

Input

整数

I、Q、M、D、L、P 或常数

I、Q、M、D、L、P 或常数

使用 LD = 1 置位输出 CV 的目标值。

Q

Output

BOOL

I、Q、M、D、L

I、Q、M、D、L

计数器状态

CV

Output

整数、CHAR、WCHAR、DATE

I、Q、M、D、L、P

I、Q、M、D、L、P

当前计数器值

可以从指令框的“???”下拉列表中选择该指令的数据类型。

示例

以下示例说明了该指令的工作原理:

当“TagIn_1”操作数的信号状态从“0”变为“1”时,执行该指令且“Tag_CV”输出的值减 1。每检测到一个信号上升沿,计数器值就会递减 1,直到达到所指定数据类型的下限 (INT = -32768)。

只要当前计数器值小于或等于 0,“TagOut”输出的信号状态就为“1”。在其它任何情况下,输出“TagOut”的信号状态均为“0”。

CTUD:加减计数

说明

可以使用“加减计数”指令,递增和递减输出 CV 的计数器值。如果输入 CU 的信号状态从“0”变为“1”(信号上升沿),则当前计数器值加 1 并存储在输出 CV 中。如果输入 CD 的信号状态从“0”变为“1”(信号上升沿),则输出 CV 的计数器值减 1。如果在一个程序周期内,输入 CU 和 CD 都出现信号上升沿,则输出 CV 的当前计数器值保持不变。

计数器值可以一直递增,直到其达到输出 CV 处指定数据类型的上限。达到上限后,即使出现信号上升沿,计数器值也不再递增。达到指定数据类型的下限后,计数器值便不再递减。

输入 LD 的信号状态变为“1”时,将输出 CV 的计数器值置位为参数 PV 的值。只要输入 LD 的信号状态仍为“1”,输入 CU 和 CD 的信号状态就不会影响该指令。

当输入 R 的信号状态变为“1”时,将计数器值置位为“0”。只要输入 R 的信号状态仍为“1”,输入 CU、CD 和 LD 信号状态的改变就不会影响“加减计数”指令。

可以在 QU 输出中查询加计数器的状态。如果当前计数器值大于或等于参数 PV 的值,则将输出 QU 的信号状态置位为“1”。在其它任何情况下,输出 QU 的信号状态均为“0”。

可以在 QD 输出中查询减计数器的状态。如果当前计数器值小于或等于“0”,则 QD 输出的信号状态将置位为“1”。在其它任何情况下,输出 QD 的信号状态均为“0”。

说明

只需在程序中的某一位置处使用计数器,即可避免计数错误的风险。

每次调用“加减计数”指令,都会为其分配一个 IEC 计数器用来存储指令数据。IEC 计数器是一种具有以下某种数据类型的结构:

对于 S7-1200 CPU

系统数据类型 IEC_<Counter> 的数据块(共享 DB)

局部变量

  • IEC_SCOUNTER / IEC_USCOUNTER

  • IEC_COUNTER / IEC_UCOUNTER

  • IEC_DCOUNTER / IEC_UDCOUNTER

  • CTUD_SINT / CTUD_USINT

  • CTUD_INT / CTUD_UINT

  • CTUD_DINT / CTUD_UDINT

  • IEC_SCOUNTER / IEC_USCOUNTER

  • IEC_COUNTER / IEC_UCOUNTER

  • IEC_DCOUNTER / IEC_UDCOUNTER

可以按如下方式声明 IEC 计数器:

  • 系统数据类型 IEC_<Counter> 的数据块声明(例如,“MyIEC_COUNTER”)

  • 声明为块中“Static”部分的 CTUD_<Data type> 或 IEC_<Counter> 类型的局部变量(例如 #MyIEC_COUNTER)

如果在单独的数据块中设置 IEC 计数器(单背景),则将默认使用“优化的块访问”(optimized block access) 创建背景数据块,并将各个变量定义为具有保持性。有关在背景数据块中设置保持性的更多信息,请参见“另请参见”。

如果在函数块中使用“优化的块访问”(optimized block access) 设置 IEC 计数器作为本地变量(多重背景),则其在块接口中定义为具有保持性。

执行“加减计数”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。

参数

下表列出了“加减计数”(Count up and down) 指令的参数:

参数

声明

数据类型

存储区

说明

S7-1200

S7-1500

CU

Input

BOOL

I、Q、M、D、L 或常数

I、Q、M、D、L 或常数

加计数输入

CD

Input

BOOL

I、Q、M、D、L 或常数

I、Q、M、D、L 或常数

减计数输入

R

Input

BOOL

I、Q、M、D、L、P 或常数

I、Q、M、T、C、D、L、P 或常数

复位输入

LD

Input

BOOL

I、Q、M、D、L、P 或常数

I、Q、M、T、C、D、L、P 或常数

装载输入

PV

Input

整数

I、Q、M、D、L、P 或常数

I、Q、M、D、L、P 或常数

输出 QU 被设置的值/LD = 1 的情况下,输出 CV 被设置的值。

QU

Output

BOOL

I、Q、M、D、L

I、Q、M、D、L

加计数器的状态

QD

Output

BOOL

I、Q、M、D、L

I、Q、M、D、L

减计数器的状态

CV

Output

整数、CHAR、WCHAR、DATE

I、Q、M、D、L、P

I、Q、M、D、L、P

当前计数器值

可以从指令框的“???”下拉列表中选择该指令的数据类型。

示例

以下示例说明了该指令的工作原理:

如果输入“TagIn_1”或“TagIn_2”的信号状态从“0”变为“1”(信号上升沿),则执行“加减计数”指令。输入“TagIn_1”出现信号上升沿时,当前计数器值加 1 并存储在输出“Tag_CV”中。输入“TagIn_2”出现信号上升沿时,计数器值减 1 并存储在输出“Tag_CV”中。输入 CU 出现信号上升沿时,计数器值将递增,直至其达到上限值 32767。输入 CD 出现信号上升沿时,计数器值将递减,直至其达到下限 (INT = -32768)。

只要当前计数器值大于或等于“Tag_PV”输入的值,“TagOut”输出的信号状态就为“1”。在其它任何情况下,输出“TagOut”的信号状态均为“0”。

只要当前计数器值小于或等于 0,“TagOut_QD”输出的信号状态就为“1”。在其它任何情况下,输出“TagOut_QD”的信号状态均为“0”。

  • 58
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
西门子S7-1200 SCL编程指令手册.pdf》是一本详细介绍了西门子S7-1200系列PLC控制器的SCL(Structured Control Language,结构化控制语言)编程指令的手册。SCL是一种高级编程语言,可以在S7-1200 PLC中实现复杂的控制算法和逻辑。该手册包含了SCL编程指令的详细说明和使用方法,对于PLC编程人员来说是非常宝贵的参考资料。 手册的内容主要分为几个部分:基本概念介绍、语法规则、数据类型、基本指令、控制指令等。首先,手册介绍了SCL编程的基本概念,如变量、数据类型、运算符等,帮助读者更好地理解SCL编程的基本原理。接着,手册详细说明了SCL的语法规则,包括变量声明、循环语句、条件语句等,让读者了解如何正确编写SCL程序。 手册还列举了SCL编程中常用的数据类型,如整数、浮点数、字符串等,并提供了相应数据类型的定义和使用方法。此外,手册还介绍了一些基本指令,例如赋值指令、运算指令输入输出指令等,读者可以通过这些指令完成基本的算术运算和数据处理。此外,手册还介绍了一些常用的控制指令,如循环控制、条件控制等,帮助读者更好地掌握SCL编程。 总之,《西门子S7-1200 SCL编程指令手册.pdf》对于想要学习和掌握S7-1200 PLC的SCL编程的人来说是一本非常有价值的资料。通过学习该手册,读者可以了解SCL编程的基本概念和语法规则,掌握常用的编程指令,从而编写出高效、可靠的PLC控制程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值