[西门子] 使用计数器指令来统计设备运行时间案例

[复制链接]
查看269 | 回复0 | 2024-6-26 09:16:43 | 显示全部楼层 |阅读模式
>导读:在项目程序中,可以使用西门子S7-1200 PLC中的计数器指令对内部程序事件和外部过程事件进行计数,每个计数器的计数器数据都使用数据块进行存储。如图1所示,可以使用计数器指令来实现瓶体的计数,但是计数器不仅仅可以实现计数的功能,合理利用的话还可以实现计时的功能。那么本文就来探讨一下计数器指令的使用注意事项及技巧!

图1

一、控制要求
1.当设备启动之后,统计设备的运行时间,时间的格式为“天-时-分-秒”。
二、基础知识
1.1200PLC计数器指令
S7-1200PLC计数器分为三大类:加计数、减计数、加减计数指令

2.西门子S7-1200计数值的数值范围取决于所选的数据类型(如图2所示)。如果计数值是无符号整型数,则可以减计数到零或加计数到设计范围的极限值。如果计数值是有符号整数,则可以减计数到负整数限值或加计数到正整数限值。用户程序中可以使用的计数器数量只受CPU存储器容量的限制。换句话说,1200PLC的计数器指令不像S7-200SMART PLC一样有个数规定,只要CPU的容量够大,可以有无数个计数器指令。

3.为了说明计数器指令,可以用不同的数据类型存储最大的数据,如下图所示。这样的话,就可以根据需求来选择不同的数据类型。

4.由于每个计数器指令都会分配一个背景数据块来存储计数器的数据,这样的话计数器指令用的多的话,就会分配很多背景数据块,就很不方便我们编程人员管理。所以可以建立一个全局DB块来存储多个计数器的数据,如图所示。注意:数据类型要选择正确

5. 如何编写自复位计数器并产生脉冲
首先给出两段错误的程序,如图3和图4所示

图3

错误原因:当计数值达到10,首先置位"数据块_2".QU,紧接着"数据块_2".QU作为计数器R的输入,使得计数值清零,同时复位"数据块_2".QU,在下一网络段"DB77".Static_15依然是False,无法实现脉冲。

图4

错误原因:计数值达到10,"数据块_2".CV=10,紧接着"数据块_2".CV与"数据块_2".PV的比较结果(True)作为计数器R的输入,使得计数值清零,同时复位"数据块_2".QU,在下一网络段"DB77".Static_15依然是False,无法实现脉冲。
正确写法:

三、程序设计
1.组态系统时钟

2.新建DB块,存储计数器数据

3.程序编写
1)程序段1是大家最熟悉的“起保停程序”

2)程序段2是利用系统时钟统计秒钟,当计数器“C7”到达了60秒后,“M100.0”接通产生一个沿脉冲,同时复位“C7”,于此同时分钟加1;当分钟到达60后,小时加1;当小时达到24小时后,天数加1。这样的话,我们就可以利用计数器的自复位的功能产生沿脉冲实现数据的累计。





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则