西门子CPU412-1代理商西门子代理商 西门子总代理西门子CPU412-1代理商西门子代理商 西门子总代理
西门子CPU412-1代理商西门子代理商 西门子总代理
西门子S7-1200 PLC如何使用计数器做圆盘控制一、任务目标该任务是关于计数器指令应用案例。西门子S7-1200 PLC的计数器指令主要完成计数功能,可以实现加法和减法计数。
本任务要求读者掌握以下几个内容:
1.加计数指令的使用
2.减计数指令的使用
3.加减计数指令的使用
二、任务描述按下启动按钮,圆盘正向旋转,圆盘每转一周发出一个检测信号,当圆盘正向旋转2圈后,圆盘停止旋转。在圆盘静止5秒后,圆盘反向旋转,当圆盘反向旋转2圈后,圆盘停止旋转。在圆盘静止5秒后,圆盘再次正向旋转,如此重复。任意时刻按下停止按钮,圆盘立即停止。当再次启动圆盘时,圆盘按照停止前的方向旋转。
三、相关知识本案例主要使用的是位逻辑及计数器指令,位逻辑指令在其他篇幅已有介绍,在此不赘述。此处为读者介绍计数器指令的相关知识。
1.加计数器指令
CTU:加计数指令,当参数 CU 的值从 0 变为 1 时,CTU 计数器会使计数值加 1。加计数器(CTU)指令相关参数如下表
LAD
参数
数据类型
说明
CU
BOOL
计数器输入
R
BOOL
复位,优先于CU端
PV
Int
预设值
Q
BOOL
计数器的状态,CV>=PV,Q输出1,CV<PV,Q输出0
CV
整数、Char、
WChar、Date
当前计数值
从指令框的“<???>”下拉列表中选择该指令的数据类型。
调用计数器指令时,需要生成保存计数器数据的背景数据块。CTU计数器的参数CU值从0变为1,CTU使计数值加1。如果参数CV(当前计数值)的值大于或等于PV(预设计数值)的值,则计数器输出参数Q=1。如果复位参数R的值从0变为1,则当前计数值复位为0。计数器指令,如图2-4-1所示。
图2-4-1 加计数指令示例
2.减计数器指令
CTD:减计数指令,当参数 CD 的值从 0 变为 1 时,CTD 计数器会使计数值减 1。减计数器(CTD)指令相关参数如下表
LAD
参数
数据类型
说明
CD
BOOL
计数器输入
LD
BOOL
装载输入
PV
Int
预设值
Q
BOOL
使用LD=1置位输出CV的目标值
CV
整数、Char、
WChar、Date
当前计数值
从指令框的“<???>”下拉列表中选择该指令的数据类型。
调用计数器指令时,需要生成保存计数器数据的背景数据块。CTD计数器的参数CD值从0变为1,CTD使计数值减1。如果参数CV(当前计数值)的值小于或等于0,如果参数LOAD的值从0变为1,则参数PV(预设值)的值作为新的CV(当前计数值)装载到计数器,如图2-4-2所示。
图2-4-2 减计数器指令示例
3.加减计数器指令
CTUD:加减计数指令,当参数 CU 的值从 0 变为 1 时,CTU 计数器会使计数值加 1。当参数 CD 的值从 0 变为 1 时,CTD 计数器会使计数值减 1。减计数器(CTD)指令相关参数如下表
LAD
参数
数据类型
说明
CU
BOOL
加计数器输入
CD
BOOL
减计数器输入
R
BOOL
复位输入
LD
BOOL
装载输入
PV
INT
预设值
QU
BOOL
加计数器的状态
QD
BOOL
减计数器的状态
CV
整数、Char、
WChar、Date
当前计数器
从指令框的“<???>”下拉列表中选择该指令的数据类型。
调用计数器指令时,需要生成保存计数器数据的背景数据块。CTUD计数器的参数CU值从0变为1,使计数值加1。参数C
为什么不要频繁使用置位和复位指令编程?刚入行的时候,我Zui喜欢的就是置位与复位这两个指令,可以说没有之一。不管是气缸控制,还是灯的控制,使用置位和复位两个指令就可以轻松搞定。但是随着编程时间越长,慢慢发现了它们的一些弊端,所以我越来越不喜欢用置位与复位指令编程了。这是为什么呢?一条条讲给你听。
1. 执行效率不高。
我们以Zui典型的电机启停控制程序进行举例,置位复位方式编程如图所示:
为什么说这个程序执行效率不高,因为这个程序如果条件满足时,一个扫描周期内会对Q0.0进行二次写入操作,一次是置1操作,一次是置0操作。
2. 编程容易遗漏
置位与复位指令,通常是成对使用的,在编程的时候,如果遗漏了,则可能让程序处于一个状态。如果遗漏掉了置位指令,则会导致处于0的状态;如果遗漏掉了复位指令,则会导致处于1的状态。
3. 设备未全扫描
置位复位指令,本质上是一种条件判断。在一个扫描周期内,如果启动和停止按钮都没有按下的状态,则会跳过对Q0.0的写入操作,即不写入0,也不写入1。如果处于这种状态,可能会导致不可预知的情况发生。
4. 程序逻辑不严密
当置位操作与复位操作之间,存在多条程序时,会占用一定的扫描时间。如果这个时间存在时间足够长,可能存在一个极短的过渡阶段。当两个条件都满足时,可能在一个扫描周期内,电机先启动了,又停止了。
Zui后简单总结一下。虽然置位复位指令非常的简单,但是由于存在一些问题,所以对于逻辑控制的程序,不采用这种方法编程。那么采用什么方法实现呢?可以采用程序自锁的方式来进行逻辑控制。如图所示: